Digital EForm
Digital Installation & PM Visit E-Form System
Field engineers at Florosense used paper checklists for pre-visit, installation, calibration, and preventive maintenance. Digital EForm replaces that workflow with a React single-page application backed by five Spring Boot microservices (auth, pre-visit, installation, calibration, PM). Each service owns its schema in a shared PostgreSQL database. Authentication issues a JWT (JJWT, BCrypt). Sister services share the same JwtAuthFilter and signing secret, so one session covers the platform. USER accounts create and view reports; ADMIN accounts can edit and delete.
How it is built
- Preventive maintenance is a six-step wizard. Client state is submitted once as JSON to POST /api/pm_reports. Checklist lines persist as child entities across PHYSICAL_INSPECTION, POWER_SUPPLY, SENSOR_HEALTH, COMMUNICATION, CALIBRATION_PERFORMANCE_VERIFICATION, and CLEANING_ACTIVITY.
- Pre-visit and installation accept multipart site photos after the report id exists. Images are stored as PostgreSQL bytea and returned as Base64 — no public object store.
- Report numbers are generated in-service (PM-YYYY-XXXX, FESPL_CAL_YYYYMMDD_XXXX). Calibration records before/after readings against a master instrument, with due dates defaulting to +90 days and UUID primary keys.
- The dashboard aggregates /count from each service (two-hour cache) and polls notifications every 20 seconds. Completed reports export to A4 PDF through html2canvas and jsPDF.
- Production runs on Docker Compose. Nginx is the public edge: SPA on /, APIs under /api/*, TLS at digitalform.florosense.com. A Spring Cloud Gateway module exists for local routing; production traffic does not use it.
- React 19
- Spring Boot 3.5
- Spring Security
- JWT / RBAC
- PostgreSQL
- JPA / Hibernate
- Docker Compose
- Nginx TLS
