El núcleo antiguo de Xàtiva tiene un problema de tráfico: vehículos no autorizados circulan por zonas residenciales restringidas, afectando a la calidad de vida de los vecinos y al patrimonio histórico. El Ajuntament necesitaba un sistema moderno para gestionar y controlar el acceso.
Sistema completo de tres componentes: un backend Spring Boot con JWT, rate limiting y auditoría asíncrona; un panel web React para que los administradores gestionen vehículos, usuarios, solicitudes y derechos de acceso; y una app Android en Kotlin/Jetpack Compose para que los agentes consulten matrículas en tiempo real desde el móvil.
El sistema contempla dos tipos de acceso: permanente (residentes y autorizados) y puntual (invitados con límite mensual). El simulador de acceso permite probar el sistema con una probabilidad 60/40 sin necesidad de cámaras reales.
APR Xàtiva fue el proyecto más complejo que había abordado hasta ese momento — tres componentes independientes que tienen que funcionar juntos, con un cliente real (el Ajuntament) y una fecha de entrega fija.
Implementar el sistema de refresh tokens con Spring Boot y gestionar los 401 paralelos en el frontend con una cola de espera fue uno de los retos más interesantes del proyecto.
Página informativa pública con descripción del sistema, zonas APR con mapa interactivo Leaflet, guía de funcionamiento en 4 pasos, sección de descarga y preguntas frecuentes. Disponible en valenciano, castellano e inglés.
Gestión de usuarios con roles ADMIN y AGENTE. Búsqueda en tiempo real, skeleton loading y paginación client-side.
CRUD completo de vehículos autorizados. Registro de matrícula, tipo de vehículo y propietario. Búsqueda en tiempo real y paginación.
Asignación de derechos de acceso permanentes y puntuales. Los accesos puntuales tienen un límite de 5 invitaciones mensuales por usuario.
Revisión y aprobación de solicitudes enviadas desde la app Android. El administrador consulta la documentación adjunta y aprueba o rechaza cada solicitud.
El documento adjunto es un justificante de que el usuario reside, trabaja o tiene relación con el núcleo antiguo. En la demo se usa un archivo de prueba; al descargarlo desde el panel, el nombre del archivo incluye el DNI del usuario que lo envió.
Simulador de paso vehicular con probabilidad 60/40 para testing sin cámaras reales. Muestra en tiempo real si el acceso sería permitido o denegado.
Log de todas las operaciones del sistema con paginación server-side y filtros por DNI y tipo de evento. El registro es asíncrono — no impacta en el rendimiento de las operaciones.
La app refleja en tiempo real el estado de la solicitud. Una vez el administrador la aprueba desde el panel web, el usuario ve el cambio de estado sin necesidad de recargar.
Guía de onboarding para nuevos usuarios que explica el flujo completo: registro, solicitud de acceso y uso de la app.
El usuario gestiona sus vehículos autorizados desde la app. Puede añadir matrículas y asignarles derechos de acceso a las zonas APR.
Solicitud de accesos puntuales para invitados y consulta de derechos permanentes. El acceso puntual tiene un límite de 5 invitaciones mensuales.