f59d8e9dc17e1260f711a49e9ea16d6efafc3fbd
🚛 BasuraApp — HackOnLinces 2026
Sistema de notificación inteligente y privada de recolección de residuos para la ciudadanía de Celaya, Guanajuato.
🎯 Problemática
Los ciudadanos no saben con certeza cuándo pasará el camión recolector, lo que genera basura en la calle fuera de horario, problemas de salud pública y fauna nociva.
✅ Solución
App móvil que notifica la hora aproximada de llegada del camión sin exponer la ruta completa, bajo un principio de Privacidad por Diseño.
🏗️ Arquitectura
Frontend (React Native / Expo) ↓ JWT + HTTPS API Gateway + Auth (FastAPI) ↓ RBAC por domicilio ┌─────────────────────────────┐ │ ETA Service │ Simulator │ │ (cálculo) │ (cron job) │ └─────────────────────────────┘ ↓ PostgreSQL — Usuario → Domicilio → Zona → Ruta
🔒 Privacidad por Diseño
- El usuario solo ve la ventana de llegada de su ruta asignada
- La API valida en cada request que el
usuariosolo accede a sudomicilio - Prohibido: mapa en tiempo real, rastreo del camión, explorar rutas ajenas
- Mensajería preventiva: la app desalienta sacar basura fuera de horario
📱 Funcionalidades MVP
- Registro e inicio de sesión con JWT
- Alta de domicilio con validación de colonia
- ETA con ventana de llegada (±7 min)
- Simulador de rutas (cron job cada 2 min)
- 3 eventos de notificación: ROUTE_START, TRUCK_PROXIMITY, ROUTE_COMPLETED
- Guía de separación de residuos (funciona offline)
- RBAC — cada usuario solo consulta su ruta
- Buzón de reportes (en desarrollo)
- Notificaciones push FCM (en desarrollo)
🛠️ Stack Tecnológico
| Capa | Tecnología |
|---|---|
| Frontend | React Native + Expo SDK 54 |
| Backend | Python 3.12 + FastAPI |
| Auth | JWT (python-jose + passlib) |
| Base de datos | PostgreSQL + SQLAlchemy |
| Simulador | APScheduler (cron job) |
| Control de versiones | Gitea (git.onlinces.net) |
🚀 Cómo correr el proyecto
Backend
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --port 8000 --host 0.0.0.0
Frontend
cd frontend
npm install
npx expo start
Documentación de la API
Disponible en http://localhost:8000/docs (Swagger UI)
📊 Datasets utilizados
data/rutas.json— 15 rutas con 8 posiciones GPS cada unadata/colonias-rutas.json— mapeo colonia → ruta + horario estimadodata/notificaciones.json— 3 eventos de notificación push
👤 Equipo
- hack_21031301_c761d3 — HackOnLinces 2026
Description
Languages
Python
97.9%
C++
1.2%
C
0.5%
JavaScript
0.1%