Hakuna MaMoto
Alquiler de motos · app móvil
App móvil de alquiler de motos: catálogo, favoritos, reservas por fechas y gestión de clientes por rol, sobre Supabase.
El proyecto
Hakuna MaMoto es una app de alquiler de motos. El cliente explora el catálogo, guarda sus favoritas y reserva por fechas; el personal gestiona clientes, modelos y el estado de cada reserva.
La desarrollé en solitario con React Native, Expo Router y TypeScript. Empezó con datos simulados y creció rama a rama: inicio de sesión, CRUD, estado global, backend y almacenamiento, hasta funcionar sobre Supabase.
Lo que construí
Autenticación y roles
Registro e inicio de sesión con Supabase Auth, sesión persistente y tres roles (administrador, mecánico y cliente) que cambian la navegación: la pestaña de clientes solo existe para el personal.
Catálogo y reservas
Modelos con precio por día e imagen, favoritos guardados por usuario y reservas con cálculo de días, código propio y cambio de estado.
Gestión
CRUD de clientes y de modelos con baja lógica, subida de fotos desde la galería, edición de perfil con avatar y tema claro u oscuro persistente.
- commits
- 25
- ramas de funcionalidad
- 5
- roles de usuario
- 3
- líneas de TypeScript
- 8,4 k
Decisiones técnicas
Cada capa, una responsabilidad
Pantallas finas, lógica en un hook por pantalla, acceso a datos en servicios y un estado global mínimo en Zustand. Cada servicio traduce las filas de la base de datos al modelo que usa la app.
Caché con claves de consulta
TanStack Query gestiona los datos remotos con una factoría de claves por recurso y un minuto de frescura: volver a una pantalla no repite la petición.
Imágenes sin servidor propio
La foto se lee en base64, se convierte a
ArrayBuffery se sube a un bucket de Supabase Storage. En la base de datos solo se guarda la ruta, que se resuelve a URL pública al leer.Actualizaciones sin pasar por la tienda
Canales de EAS para desarrollo, preview y producción, con la
runtimeVersionligada a la versión de la app, para publicar cambios de JavaScript por OTA.
Evolución
Dic 2025
Proyecto base y pantalla de inicio de sesión.
Ene 2026
CRUD de clientes, tema, perfil, autenticación y paso a Supabase.
Feb 2026
Subida de imágenes, favoritos, pantalla de inicio y limpieza final.
Stack
App
- React Native
- Expo Router
- TypeScript
- Zustand
- TanStack Query
Backend como servicio
- Supabase Auth
- Supabase Postgres
- Supabase Storage
Distribución
- EAS Build
- EAS Update