Primera app funcional
This commit is contained in:
106
README.md
106
README.md
@@ -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 1→2 |
|
||||
| ⚠️ 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
|
||||
|
||||
Reference in New Issue
Block a user