Sistema en producción que anticipa cuándo salir en el corredor Santiago–Litoral.
Multi-cliente (iOS, Android, Web) sobre una única API, con proyección de condiciones de ruta y notificaciones activas.
El problema no es el tráfico, es decidir cuándo salir con contexto.
Las herramientas actuales reaccionan a lo que ya ocurrió; ProgramaTuViaje anticipa ese escenario combinando datos históricos, contexto (clima, feriados) y comportamiento real de usuarios.
Arquitectura del sistema
- Una única API como contrato entre clientes — evita divergencias entre iOS, Android y Web y permite evolucionar el modelo sin romper producto.
- Backend unificado con Supabase (auth, datos y tiempo real) — reduce complejidad operativa y acelera iteración sin sacrificar capacidades clave.
- Separación explícita entre ingestión y consumo — los clientes nunca dependen de APIs externas, mayor control, resiliencia y estabilidad del sistema.
- Arquitectura API-first (OpenAPI como fuente de verdad) — el contrato se define antes que los clientes, desarrollo paralelo y menor acoplamiento.
iOS — SwiftUI nativo
- Swift 6.2 + SwiftUI con Observation (@Observable) — arquitectura moderna sin Combine
- Autenticación: Email, Apple Sign In y Google vía supabase-swift
- Flujos completos: programar viaje (3 pasos), planificados, historial con feedback, perfil
- Eliminación de cuenta in-app (cumplimiento App Store)
- Layout adaptativo iPad en portrait y landscape
- Push via APNs/FCM · Sentry + PostHog · Swift Charts para visualización
- Distribuida en App Store · iOS mínimo 17.0
Android — Kotlin + Jetpack Compose
- Arquitectura moderna con Kotlin + Compose (UI declarativa + estado reactivo)
- Uso de Coroutines/Flow para manejo de estado y asincronía sin complejidad adicional.
- Autenticación integrada (Google + email) — implementada con Credential Manager y Supabase, alineada con flujos nativos de Android.
- Flujos de producto completos: planificación de viajes con filtros, historial, perfil de usuario (vehículo y emergencias) y onboarding inicial.
- Navigation Compose para estructurar flujos complejos sin acoplamiento.
- Observabilidad y analítica integrada: Sentry para errores y PostHog para análisis de comportamiento en producción.
- App en producción (Google Play) — distribuida con minSdk 26, lista para uso real.
Web — React + TypeScript
- Aplicación web con React + TypeScript y arquitectura ligera (Vite + Tailwind)
- Autenticación integrada (Google + email) con Supabase Auth
- Flujos de producto completos: planificación de viajes, gestión de planificados, historial con feedback y perfil
- Visualización de datos de viaje (Recharts) para entender patrones y comportamiento
- Observabilidad y analítica: Sentry + PostHog
- Despliegue continuo en Vercel (producción + entorno preview)
API central — FastAPI
- Backend único como capa de negocio para todos los clientes (Web, iOS, Android)
- Arquitectura API-first (OpenAPI como contrato) → evolución sin romper clientes
- Autenticación unificada vía JWT (Supabase) en todos los endpoints
- Integración con TomTom (tráfico) y fuentes de clima, desacopladas del consumo de clientes
- Endpoints diseñados para casos reales (trips, history, traffic, weather) — no CRUD genérico
- Notificaciones push centralizadas (FCM) desde backend
- Sentry + logging estructurado para trazabilidad en producción
Funcionalidades en producción
- Planificación de viajes, gestión de planificados e historial con feedback, todo conectado a datos reales de tráfico.
Evolución del sistema
- Modelo predictivo con IA — anticipación de condiciones de tráfico basada en datos históricos, contexto y comportamiento de usuarios.
- Seguimiento de viaje — comparación entre lo planificado y lo que realmente ocurre para cerrar el ciclo de aprendizaje.
- Integración con fuentes externas — datos oficiales y señales sociales para enriquecer la predicción (tráfico, eventos, comportamiento colectivo).
- Inteligencia colectiva — patrones de viaje construidos a partir del uso real de los usuarios.
- Servicios en ruta — información contextual (paradas, servicios, puntos de interés) para generar comunidad en torno al viaje.