El origen del proyecto
Rendímetro nació de una necesidad personal: saber cuánto costaba cada viaje y por qué el gasto en combustible se descontrolaba mes a mes. La mayoría de las aplicaciones existentes exige registrar el kilometraje de forma manual o no considera factores locales clave, como los precios oficiales de combustible, que en Chile cambian cada jueves.
La solución
Diseñé Rendímetro como una aplicación nativa con React Native y Expo, con arquitectura local-first: todos los datos se guardan en el dispositivo mediante MMKV, sin cuenta ni servidor. La app registra los viajes con GPS en segundo plano y calcula el costo de cada trayecto con los precios vigentes de la CNE, con una interfaz ágil y minimalista.
Características principales
- Detección automática de viajes: combina la API de actividad física del teléfono con el GPS para iniciar y pausar el registro sin intervención del usuario.
- Costos en tiempo real: cálculo por comuna con los precios oficiales de la CNE, actualizados cada jueves a las 06:00.
- Gestión de gastos: combustible, mantención, seguros, peajes y otros conceptos, con totales por mes y categoría.
- Reportes en PDF: exportación del historial con distancia, costo y tipo de viaje para cada trayecto.
- Panel con clima: meteorología en tiempo real con Open-Meteo para planificar cada ruta.
Retos técnicos
Detección de viajes en segundo plano
El mayor desafío fue resolver el problema del huevo y la gallina de la detección: sin GPS activo la velocidad era siempre cero, así que el viaje nunca comenzaba. La solución fue separar los estados de la máquina de detección: mientras busca, corre un monitor de GPS de baja precisión que solo escribe la velocidad; cuando confirma el viaje, conmuta a alta precisión para grabar la ruta.
Permisos en Android
Android encadena permisos difíciles de obtener: ubicación en primer y segundo plano, actividad física y notificaciones. Muchos usuarios los rechazan y la app queda sin funciones. Implementé un proceso de incorporación que presenta cada permiso en el momento adecuado, explica para qué sirve y ofrece un acceso directo a los ajustes del sistema cuando alguno se deniega.
Almacenamiento local de alto rendimiento
Construí un motor documental NoSQL sobre MMKV: las colecciones se leen de forma síncrona, de modo que el panel carga al instante incluso con miles de registros y la app funciona sin conexión. Los datos se exportan e importan como JSON mediante un respaldo local.
Próximos pasos
La hoja de ruta incluye la publicación en Google Play, la sincronización opcional en la nube para respaldar los datos entre dispositivos y las notificaciones push al guardar un viaje de forma automática.