Inspiration
La inspiración para MovilizaTJ va mucho más allá de solo escribir código; nace de observar de cerca las dificultades diarias que enfrentan los adultos mayores al intentar moverse por nuestra ciudad. Acciones tan cotidianas como ir a la tienda, asistir a una cita médica o visitar a un familiar, hoy ponen en riesgo su bienestar. Si analizamos el problema real, nos damos cuenta de que el verdadero obstáculo no son las distancias, sino la hostilidad de nuestra infraestructura urbana, como lo son las banquetas fracturadas y barreras físicas. Por eso, nuestra plataforma no es solo un sistema de ruteo; es una herramienta para diseñar seguridad y confianza. Queremos que cuando un adulto mayor o sus familiares consulten la aplicación, sientan la tranquilidad de saber que el camino sugerido ha sido verificado por la comunidad. Es tecnología aplicada con empatía para devolverles el derecho fundamental a moverse por su ciudad con libertad, independencia y, sobre todo, dignidad.
What it does
La aplicación apoya a adultos mayores con un mapa que les brinda información sobre obstaculos que puedan dificultar su movilidad caminando, así como el buen uso del Crowdsourcing para que la aplicación se retroalimente con la información de los usuarios y se tenga una base de datos actualizandose diariamente. Además, la aplicación cuenta con asistente de voz lo que facilita que adultos mayores solo hablen con la aplicación sin necesidad de perderse con muchos menús o texto.
How we built it
Nuestra infraestructura es un servidor de azure se montaron contenedores docker dentro tienen la imagen de n8n en donde se tiene la lógica del backend incluyendo IAs, APIs, lógica Javascript y bases de datos. En n8n se tienen 3 funciones especificas: clasificación de imagenes, consulta de base de datos y consulta de base de datos por voz.
Construí MovilizaTJ con Next.js 15, React y TypeScript como una app de mapa centrada en MapClient, que orquesta componentes como MapView (Leaflet, GPS y rutas), el sidebar, modales de reporte/cámara y el asistente de voz, mientras hooks propios (useReports, useProximityPrompt, useAccessibilityProfile) gestionan reportes, proximidad y perfil de accesibilidad. Para hablar con el backend no escribo directo a la base de datos: centralicé las llamadas en lib/api-client.ts y uso API Routes de Next.js (/api/reports, /api/places, /api/voice-chat, etc.), donde el servidor con Supabase service role guarda reportes, sube fotos y consulta datos; en el navegador solo uso la anon key de Supabase para Realtime y que el mapa se actualice al instante cuando entra un reporte nuevo. El flujo típico es capturar ubicación/foto en el front, opcionalmente clasificar la imagen con n8n, enviar todo a /api/reports, recibir la respuesta y reflejar el marcador vía Realtime; para rutas, el front calcula barreras y desvíos con lib/geo.ts, traza la ruta peatonal con OSRM en Leaflet y muestra alertas según el modo “más segura” o “más corta”.
Challenges we ran into
Conocimiento de tecnologías muy diferentes. Sobre la marcha fuimos adaptandonos e integramos todas las tecnologías para crear la aplicación.
Accomplishments that we're proud of
Estamos orgullosos del producto final. Además, aprendimos mucho más en estas 26 horas del conocimiento de los demás y ahora contamos con una visión más amplia de como se puede generar una aplicación web.
What we learned
Aprendimos los unos de los otros. Cada uno de nosotros tiene diferente conocimiento lo que derivo en la implementación de diferentes tecnologías en un mismo proyecto donde la empatía y la comunicación fueron un factor importante para que la aplicación funcionara.
What's next for MovilizaTJ
Buscar con la institución encargada de esta problematica la oportunidad para escalar la aplicación.
Log in or sign up for Devpost to join the conversation.