Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bachecito - Contexto del Proyecto

Donde la Tecnologia Da Vida a las Ideas


Que es Bachecito?

Bachecito es una aplicacion movil que permite a cualquier ciudadano reportar baches en su ciudad de forma rapida, sencilla y con evidencia fotografica. Con una foto, una ubicacion automatica y un toque, el reporte queda registrado, visible para la comunidad y listo para ser atendido.

"Un bache reportado es un bache que puede ser reparado."


El Problema

En Mexico, los baches son una de las problematicas urbanas mas comunes y menos atendidas:

  • Sin canal accesible: Los ciudadanos no tienen una forma facil de reportar. Las opciones tradicionales (llamadas telefonicas, burocracia municipal) son lentas, opacas y frustrantes.
  • Sin evidencia: Los reportes verbales o por texto no tienen foto, no tienen ubicacion exacta, y se pierden en el sistema.
  • Sin seguimiento: Una vez que el ciudadano reporta, no sabe que paso. No hay retroalimentacion, no hay transparencia.
  • Riesgos reales: Los baches causan accidentes de transito, danos a vehiculos, lesiones a peatones y ciclistas, y costos economicos significativos.
  • Desigualdad de impacto: Las zonas mas afectadas suelen ser las de menor recurso, donde la infraestructura ya es precaria.

El problema no es solo el bache. El problema es que nadie hace nada al respecto.


La Solucion

Bachecito resuelve esto con una experiencia de usuario pensada para ser instantanea:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                     β”‚
β”‚   πŸ“Έ Tomar foto     β†’   πŸ“ Ubicacion automatica     β”‚
β”‚         ↓                      ↓                    β”‚
β”‚   πŸ“ Descripcion    β†’   ⚑ Seleccionar prioridad    β”‚
β”‚         ↓                      ↓                    β”‚
β”‚   πŸš€ Enviar reporte β†’   βœ… Listo en 60 segundos     β”‚
β”‚                                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Flujo Completo

Paso Que hace el usuario Que hace la app
1. Reportar Presiona el FAB central Abre la camara con encuadre guia
2. Capturar Toma la foto del bache Comprime y almacena temporalmente
3. Ubicacion Espera (automatico) Obtiene GPS + geocoding inverso
4. Detalles Agrega descripcion y prioridad Valida campos y muestra preview
5. Enviar Confirma Sube foto a Supabase Storage + inserta en DB
6. Seguimiento Consulta sus reportes Muestra timeline: Nuevo β†’ Verificado β†’ En Proceso β†’ Reparado
7. Explorar Navega la lista de reportes Filtra por estado, prioridad, o busca por texto
8. Mapa Ve el mapa interactivo Muestra todos los reportes como puntos geolocalizados

Caracteristicas Principales

πŸ“Έ Camara Inteligente

  • Encuadre visual con esquinas guia para enfocar el bache
  • Permisos manejados con fallback amigable
  • Foto comprimida al 70% de calidad para optimizar subida

πŸ“ Geolocalizacion Automatica

  • GPS de alta precision (Expo Location)
  • Geocoding inverso: convierte coordenadas a direccion legible
  • Boton de actualizar ubicacion si es necesario

🏷️ Sistema de Prioridades

  • Peligroso (rojo) - Baches grandes, en carriles principales, riesgo alto
  • Sospechoso (naranja) - Baches moderados, requieren atencion
  • Menor (amarillo) - Baches pequenos, molestia baja

πŸ“Š Timeline de Seguimiento

● Nuevo           β†’ El reporte acaba de llegar
● Verificado      β†’ Alguien confirmo que el bache existe
● En proceso      β†’ Las autoridades estan trabajando en el
● Reparado        β†’ El bache fue resuelto

πŸ” Explorar y Filtrar

  • Busqueda por descripcion o direccion
  • Filtros por estado (nuevo, verificado, en proceso, reparado)
  • Filtros por prioridad (peligroso, sospechoso, menor)
  • Tarjetas con foto, badges de estado, ubicacion y fecha

πŸ—ΊοΈ Mapa Interactivo

  • Todos los reportes visibles como puntos en un mapa
  • Datos en tiempo real desde Supabase
  • Vista panoramica de la ciudad

