Risk Evaluation Platform

Full-Stack DeveloperDesarrollador Full-Stack2025
Next.jsNestJSMySQLBullMQLeaflet

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.

Domain model
Client
└── Plant
└── Line / machine
└── Sub-machine
└── Risk sectionsISO-linked hazards, tasks, control measures
├── Hazards and tasks
├── Control measures
├── Evaluationweighted scores and 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.

Evaluator workflow
EvaluatorNext.js appNestJS APIReport workerDashboard/mapcreate assessmentload plant,machine, sectionscomplete enforcedsectionssubmit scores andcontrolsqueue PDFgenerationstore reportartifactpublish risk score update

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
The platform replaced paper-and-spreadsheet processes with something auditable and consistent. Every evaluation follows the same structure, reports generate automatically, and there's a clear record tied to specific equipment and dates.

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.

Modelo de dominio
Cliente
└── Planta
└── Linea / maquina
└── Sub-maquina
└── Secciones de riesgopeligros, tareas y controles vinculados a ISO
├── Peligros y tareas
├── Medidas de control
├── Evaluacionpuntajes ponderados y recomendaciones
└── 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.

Flujo del evaluador
EvaluadorApp Next.jsAPI NestJSWorker dereportesDashboard/mapacrea evaluacioncarga planta,maquina, seccionescompleta seccionesobligatoriasenvia puntajes ycontrolesencola PDFguarda artefactopublica score de riesgo

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
La plataforma reemplazo procesos de papel y hojas de calculo con algo auditable y consistente. Cada evaluacion sigue la misma estructura, los reportes se generan automaticamente, y hay un registro claro ligado a equipos y fechas especificos.