Files
hackathon-gituber-4fbb7edea…/README.md
2026-05-23 14:01:06 +00:00

5.0 KiB

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, adaptando su interfaz según el rol del usuario (Ciudadano o Trabajador).


Características Principales

Autenticación y Usuarios

  • Firebase Authentication: Registro e inicio de sesión con email y contraseña.
  • Persistencia de Sesión: El usuario permanece logueado al abrir y cerrar la app de forma continua.
  • Roles Dinámicos: Soporte para dos tipos de usuarios (Usuario común y Trabajador) con almacenamiento de perfil en Cloud Firestore.
  • 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.
  • Detalle Extendido: Diálogos emergentes con el desglose de paradas y estimaciones horarias por ruta.

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, guardados en Firestore con marca de tiempo.
  • Panel "CONTROL" (Trabajadores): Sección exclusiva para el personal donde se listan de forma cronológica (más recientes primero) los reportes enviados por ciudadanos y otros trabajadores de la organización.

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.
    • Menú Trabajador: Panel de reportes de usuarios y reportes internos de trabajadores.
  • 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
  • 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: