This platform was built for NAKA Electronica, a company in Chile that runs operational risk assessments on industrial machinery. Before the platform, evaluations were done with paper forms and spreadsheets -- inconsistent, easy to skip steps, and slow to produce the formatted reports clients expected.
The system
Two main parts: a Next.js frontend handling evaluation workflows and visualization, and a NestJS backend with MySQL managing the domain model.
Client
└── Plant
└── Machine
└── Hazard Zone
├── Danger definitions
├── Risk sections (ISO-linked)
├── Control measures
└── Evaluation
├── Weighted scores per category
├── Intervention recommendations
└── Generated PDF report
Evaluation workflow
An evaluator selects a plant and its machines, then works through assessment sections defined by risk categories and ISO standards. Each section has weighted scoring. The platform enforces completion order -- you can't skip sections or submit partial evaluations.
When an assessment finishes, the system generates a PDF report with risk scores, identified hazards, recommended control measures, and compliance status.
Risk map
The frontend includes a geographic risk map built with Leaflet. Plant locations display color-coded risk indicators, giving NAKA's team a spatial view of where their highest-risk clients are. Dashboards built with Recharts track how risk scores evolve across evaluations over time.
Technical details
- Frontend: Next.js with TanStack Query, Leaflet + react-leaflet, Recharts, Headless UI, Tailwind. An earlier iteration was built with Vite, React, and MUI.
- Backend: NestJS 11, TypeORM, MySQL, BullMQ for background jobs, JWT/Passport auth, Swagger docs
- Reports: PDFKit for automated report generation, Archiver for batch exports, AWS S3 for storage
- Background processing: BullMQ handles heavier operations like report generation and batch evaluations
Esta plataforma fue construida para NAKA Electronica, una empresa en Chile que realiza evaluaciones de riesgo operacional en maquinaria industrial. Antes de la plataforma, las evaluaciones se hacian con formularios en papel y hojas de calculo -- inconsistentes, faciles de saltarse pasos, y lentas para producir los reportes formateados que los clientes esperaban.
El sistema
Dos partes principales: un frontend en Next.js manejando flujos de evaluacion y visualizacion, y un backend NestJS con MySQL gestionando el modelo de dominio.
Cliente
└── Planta
└── Maquina
└── Zona de Peligro
├── Definiciones de peligro
├── Secciones de riesgo (vinculadas a ISO)
├── Medidas de control
└── Evaluacion
├── Puntajes ponderados por categoria
├── Recomendaciones de intervencion
└── Reporte PDF generado
Flujo de evaluacion
Un evaluador selecciona una planta y sus maquinas, luego trabaja a traves de secciones de evaluacion definidas por categorias de riesgo y estandares ISO. Cada seccion tiene puntuacion ponderada. La plataforma fuerza el orden de completado -- no puedes saltarte secciones ni enviar evaluaciones parciales.
Cuando una evaluacion termina, el sistema genera un reporte PDF con puntajes de riesgo, peligros identificados, medidas de control recomendadas y estado de cumplimiento.
Mapa de riesgo
El frontend incluye un mapa geografico de riesgo construido con Leaflet. Las ubicaciones de plantas muestran indicadores de riesgo codificados por color, dando al equipo de NAKA una vista espacial de donde estan sus clientes de mayor riesgo. Dashboards construidos con Recharts rastrean como los puntajes de riesgo evolucionan a traves de las evaluaciones en el tiempo.
Detalles tecnicos
- Frontend: Next.js con TanStack Query, Leaflet + react-leaflet, Recharts, Headless UI, Tailwind. Una iteracion anterior fue construida con Vite, React y MUI.
- Backend: NestJS 11, TypeORM, MySQL, BullMQ para jobs en background, JWT/Passport auth, Swagger docs
- Reportes: PDFKit para generacion automatica de reportes, Archiver para exportaciones batch, AWS S3 para almacenamiento
- Procesamiento en background: BullMQ maneja operaciones pesadas como generacion de reportes y evaluaciones batch