Primera app funcional

This commit is contained in:
2026-05-22 18:27:43 -06:00
parent 43661dc2b0
commit 37e83a8226
30 changed files with 4053 additions and 291 deletions

106
README.md
View File

@@ -1,66 +1,90 @@
# AppRecoleccion
# 🗑️ Celaya Limpia — Sistema Integral de Recolección de Residuos
Es una aplicación diseñada para el monitoreo y control de los camiones de basura permitiéndole al usuario saber cuando el camión de basura se encuentre cerca de su domicilio
## H. Ayuntamiento de Celaya, Guanajuato
---
# Problemática de Aplicación Móvil
## 👥 Roles del Sistema
Sistema de Notificación Inteligente y Privada de Recolección de Residuos
### 🏠 CIUDADANO
- ETA del camión recolector en tiempo real
- **Mapa visible SOLO cuando el camión está a <15 min**
- Guía de separación de residuos (sin internet)
- Clasificador de residuos con IA (cámara)
- Reporte de incidencias
En la actualidad, la ciudadanía no cuenta con certeza sobre el momento exacto en que el camión recolector de basura pasará por su domicilio. Esto provoca un efecto dominó negativo: la basura se saca a la calle demasiado temprano, demasiado tarde o cuando la unidad ya pasó.
### 🚛 CONDUCTOR
- Vista de su ruta asignada por día
- Mapa de su ruta específica
- Alertas de GPS desactivado
- Horario semanal asignado por el admin
La falta de información oportuna genera problemas de salud pública, fauna nociva, molestias vecinales y una disposición ineficiente de los residuos. Sin embargo, la solución no es simplemente ponerle un GPS al camión y mostrarlo en un mapa público. Mostrar el recorrido completo o las rutas de otros sectores incrementa el riesgo de uso inadecuado del servicio (como personas intentando alcanzar el camión en movimiento) y expone información operativa sensible de la flotilla municipal.
### ⚙️ ADMINISTRADOR
- Mapa de TODAS las rutas simultáneamente
- Control de estado de rutas (cancelar, marcar falla, retraso)
- Gestión de reportes ciudadanos
- Asignación de rutas a conductores por día/turno
- Panel de alertas (GPS perdido, camión detenido +30min)
Adicionalmente, existe una fuerte necesidad de educación ciudadana: la gente quiere separar su basura, pero muchas veces no sabe cómo hacerlo correctamente.
---
El Reto Desarrollar el prototipo de una aplicación móvil orientada a la ciudadanía que indique una hora aproximada de llegada del camión recolector al domicilio registrado, que notifique sobre cambios operativos y que eduque sobre la separación de residuos.
## 🔑 Cuentas Demo
Todo esto bajo un principio innegociable de Privacidad por Diseño: el usuario debe obtener la información que necesita sin acceder al mapa completo de la ruta ni rastrear el vehículo en tiempo real.
| Rol | Email | Contraseña |
|-----|-------|-----------|
| Administrador | admin@celaya.gob.mx | admin123 |
| Conductor | conductor@celaya.gob.mx | conductor123 |
| Ciudadano | Crear desde la app | - |
Requisitos Funcionales (MVP)
---
Gestión de Identidad y Domicilios: Registro de usuario seguro (email o teléfono) y capacidad de dar de alta y validar uno o más domicilios (ejemplo: casa y trabajo).
## 🚀 Cómo ejecutar
Ventana de Llegada (ETA): La interfaz debe traducir los datos operativos en un mensaje claro y orientado a la acción: "El camión llegará a tu zona entre las 7:20 y 7:35 p.m." o "Llega en aproximadamente 15 minutos".
```bash
flutter pub get
flutter run
```
Alertas y Notificaciones Push: Avisos configurables cuando la ruta esté por iniciar, cuando el camión se aproxime o si hay retrasos por tráfico o fallas mecánicas.
---
Visión de "Túnel" (Ruta Exclusiva): El ciudadano solo puede ver la información de la ruta asignada a su dirección validada. Cero visibilidad de colonias vecinas.
## 🤖 IA de Clasificación de Residuos
Guía de Separación Integrada: Una sección visual, rápida y que funcione sin conexión con categorías claras (orgánicos, reciclables, sanitarios, especiales) para educar al ciudadano.
1. Convierte tu modelo: `waste_clasification.h5` `waste_model.tflite`
2. Coloca el archivo en: `assets/models/waste_model.tflite`
3. El modelo clasifica: **Orgánico (0) / Inorgánico (1)**
Buzón de Retroalimentación: Módulo básico para reportar incidencias (ejemplo: "El camión no pasó") o calificar el servicio.
Script de conversión:
```python
import tensorflow as tf
model = tf.keras.models.load_model('waste_clasification.h5')
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open('assets/models/waste_model.tflite', 'wb') as f:
f.write(tflite_model)
```
Restricciones de Diseño (Reglas del Juego)
---
PROHIBIDO el Seguidor de Ruta Activo: La app no debe mostrar un mapa con el camión moviéndose en tiempo real.
## 🗺️ Mapas
PROHIBIDO el Snooping: No se debe poder explorar las rutas de otros domicilios o usuarios.
Usa **OpenStreetMap** (gratuito, sin API Key)
Mensajería Preventiva: La interfaz debe desalentar explícitamente a los usuarios de sacar la basura fuera del horario establecido o de perseguir a la unidad.
---
Requisitos Técnicos y Arquitectura
## 🔔 Notificaciones Simuladas
Se requiere demostrar una arquitectura de software sólida, escalable y pensada para un despliegue real.
| Evento | Cuándo |
|--------|--------|
| 🚛 Ruta Iniciada | posición 12 |
| Camión Cercano | posición 4 (~15 min) |
| 🏁 Servicio Finalizado | posición 8 |
| 📡 GPS Perdido | Admin lo activa manualmente |
| Camión Detenido | Sin movimiento 30+ min |
Arquitectura de Software (Backend): Se espera la implementación de una API RESTful limpia (preferentemente en frameworks modernos como Go, Python/FastAPI, Node.js o C#/.NET) que separe la lógica de negocio de la capa de datos.
---
Simulación de Eventos (Mocking): Dado que no tendrán acceso a la telemetría real de los camiones, deberán simular el avance de la ruta en el backend mediante un trabajo programado (Cron Job), WebSockets o un script de simulación que actualice el estado y dispare las notificaciones push en tiempo real.
Frontend Móvil: Desarrollo compatible con iOS y Android. Se recomienda encarecidamente el uso de tecnologías multiplataforma (Flutter, React Native) o Aplicaciones Web Progresivas (PWA) de alto rendimiento.
Gestión del Estado: Manejo eficiente del estado en la aplicación para no saturar el servidor con peticiones (evitar peticiones continuas o polling excesivo).
Base de Datos y Modelado: Modelado relacional o NoSQL que maneje correctamente la jerarquía: Usuario -> Domicilio -> Zona de Cobertura -> Ruta. Se valora indexación geoespacial básica para validar si el domicilio ingresado entra en los polígonos permitidos.
Seguridad y Privacidad: Autenticación basada en JSON Web Tokens (JWT) o implementaciones seguras mediante OAuth. El control de acceso basado en roles (RBAC) es obligatorio: la API debe validar en cada petición que el usuario solo consulta la información del domicilio que le pertenece.
Sugerencias de Optimización: Integración y Despliegue Eficiente (Opcional)
Para robustecer la propuesta técnica con miras a un entorno de producción real, se sugiere considerar las siguientes estrategias de integración y manejo de costos:
Consumo Inteligente de APIs Geográficas: Se recomienda explorar cómo reducir costos al interactuar con mapas. Por ejemplo, utilizar servicios de geocodificación (como Google Maps o la alternativa libre OpenStreetMap/Nominatim) únicamente en el registro del domicilio, almacenando la coordenada para no repetir peticiones innecesarias. El cálculo de distancias y ETAs puede resolverse de forma interna en el backend con herramientas de análisis espacial (como extensiones PostGIS o librerías nativas del lenguaje) para evitar tarifas por llamadas constantes a APIs de pago.
Estrategia en la Nube y Control de Costos: Dado que el servicio de recolección opera en horarios específicos y tiene valles de inactividad, se sugiere el diseño sobre arquitecturas elásticas o Serverless (como AWS Lambda / Cloud Run para cómputo, o Redis para caché en memoria). Esto permitiría simular o implementar un sistema que escale a cero cuando no hay camiones en ruta, minimizando el gasto de infraestructura.
Notificaciones Asíncronas: Considerar el uso de pasarelas de mensajería eficientes (como Firebase Cloud Messaging o servicios similares de bajo costo) para enviar las alertas push, garantizando que el flujo de comunicación sea ligero y no dependa de conexiones persistentes de alto impacto para el servidor.
## 📋 Rutas disponibles
- 15 rutas con GPS real de Celaya
- Turnos: Matutino, Vespertino, Nocturno
- 40+ colonias mapeadas