πŸ” Autenticacion

  • Login y registro con email/contraseΓ±a
  • Sesiones persistentes con Supabase Auth
  • Cada reporte vinculado al usuario que lo creo

πŸ‘€ Perfil de Usuario

  • Lista de reportes propios con estado
  • Avatar con iniciales del email
  • Cierre de sesion seguro

Arquitectura Tecnica

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     BACHECITO APP                         β”‚
β”‚                                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  MapaTab   β”‚  β”‚ ExplorarTabβ”‚  β”‚   AlertasTab       β”‚  β”‚
β”‚  β”‚ (MapView)  β”‚  β”‚ (FlatList) β”‚  β”‚ (Timeline View)    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚        β”‚               β”‚                   β”‚              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚              Custom Tab Bar (FAB Central)           β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                           β”‚                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚              React Navigation 7                    β”‚  β”‚
β”‚  β”‚         (Stack + Bottom Tabs)                      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                           β”‚                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                  AuthContext                        β”‚  β”‚
β”‚  β”‚           (Supabase Auth Provider)                 β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                           β”‚                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β”‚    SUPABASE     β”‚
                   β”‚                 β”‚
                   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
                   β”‚  β”‚ PostgreSQLβ”‚  β”‚
                   β”‚  β”‚ Database  β”‚  β”‚
                   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
                   β”‚  β”‚   Auth    β”‚  β”‚
                   β”‚  β”‚ (JWT)     β”‚  β”‚
                   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
                   β”‚  β”‚  Storage  β”‚  β”‚
                   β”‚  β”‚ (Fotos)   β”‚  β”‚
                   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Stack Tecnologico

Capa Tecnologia Version Funcion
Framework React Native 0.86.0 Base cross-platform
SDK Expo SDK 57 Herramientas de desarrollo
UI NativeWind 4.2.5 Estilos con Tailwind CSS
Navegacion React Navigation 7.x Stack + Bottom Tabs
Backend Supabase 2.108 DB + Auth + Storage
Mapas react-native-maps 1.27.2 Mapa interactivo
Camara Expo Camera 56.x Captura fotografica
Ubicacion Expo Location 56.x GPS + Geocoding
Iconos Ionicons via @expo/vector-icons Iconografia
Animaciones Reanimated 4.3.1 Transiciones suaves

Estructura del Proyecto

bachecito/
β”œβ”€β”€ App.js                    # Entry point
β”œβ”€β”€ app.json                  # Configuracion Expo
β”œβ”€β”€ package.json              # Dependencias
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ AppNavigator.jsx      # Navegacion principal (Stack + Tabs)
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ CustomTabBar.jsx  # Tab bar flotante con FAB
β”‚   β”‚   └── MapViewWeb.jsx    # Componente de mapa
β”‚   β”œβ”€β”€ context/
β”‚   β”‚   └── AuthContext.jsx   # Provider de autenticacion
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   └── supabase.js       # Cliente Supabase
β”‚   β”œβ”€β”€ screens/
β”‚   β”‚   β”œβ”€β”€ MapaScreen.jsx    # Vista de mapa
β”‚   β”‚   β”œβ”€β”€ ExplorarScreen.jsx# Lista y filtros de reportes
β”‚   β”‚   β”œβ”€β”€ ReportarScreen.jsx# Flujo de reporte (camara β†’ form β†’ envio)
β”‚   β”‚   β”œβ”€β”€ AlertasScreen.jsx # Timeline de reportes del usuario
β”‚   β”‚   β”œβ”€β”€ PerfilScreen.jsx  # Perfil + auth + historial
β”‚   β”‚   └── TestScreen.jsx    # Pantalla de pruebas
β”‚   └── services/
β”‚       β”œβ”€β”€ auth.js           # Funciones de login/registro/logout
β”‚       └── reports.js        # Funciones de CRUD de reportes
β”œβ”€β”€ assets/                   # Iconos y imagenes
β”œβ”€β”€ docs/                     # Documentacion
β”œβ”€β”€ global.css                # Estilos globales (Tailwind)
β”œβ”€β”€ tailwind.config.js        # Configuracion Tailwind
└── babel.config.js           # Configuracion Babel

Base de Datos (Supabase)

Tabla: reports

