Resumen
¿Qué es S.A.V.I.A.? Es la columna vertebral operativa de la organización. A nivel de usuario, es una plataforma donde los líderes de cada centro territorial registran actividades, suben evidencia fotográfica y gestionan el ciclo de vida de sus voluntarios.
Antes de S.A.V.I.A., cada sede operaba en silos, utilizando hojas de cálculo o papel que se unificaban manualmente a fin de año. Esto generaba una pérdida masiva de información y un "punto ciego" directivo: era imposible conocer el número real de voluntarios activos, medir la duración o evaluar el impacto de las campañas internas.
Inteligencia Operativa y Trazabilidad
A continuación, la interfaz de S.A.V.I.A., mostrando el panel de métricas demográficas, el registro de actividades y la galería centralizada que hoy alberga cientos de evidencias fotográficas:
Arquitectura de Procesamiento
¿Por qué esta arquitectura? (Soberanía Técnica y Presupuestal)
El diseño de S.A.V.I.A. requería un equilibrio crítico entre desarrollo ágil y viabilidad financiera para una Asociación Civil:
- Despliegue Híbrido Unificado: Actualmente, el frontend y backend conviven en Heroku para minimizar costos. Express sirve el bundle de React para la navegación de UI, pero actúa como una API REST pura cuando la ruta comienza con
/api/. Esto sienta las bases para un futuro desacoplamiento total hacia arquitecturas serverless en GCP. - Base de Datos Orientada a Documentos (MongoDB Atlas): La elección de NoSQL fue una decisión de UX, no solo técnica. Forzar una base de datos relacional estricta entre actividades y voluntarios habría generado fricción en la captura de datos. Se estructuró una colección flexible para voluntarios (permanentes y de servicio social) permitiendo analítica rápida sin uniones (JOINs) pesadas.
- Almacenamiento de Evidencia (AWS S3): Se integró un bucket de S3 para manejar el peso de los medios. Hoy, el sistema indexa y expone más de 770 fotos de actividades del último año, creando un repositorio vital para los equipos de marketing y web.
Seguridad y Control de Acceso (RBAC)
El sistema maneja información demográfica y estratégica. Para proteger los datos sin bloquear la colaboración, diseñé un control de acceso basado en roles mediante JSON Web Tokens (JWT).
Los usuarios nacionales tienen acceso panorámico, mientras que los líderes locales solo pueden mutar y consultar la información de su respectivo centro, aunque la galería de actividades permanece pública para fomentar el aprendizaje cruzado.
// Middleware de Autorización Njörd: Protección de rutas según el Rol del JWT
const verificarRolNacional = (req, res, next) => {
try {
const token = req.headers.authorization.split(" ")[1];
const decodedPayload = jwt.verify(token, process.env.JWT_SECRET);
// Verificación de jerarquía
if (decodedPayload.rol !== 'nacional') {
return res.status(403).json({
error: "Acceso denegado. Se requieren privilegios de nivel Nacional para visualizar esta métrica."
});
}
req.usuario = decodedPayload; // Inyectar datos del usuario para el controlador
next();
} catch (error) {
res.status(401).json({ error: "Token inválido o expirado." });
}
};El Resultado
S.A.V.I.A. le ahorra a la organización aproximadamente 50 horas operativas cada bimestre y más de 100 horas de fricción en la generación del reporte anual.
Hoy, los líderes territoriales ajustan sus estrategias de crecimiento basándose en datos precisos de altas y bajas. A nivel nacional, la directiva evalúa fenómenos cronológicos y rendimiento demográfico en tiempo real.
Siguientes Pasos
- Migración Cloud Native: Transición de la arquitectura unificada en Heroku hacia un entorno totalmente desacoplado en Google Cloud Platform.
