diff --git a/README.md b/README.md index 8750cc0..23d16a9 100644 --- a/README.md +++ b/README.md @@ -12,16 +12,15 @@ App móvil que notifica la hora aproximada de llegada del camión **sin exponer ## 🏗️ Arquitectura Frontend (React Native / Expo) -↓ JWT + HTTPS +↓ JWT + HTTPS + WebSocket API Gateway + Auth (FastAPI) ↓ RBAC por domicilio -┌─────────────────────────────┐ -│ ETA Service │ Simulator │ -│ (cálculo) │ (cron job) │ -└─────────────────────────────┘ +┌──────────────────────────────────────┐ +│ ETA Service │ Simulator │ WS │ +│ (cálculo) │ (cron job) │ Server│ +└──────────────────────────────────────┘ ↓ PostgreSQL — Usuario → Domicilio → Zona → Ruta - ## 🔒 Privacidad por Diseño - El usuario **solo ve** la ventana de llegada de su ruta asignada @@ -31,15 +30,20 @@ PostgreSQL — Usuario → Domicilio → Zona → Ruta ## 📱 Funcionalidades MVP -- [x] Registro e inicio de sesión con JWT -- [x] Alta de domicilio con validación de colonia +- [x] Registro e inicio de sesión con JWT (email o teléfono) +- [x] Múltiples domicilios por usuario (casa y trabajo) +- [x] Alta de domicilio con combobox de colonias y código postal - [x] ETA con ventana de llegada (±7 min) -- [x] Simulador de rutas (cron job cada 2 min) +- [x] Simulador de rutas — cron job cada 2 min avanza 15 rutas +- [x] WebSockets para ETA en tiempo real (fallback a polling cada 2 min) - [x] 3 eventos de notificación: ROUTE_START, TRUCK_PROXIMITY, ROUTE_COMPLETED +- [x] Notificaciones configurables por tipo +- [x] Alertas operativas — retrasos y fallas mecánicas en tiempo real - [x] Guía de separación de residuos (funciona offline) - [x] RBAC — cada usuario solo consulta su ruta -- [X] Buzón de reportes (en desarrollo) -- [x] Notificaciones push locales (expo-notifications) +- [x] Buzón de reportes con 4 categorías +- [x] Persistencia de sesión con AsyncStorage +- [x] Pull to refresh y auto-refresh - [x] APK nativo compilado con EAS Build ## 🛠️ Stack Tecnológico @@ -48,9 +52,11 @@ PostgreSQL — Usuario → Domicilio → Zona → Ruta |------|-----------| | Frontend | React Native + Expo SDK 54 | | Backend | Python 3.12 + FastAPI | +| Tiempo real | WebSockets (FastAPI) | | Auth | JWT (python-jose + passlib) | | Base de datos | PostgreSQL + SQLAlchemy | -| Simulador | APScheduler (cron job) | +| Simulador | APScheduler (cron job cada 2 min) | +| Build nativo | EAS Build (Expo) | | Control de versiones | Gitea (git.onlinces.net) | ## 🚀 Cómo correr el proyecto @@ -77,9 +83,23 @@ Disponible en `http://localhost:8000/docs` (Swagger UI) ## 📊 Datasets utilizados - `data/rutas.json` — 15 rutas con 8 posiciones GPS cada una -- `data/colonias-rutas.json` — mapeo colonia → ruta + horario estimado +- `data/colonias-rutas.json` — mapeo colonia → ruta + horario estimado - `data/notificaciones.json` — 3 eventos de notificación push +## 🔌 Endpoints principales + +| Método | Endpoint | Descripción | +|--------|----------|-------------| +| POST | `/auth/register` | Registro con email o teléfono | +| POST | `/auth/login` | Login con JWT | +| POST | `/domicilios` | Alta de domicilio | +| GET | `/domicilios` | Listar domicilios del usuario | +| GET | `/eta/{domicilio_id}` | Ventana de llegada ETA | +| POST | `/reportes` | Buzón de retroalimentación | +| POST | `/alertas/operativa` | Crear alerta de retraso/falla | +| GET | `/alertas/operativa/activa` | Consultar alerta activa | +| WS | `/ws/eta/{domicilio_id}` | ETA en tiempo real vía WebSocket | + ## 👤 Equipo -- **hack_21031301_c761d3** — HackOnLinces 2026 +- **hack_21031301_c761d3** — HackOnLinces 2026 \ No newline at end of file