Campo Tipo Descripcion
id UUID Identificador unico
foto_url TEXT URL de la foto en Supabase Storage
descripcion TEXT Descripcion opcional del bache
latitud FLOAT Coordenada latitude
longitud FLOAT Coordenada longitude
direccion TEXT Direccion legible (geocoding inverso)
prioridad ENUM peligroso / sospechoso / menor
estado ENUM nuevo / verificado / en_proceso / reparado
user_id UUID FK al usuario que reporto
created_at TIMESTAMP Fecha de creacion

Storage Bucket: report-photos

  • Almacena las fotos de reportes en public/report_[timestamp]_[random].jpg
  • ContentType: image/jpeg
  • Acceso publico via URL

ODS 11 - Ciudades y Comunidades Sostenibles

Bachecito contribuye directamente al Objetivo de Desarrollo Sostenible 11 de la ONU:

Meta 11.2

"Proporcionar acceso a medios de transportes seguros, acessibles, economicos y fiables para todas las personas"

Bachecito: Los baches representan un riesgo directo para peatones, ciclistas y conductores. Reportarlos de forma rapida y visible permite priorizar su reparacion.

Meta 11.6

"Reducir el impacto ambiental negativo per capita de las ciudades"

Bachecito: La reparacion oportuna de baches reduce accidentes, danos vehiculares y costos economicos asociados al deterioro de la infraestructura vial.

Meta 11.a

"Apoyar los vinculos positivos entre zonas urbanas, suburbanas y rurales"

Bachecito: Conecta al ciudadano directamente con las autoridades a traves de un canal digital transparente y con evidencia.


Diferenciadores

Feature Bachecito WhatsApp/Redes Paginas web municipales
Geolocalizacion automatica βœ… ❌ ❌
Foto con encuadre guia βœ… ❌ ❌
Seguimiento de estado βœ… ❌ ❌
Mapa interactivo βœ… ❌ ❌
Filtros por prioridad βœ… ❌ ❌
Base de datos estructurada βœ… ❌ ⚠️
Acceso desde cualquier celular βœ… βœ… ⚠️
Sin necesidad de crear cuenta ❌ βœ… ❌

Estado Actual

Item Estado
App funcional βœ… Completada
Camara + Foto βœ… Funcional
GPS + Geocoding βœ… Funcional
Auth (Login/Registro) βœ… Funcional
CRUD de reportes βœ… Funcional
Timeline de estados βœ… Funcional
Mapa interactivo βœ… Funcional
Busqueda y filtros βœ… Funcional
UI/UX pulida βœ… Completada
Deploy en tiendas πŸ”œ Pendiente

Equipo

Integrante Rol Responsabilidades
Bruno Trujillo Ollivier Tech Lead / Full Stack Arquitectura, backend, base de datos, integraciones
Axel Ramirez Cruz Investigador / QA / Docs Testing, documentacion, investigacion de mercado
Yered Cordova Romero Frontend / UI/UX Diseno de interfaces, implementacion visual, experiencia de usuario
Ing. Emmanuel Hernandez Ortiz Asesor Academico Orientacion tecnica y academica

Universidad: IEU Universidad
Cuatrimestre: 3ro
Competencia: FEPRO 2026 - Categoria B (Retos Abiertos con Impacto Social)


Proximos Pasos

  1. Piloto en Puebla: Lanzar con un grupo de usuarios beta en una zona especifica
  2. Dashboard para municipios: Panel web para que las autoridades vean reportes y prioricen
  3. Moderacion comunitaria: Sistema de verificacion por otros usuarios
  4. Notificaciones push: Alertar al usuario cuando su reporte cambia de estado
  5. Gamificacion: Logros y puntos por reportes contribuidos
  6. Expansion: Adaptar la app a otras ciudades de Mexico

Contacto

  • Equipo: Bachecito
  • Universidad: IEU Universidad
  • Competencia: FEPRO 2026
  • Asesor: Ing. Emmanuel Hernandez Ortiz

"Porque un bache reportado es un bache que puede ser reparado.
Y una comunidad que reporta, es una comunidad que se cuida."


Documento de contexto del proyecto Bachecito - FEPRO 2026

About

Bachecito es una aplicacion movil que permite a cualquier ciudadano reportar baches en su ciudad de forma rapida, sencilla y con evidencia fotografica. Con una foto, una ubicacion automatica y un toque, el reporte queda registrado, visible para la comunidad y listo para ser atendido.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages