Volver a la aplicación

Sistema de Incidencias Municipales

Un mapa ciudadano para reportar y dar seguimiento a los problemas del municipio: baches, fugas de agua, luminarias, basura, animales, incendios y más.

Hecha con asistencia de IA Versión preliminar Proyecto ciudadano independiente
Todavía está en construcción y puede tener errores. Esta es una versión preliminar desarrollada con asistencia de inteligencia artificial: aunque se prueba antes de cada cambio, puede haber fallos, funciones a medias o información desactualizada, así que verifica lo que veas aquí antes de tomar decisiones con ello. Y, sobre todo: esta página no es una entidad gubernamental, no pertenece a ningún ayuntamiento ni dependencia pública y no atiende ni resuelve los reportes. Los datos que generes pueden compartirse o venderse; el detalle está en los Términos y privacidad de la aplicación.

¿Qué es?

Es una plataforma informativa y ciudadana: cualquiera puede reportar un problema en su municipio, verlo en el mapa y seguir su avance, sin necesidad de cuenta ni de instalar nada. El objetivo es hacer visibles los problemas de la calle y dejar constancia pública de ellos. No sustituye a los servicios municipales ni a una denuncia formal: es la fotografía ciudadana de qué está pendiente y desde cuándo.

¿Cómo funciona?

Seis pasos, de la ubicación del problema a su resolución:

  1. Elige tu municipio Al entrar se pregunta dónde vas a reportar, con un buscador del catálogo del INEGI (también se filtra por estado). Puedes cambiarlo después desde la barra superior; el personal, en cambio, queda fijo al municipio que le asigna el servidor.
  2. Ubica el problema El punto se marca en el mapa y el sistema solo acepta los que caen dentro del contorno del municipio. Si además cae en una comunidad del INEGI, la guarda como referencia («junto a la plaza de…»), aunque la comunidad es opcional.
  3. Descríbelo y documentalo Concepto (con un ejemplo guía que puedes copiar), título, descripción, indicaciones para llegar y fotografías. La evidencia es solo de fotografías.
  4. Sigue su avance Cada reporte es una tarjeta y un marcador, coloreados por antigüedad: amarillo menos de 15 días, naranja entre 15 y 30, rojo más de 30 y verde cuando está resuelto. El estado avanza de reportada a en proceso y de ahí a resuelta.
  5. Recibe avisos Con una cuenta (correo y contraseña) te llega al buzón cada cambio de estado, comentario o resolución de tus reportes. Una sesión anónima no recibe avisos: no hay a quién dirigirlos.
  6. Se atiende y se modera El personal del municipio cambia estados, marca lo peligroso y resuelve. Cualquiera puede denunciar contenido; el personal decide si se oculta, se advierte o se suspende una cuenta.

Quién puede hacer qué

Forma de entrar Cómo Qué puede hacer
Ciudadano anónimo Sin cuenta, directo desde el navegador Reportar y ver todos los reportes del municipio. No recibe avisos.
Cuenta ciudadana Correo y contraseña, desde la aplicación Reportar con tu nombre, con un pseudónimo o como anónimo; buzón de avisos; editar y eliminar tus propios reportes y comentar los demás.
Funcionario Página interna de acceso del personal, con usuario, contraseña y clave de municipio Gestionar los reportes de su municipio: estados, resolución, marca de peligro y moderación.
Administrador Página interna de acceso del personal Todo lo del funcionario y, además, catálogos (conceptos, municipios, comunidades), cuentas del personal, panel de estadísticas e informes.

Las contraseñas se guardan cifradas y las sesiones viajan firmadas. El acceso del personal vive en /personal, una página sin enlaces desde la aplicación.

Características

Lo que trae hoy, sin adornos:

Mapa con cuatro capas

Satélite, calles y mapa físico de Esri, y relieve de OpenTopoMap, conmutables desde el propio mapa. El límite del municipio se dibuja con una máscara que oscurece todo lo de fuera, y las comunidades del INEGI se pueden mostrar encima.

Catálogo del INEGI

Michoacán, Guanajuato y Ciudad de México: 175 municipios y más de 6 300 comunidades con sus polígonos reales, usados como geocerca para validar cada reporte. Además, atajos a los municipios colindantes para saltar de uno a otro.

20 conceptos de reporte

Bache, fuga de agua, luminaria, basura, alcantarilla, incendio forestal, sitio peligroso, crueldad animal… Cada concepto trae su icono y un ejemplo guía para describirlo, y los temas delicados muestran un aviso propio.

Evidencia en fotografías

JPG, PNG, WEBP o GIF de hasta 100 MB por archivo (20 por reporte), con vista previa, reemplazo y borrado. El PDF se admite solo como documento de la resolución.

Color por antigüedad

El color no se guarda: se calcula. Amarillo menos de 15 días, naranja de 15 a 30, rojo más de 30, y verde cuando el reporte queda resuelto. De un vistazo se ve qué se está quedando viejo.

Filtros y búsqueda

Por texto, estado, concepto, color y comunidad, con orden por más recientes, más antiguas o prioridad (lo más urgente y viejo primero). Los filtros conviven con el mapa: la lista y los marcadores siempre concuerdan.

Buzón de avisos

