Solución tecnológica de transporte compartido (Carpooling) para la comunidad universitaria de la Universidad Nacional de Moquegua.
UNAM Ride es una aplicación móvil nativa desarrollada para solucionar la problemática de transporte de los estudiantes de la Universidad Nacional de Moquegua (UNAM). Nace de la necesidad de facilitar la movilidad hacia el campus universitario, conectando en tiempo real a estudiantes que poseen vehículo (Conductores) con aquellos que necesitan transporte (Pasajeros), promoviendo la economía colaborativa, la seguridad y la puntualidad académica.
La aplicación destaca por su diseño moderno (Glassmorphism), uso de mapas OpenSource (OpenStreetMap) y una arquitectura robusta basada en la nube (Firebase).
Cumpliendo con los requisitos del curso Programación de Dispositivos Móviles, la aplicación incluye:
- 🔐 Seguridad Institucional: Registro validado exclusivamente para correos
@unam.edu.pe. - Login y Registro: Autenticación segura mediante Firebase Authentication.
- 🔄 Sistema de Roles Dual: Alterna fácilmente entre perfil de Conductor y Pasajero (Persistencia con SharedPreferences).
- Perfil de Usuario: Gestión de foto de perfil (con codificación Base64), datos académicos y cierre de sesión.
- 🗺️ Geolocalización OpenSource: Implementación de mapas interactivos sin costos de API (osmdroid).
- Selección de Ubicación: Los conductores pueden elegir el punto de partida tocando el mapa.
- Visualización de Rutas: Trazado de líneas entre origen y destino en el detalle de la reserva.
- ⚡ Publicar Ruta (Modo Conductor): Registro de viajes con origen, destino, hora, precio, asientos y coordenadas GPS con sincronización instantánea.
- Buscar Transporte (Modo Pasajero): Listado en tiempo real (
RecyclerView) con buscador por destino. - Mis Viajes (Historial Unificado):
- Conductores: Ven las rutas que han publicado.
- Pasajeros: Ven las reservas que han realizado.
- Reserva de Asientos: Sistema transaccional que vincula al pasajero con el viaje seleccionado.
- 🎨 UI/UX Avanzada: Interfaz inmersiva (Full Screen), animaciones fluidas y diseño de cristal (Glassmorphism).
- 🌙 Modo Oscuro: Optimizado para bajo consumo de batería y confort visual.
- Componentes Modernos:
RecyclerView,CardView,ConstraintLayout,BottomNavigationViewpersonalizado.
- Uso de Firebase Realtime Database para sincronización instantánea.
- Estructura optimizada con nodos para
users,active_users,viajesyreservas_usuarios.
| Login / Registro | Selector de Rol | Publicar Ruta | Mapa y Ubicación |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Buscar Viaje | Detalle y Reserva | Mis Viajes | Perfil de Usuario |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
La aplicación sigue el patrón de arquitectura MVC (Modelo-Vista-Controlador).
- Lenguaje: Java (JDK 1.8)
- IDE: Android Studio Otter 2 (2025.2.2) / Ladybug/Koala
- Configuración de Build: Gradle con Kotlin DSL (
build.gradle.kts) - Backend (BaaS): Google Firebase
- Authentication: Gestión de sesiones.
- Realtime Database: Base de datos NoSQL JSON.
- Cloud Messaging: Notificaciones Push.
- Librerías Clave:
Osmdroid: Mapas OpenSource y geolocalización (OpenStreetMap para Android).Glide: Carga y transformación de imágenes (fotos de perfil).Firebase BOM: Auth, Database y Messaging.
- Diseño: XML, Material Design, Custom Drawables (Glassmorphism).
La base de datos en Firebase se estructura en tres nodos principales para optimizar la latencia:
{
"users": {
"uid": {
"nombre": "...",
"codigo": "...",
"celular": "..."
}
},
"viajes": {
"viaje_id": {
"origen": "...",
"destino": "...",
"precio": "...",
"asientos_disponibles": 4,
"driver_id": "..."
}
},
"reservas_usuarios": {
"uid_pasajero": {
"viaje_id": true
}
}
}Para clonar y ejecutar este proyecto localmente:
-
Clonar el repositorio:
git clone https://github.com/JeffCortez23/UNAMRide.git
-
Configurar Firebase:
- Este proyecto requiere el archivo
google-services.jsonpara conectar con la base de datos. - Debes crear tu propio proyecto en Firebase Console.
- Registra el paquete:
com.elyefris.unamride. - Descarga el archivo
google-services.jsony colócalo en la carpetaapp/.
- Este proyecto requiere el archivo
-
Dependencias:
- Al abrir el proyecto, Android Studio descargará automáticamente las dependencias de
OsmdroidyGlidedefinidas en elbuild.gradle. - Deja que Gradle sincronice las dependencias.
- Al abrir el proyecto, Android Studio descargará automáticamente las dependencias de
-
Compilar y Ejecutar:
- Abre el proyecto en Android Studio.
- Conecta tu dispositivo físico o usa un emulador (Min SDK: 26).
- Ejecuta en un emulador o dispositivo físico.
El proyecto sigue el patrón MVC y se organiza en los siguientes módulos:
LoginActivity.java: Gestión de inicio de sesión con Firebase Auth.RegisterActivity.java: Registro de nuevos usuarios con validación de dominio institucional.RecuperarPasswordActivity.java: Envío de correos para restablecimiento de credenciales.RolActivity.java: Selector inicial de rol (Conductor/Pasajero) con persistencia enSharedPreferences.
PublicarViajeActivity.java: Formulario para conductores (Origen, Destino, Precio, Cupos).BuscarViajeActivity.java: Lista en tiempo real de viajes disponibles (filtro por destino).DetalleReservaActivity.java: Confirmación de viaje y decremento de asientos en la nube.MisViajesActivity.java: Historial unificado de rutas publicadas y reservas activas.
MapaActivity.java: Visualización principal del mapa con OpenStreetMap (osmdroid).SeleccionarUbicacionActivity.java: Interfaz táctil para que el conductor elija el punto de partida en el mapa.MapUtils.java: Clase utilitaria para marcadores y trazado de polilíneas.
Viaje.java: Clase POJO que representa la estructura de datos de un viaje en Firebase.ViajeAdapter.java: Adaptador para elRecyclerViewque renderiza las tarjetas de viajes.
BaseActivity.java: Clase padre que configura el modo inmersivo (Full Screen) en todas las pantallas.MainActivity.java: Controlador de flujo principal (Splash Screen y redirección de sesión).NavbarManager.java: Gestión centralizada de la barra de navegación inferior.MyFirebaseMessagingService.java: Servicio para recepción de notificaciones Push.DeveloperActivity.java: Pantalla de créditos con animaciones y efectos visuales.
Renzo Jeffrey Cortez Laura
Estudiante de Ingeniería de Sistemas e Informática - UNAM
(A.K.A. ElYefris)
Curso: Programación de Dispositivos Móviles II
Universidad: Universidad Nacional de Moquegua (UNAM)
Semestre: 2025-II
Ubicación: Ilo, Perú 🇵🇪
Disclaimer: Este es un proyecto académico con fines educativos.
Hecho con ❤️ en Ilo, Perú.







