# Sistema de Seguimiento de Recolección de Basura Una aplicación Android nativa diseñada para optimizar y transparentar el servicio de recolección de residuos. La app permite a los ciudadanos dar seguimiento en tiempo real a los camiones recolectores basado en las rutas oficiales, gestionar múltiples direcciones, reportar incidencias y recibir alertas automatizadas. --- ## Características Principales ### Autenticación y Usuarios * **Firebase Authentication:** Registro e inicio de sesión con email y contraseña. * **Validación Estricta:** Comprobación de emails válidos, contraseñas seguras (mínimo 6 caracteres) y coincidencia de confirmación. ### Gestión de Direcciones (Múltiples) * **Soporte Multidirección:** Permite añadir y gestionar múltiples hogares o negocios por cuenta. * **Autocompletado con API Real:** Selector de colonias con autocompletado conectado directamente al catálogo oficial de Celaya. * **Vinculación de Rutas:** Cada dirección guardada activa de forma automática su respectiva ruta de recolección para monitoreo simultáneo. * **Seguridad:** Confirmación previa antes de eliminar cualquier dirección guardada. ### Seguimiento del Camión Recolector (GPS Real-Time) * **Consumo de APIs Municipales (REST):** * `rutas.json`: Posiciones GPS, velocidad y horarios vigentes de las unidades. * `colonias-rutas.json`: Mapeo lógico de colonias y sus rutas asignadas. * `notificaciones.json`: Reglas operativas para el disparo de alertas. * **Mecanismo de Polling:** Actualización automática de datos en segundo plano cada 30 segundos (configurable). * **Visualización en Canvas Custom:** Renderizado gráfico personalizado que dibuja una línea horizontal de paradas con un camión animado que progresa según el tiempo real del dispositivo y los datos del servidor. ### Notificaciones Push Locales Envío de alertas automáticas contextualizadas con la dirección afectada en tres estados críticos: 1. **¡Ruta Iniciada!** al salir la unidad del relleno sanitario. 2. **Camión Cercano** al encontrarse a menos de 15 minutos del domicilio. 3. **Servicio Finalizado** al concluir el recorrido establecido. ### Sistema de Reportes e Incidencias * **Para Usuarios:** Formulario con asunto y mensaje para reportar fallas en el servicio. ### Sección Educativa * Guía de clasificación de residuos en cuatro categorías fundamentales: Orgánico, Inorgánico reciclable, No reciclable y Peligroso. * Consejos prácticos para la correcta separación de basura y reducción de la huella de desperdicios doméstica. --- ## Interfaz y Experiencia de Usuario (UI/UX) * **Material Design 3:** Línea gráfica moderna utilizando una paleta de colores verde ecológica acorde a la temática de reciclaje. * **Menú Lateral Dinámico (Drawer):** Navegación adaptativa según el rol de la cuenta: * *Menú Usuario:* Agregar dirección, Info de desperdicios, Reportar problema. * **Soporte de Tema:** Compatibilidad total con el Modo Claro y Modo Oscuro nativo del sistema operativo. * **Identidad:** Header del Drawer personalizado con el nombre y correo electrónico del usuario activo. --- ## Arquitectura y Tecnologías Utilizadas La aplicación está construida siguiendo las mejores prácticas de desarrollo moderno en Android: * **Lenguaje:** [Kotlin](https://kotlinlang.org/) * **Estructura:** Single Activity + Fragments coordinados mediante *Drawer Navigation Component*. * **Asincronía y Concurrencia:** *Kotlin Coroutines* para operaciones de red no bloqueantes de la UI. * **Conexión a Red:** *Retrofit 2* acoplado con *Gson Converter* para el consumo y parseo de las APIs JSON. * **Base de Datos & Backend:** *Firebase Suite* (Auth & Cloud Firestore). * **UI Binding:** *View Binding* para un acceso seguro y optimizado a las vistas eliminando el uso de `findViewById`. * **Gráficos:** *Canvas nativo* para componentes visuales hechos a la medida (Línea de tiempo del camión). * **Seguridad:** *Reglas de Seguridad de Firestore* para garantizar la privacidad de datos entre usuarios. * **Compatibilidad:** SDK Mínimo: API 24 (Android 7.0 Nougat) en adelante. --- ## Instalación y Configuración Local Para compilar este proyecto necesitarás **Android Studio (Ladybug 2024.2.1 o superior)**. 1. **Clona este repositorio:** 2. **Abrir Android Studio** 3. **Abrir la carpeta del proyecto** 4. **Conectar tu dispositivo android (Mediante opciones de desarrollador y depuracion USB) o descargar un emulador** 5. **Ejecutar (con boton de play en la parte superior)** 6. **Esperar a que se importe lo que requiera**