Cada cambio de estado, comentario, resolución o alerta global llega como notificación a quien tenga cuenta, con su contador de pendientes.

Identidad a tu manera

Nombre real, un pseudónimo que sortea el servidor («Águila Nocturna») o «Anónimo» reporte por reporte. En los listados públicos nunca aparece el correo: solo un identificador opaco.

Reportes públicos del municipio

Todos ven los problemas del municipio activo, tengan cuenta o no: para eso está el mapa. Escribir es lo que queda restringido: solo el autor edita o elimina lo suyo, y el personal puede moderarlo.

Marca de «peligrosa»

El personal puede destacar un reporte que representa riesgo (con su motivo y fecha): sale con distintivo propio, fila resaltada, anillo en el mapa y aviso al autor.

Moderación

Cualquiera puede denunciar un reporte o un comentario. La cola agrupa las denuncias por contenido y el personal decide: ocultar, eliminar, advertir o suspender. Tres advertencias suspenden la cuenta; una cuenta suspendida no puede entrar.

Panel e informes

El panel reúne estadísticas, el panel de reportes, los catálogos, las comunidades, las cuentas del personal y la moderación. De ahí también salen la exportación a CSV y el informe imprimible.

Tutorial guiado

Al entrar por primera vez, una guía ilumina cada elemento y lo explica en 9 a 11 pasos según el rol, y se puede repetir cuando quieras desde la barra lateral.

Fácil de levantar

Una imagen con Docker Compose que incluye la base de datos y aplica las migraciones al arrancar, o Node.js contra un MariaDB propio. La API es REST y todo el frontend es estático: no hace falta configurar CORS ni una URL base.

Tecnologías y dependencias

Nada de magia: estas son las piezas sobre las que está construido.

Frontend

  • JavaScript moderno en módulos ES, sin bundler ni framework: el navegador carga los archivos tal cual.
  • Leaflet 1.9.4 para el mapa, los marcadores, los polígonos y las capas base.
  • Bootstrap Icons 1.11.1 para la iconografía de la interfaz.
  • Leaflet y Bootstrap Icons servidos desde este mismo sitio (carpeta /vendor/, con la versión y el sha256 de cada archivo anotados en vendor.lock.json). El navegador no depende de ninguna CDN externa para funcionar.
  • HTML y CSS propios (siete hojas: base, layout, componentes, admin, reportes de impresión y extensiones), con atributos data-action en lugar de onclick.
  • API REST consumida con fetch y token en la cabecera, con el estado de la aplicación en un store propio.

Backend

  • Node.js 20 o superior (la imagen usa node:22-alpine).
  • Express 4 con arquitectura MVC (modelos, servicios, controladores y rutas) y una capa de repositorios con dos drivers intercambiables.
  • MariaDB 11 como motor por defecto (vía mysql2 y Knex 3 para las migraciones). También puede correr con archivos JSON en disco (STORAGE_DRIVER=json).
  • jsonwebtoken para las sesiones, bcryptjs para las contraseñas, multer para la evidencia y dotenv para la configuración.

Pruebas y despliegue

  • node:test y Supertest: una suite de pruebas de API que se ejecuta completa contra los dos drivers, sin necesidad de base de datos en el caso JSON.
  • Docker y Docker Compose: un contenedor para la aplicación y otro para MariaDB, con healthcheck (/api/salud), migraciones automáticas al arrancar y volúmenes para la base y para las fotografías.
  • Sin dependencias de pago: todo el software es libre y de código abierto.

Agradecimientos

Este proyecto se apoya en el trabajo de mucha gente. Sin ellos, nada de esto existiría:

Leaflet

Toda la parte de mapas es Leaflet: una biblioteca de mapas interactivos ligera y de código abierto que hace fácil lo que parecería imposible. Gracias a su equipo y a su comunidad por mantenerla (y por el ecosistema de complementos que ha crecido a su alrededor).

OpenStreetMap y OpenTopoMap

La capa de relieve usa OpenTopoMap, construido con los datos de OpenStreetMap y del SRTM. Gracias a la comunidad de mapeo abierto por hacer un mapa del mundo que cualquiera puede usar.

Esri y sus fuentes

Las capas satelital, de calles y física son servicios de Esri (World Imagery, World Street Map y World Physical Map), con datos de Maxar, Earthstar Geographics, HERE, Garmin, FAO, USGS y NOAA. Gracias por permitir su uso en mapas como este.

Bootstrap Icons

Los iconos son de Bootstrap Icons, mantenidos por el equipo de Bootstrap y liberados bajo licencia MIT.

Los datos, las teselas del mapa y las bibliotecas pertenecen a sus autores y se usan con sus respectivas atribuciones y licencias; aquí solo se les reconoce y se enlaza a su trabajo. Los datos del INEGI son de dominio público (uso informativo), mientras que las teselas de Esri y OpenTopoMap tienen sus propias condiciones de uso.

Contacto

Detrás de este sistema está DylonTech (Dylon Gabriel Mandujano Gonzalez), ingeniero en sistemas y desarrollador web. ¿Quieres implementarlo en tu municipio, reportar un error o proponer una mejora? Escríbenos:

Cualquier gobierno, dependencia, empresa u organización que quiera usar la plataforma está invitada a colaborar para implementarla correctamente. Escríbenos y lo revisamos juntos.