← Back to projects

Institutional portal for human rights commission

Official CODHEY website: citizen portal with complaints, recommendations, and reports, plus a full content management admin panel.

📅 2022 – 2023 🏢 CODHEY – Comisión de Derechos Humanos del Estado de Yucatán
Angular 13 TypeScript Node.js MySQL

Contexto / Problema

La Comisión de Derechos Humanos del Estado de Yucatán (CODHEY) es un organismo público autónomo cuya función es recibir quejas ciudadanas por presuntas violaciones a derechos humanos cometidas por servidores públicos, investigar los casos y emitir recomendaciones a las autoridades. También imparte cursos y capacitaciones en materia de derechos humanos.

El problema era que toda esa información — recomendaciones, informes anuales, cursos, directorio — vivía dispersa en documentos internos o dependía de terceros para publicarse. Los ciudadanos no tenían un canal digital oficial donde consultar el estado de las recomendaciones emitidas, acceder a los informes anuales de la Comisión ni conocer el calendario de capacitaciones disponibles. Cada actualización del sitio requería intervención de un desarrollador externo.

La solución tenía que resolver dos cosas simultáneamente: una plataforma pública funcional para los ciudadanos y una herramienta de gestión interna que le diera autonomía al equipo de CODHEY para publicar contenido sin depender de nadie técnico.

Decisiones técnicas

Angular 13 para el frontend por la solidez de su arquitectura en proyectos institucionales que requieren mantenimiento a largo plazo. El sistema de módulos, la inyección de dependencias y el tipado fuerte con TypeScript hacen que el código sea predecible y fácil de auditar — un requisito importante cuando el cliente es una institución gubernamental.

La elección de hash routing (/#/) fue pragmática: elimina la necesidad de configuración especial en el servidor para manejar rutas del lado del cliente. Con hash routing, el servidor siempre sirve el mismo index.html independientemente de la ruta — el enrutamiento es completamente responsabilidad de Angular. Esto reduce fricciones en el despliegue y facilita el mantenimiento por parte del equipo de infraestructura de la institución.

Node.js + MySQL para la API y la base de datos. MySQL era la elección natural dado el esquema relacional del contenido — recomendaciones que pertenecen a expedientes, cursos con fechas y cupos, documentos organizados por tipo y año. La API REST expone únicamente los endpoints necesarios para el portal público y el panel de administración, sin complejidad adicional.

Panel de administración propio en lugar de un CMS genérico (WordPress, Strapi, etc.). La razón principal: el contenido institucional de CODHEY tiene una estructura muy específica — recomendaciones con número de expediente, informes anuales con categorías propias, directorio organizado por área. Un CMS genérico hubiera requerido personalización extensiva o forzar el contenido a encajar en estructuras pensadas para blogs. Un admin a medida resultó más directo: cada módulo del panel corresponde exactamente a una sección del portal público.

Implementación destacada

Panel de administración de contenido

El panel administrador permite al equipo de CODHEY gestionar de forma autónoma todo el contenido visible en el portal: publicar noticias y comunicados, registrar nuevas recomendaciones emitidas, subir informes anuales, actualizar el calendario de cursos y modificar la información del directorio institucional.

Cada sección del sitio público tiene su contraparte en el panel — lo que se gestiona en el admin aparece directamente en el portal sin pasos intermedios. Esta correspondencia directa fue una decisión de diseño deliberada: reducir la curva de aprendizaje para los administradores, que no son perfiles técnicos.

Arquitectura desacoplada

El frontend Angular consume la API de Node.js mediante servicios con HttpClient. Esta separación permite que el portal público y el panel de administración evolucionen de forma independiente. Si en el futuro CODHEY necesita una app móvil o un módulo adicional, la API ya está disponible como capa de datos sin modificar el frontend existente.

Resultado / Impacto

El sitio entró en producción en 2023 y sigue activo en codhey.org. El equipo de la Comisión puede publicar recomendaciones, actualizar el calendario de cursos y gestionar los informes sin depender del desarrollador — resolviendo el problema original de autonomía de contenido. Los ciudadanos del estado de Yucatán tienen un canal digital oficial para consultar la actividad del organismo y acceder a información sobre sus derechos.

Aprendizajes

Trabajar con una institución gubernamental implica requisitos distintos a los de un cliente del sector privado. Los tiempos de validación son más largos, los flujos de aprobación involucran a más personas, y la estabilidad a largo plazo tiene más peso que la velocidad de entrega. Angular 13 fue la elección correcta para ese contexto: un framework con convenciones claras y estructura rígida es más fácil de retomar después de meses sin tocarlo que un proyecto con más libertad arquitectónica.

El aprendizaje técnico más concreto fue entender que un panel de administración a medida, aunque requiere más trabajo inicial, resulta en una herramienta más usable para el cliente no técnico que adaptar un CMS genérico a necesidades específicas.