Una aplicación móvil para la gestión integral de tus mascotas: historial médico, recordatorios, vacunas y más.
- 📱 Diseño Material Design 3 - Interfaz moderna y accesible
- 🌓 Modo Oscuro - Soporte completo para tema claro y oscuro
- 🐾 Multi-Mascota - Gestiona varios animales desde una cuenta
- 🏥 Historial Médico Digital - Registra visitas y diagnósticos
- 📸 Digitalización de Recetas - Captura y almacena documentos
- 💉 Control de Vacunas - Calendario completo de vacunación
- ⏰ Recordatorios Inteligentes - Alertas para medicación y citas
- 🔒 Seguro y Privado - Datos protegidos con Firebase
- Framework: React Native (Expo SDK 50+)
- Lenguaje: TypeScript
- Backend: Firebase (Auth, Firestore, Storage)
- Navegación: React Navigation v6
- UI Library: React Native Paper 5.x (Material Design 3)
- Gestión de Estado: Zustand
- Validación: Zod + React Hook Form
Esta aplicación implementa Material Design 3 (MD3) de Google, proporcionando:
- Sistema de colores dinámico con 30+ tokens
- 15 escalas tipográficas completas
- Modo claro y oscuro
- Componentes accesibles (WCAG AA)
📚 Ver guía completa: MATERIAL_DESIGN_3.md
📖 Migración: MATERIAL_DESIGN_3_MIGRATION.md
src/
├── assets/ # Recursos estáticos
├── components/ # Componentes reutilizables
│ ├── ui/ # Componentes base
│ └── forms/ # Componentes de formulario
├── config/ # Configuración (Firebase, temas)
├── constants/ # Constantes y temas
├── hooks/ # Custom Hooks
├── navigation/ # Configuración de navegación
├── screens/ # Pantallas de la app
│ ├── auth/ # Login, Registro
│ ├── dashboard/ # Pantalla "Hoy"
│ ├── pets/ # Gestión de mascotas
│ ├── health/ # Historial médico
│ └── settings/ # Configuración
├── services/ # Lógica de negocio (Firebase)
├── store/ # Estado global (Zustand)
├── types/ # Tipos TypeScript
└── utils/ # Funciones auxiliares
- Node.js (v18+)
- npm o yarn
- Expo CLI
- Cuenta de Firebase
-
Clonar el repositorio:
git clone https://github.com/AlexAlvarezAlmendros/llepa-app.git cd llepa-app -
Instalar dependencias:
npm install
-
Configurar Firebase:
- Crear un proyecto en Firebase Console
- Habilitar Authentication (Email/Password)
- Crear una base de datos Firestore
- Habilitar Storage
- Copiar las credenciales del proyecto
-
Configurar variables de entorno:
cp .env.example .env
Editar
.envcon tus credenciales de Firebase:EXPO_PUBLIC_FIREBASE_API_KEY=tu_api_key EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=tu_proyecto.firebaseapp.com EXPO_PUBLIC_FIREBASE_PROJECT_ID=tu_proyecto_id EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=tu_proyecto.appspot.com EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=tu_sender_id EXPO_PUBLIC_FIREBASE_APP_ID=tu_app_id -
Ejecutar la aplicación:
npm start
npm start- Iniciar servidor de desarrollonpm run android- Ejecutar en Androidnpm run ios- Ejecutar en iOS (requiere macOS)npm run web- Ejecutar en navegador
- ✅ Estructura de proyecto completa
- ✅ Configuración de navegación (Stack + Tabs)
- ✅ Integración con Firebase
- ✅ Sistema de autenticación
- ✅ Gestión de estado global
- ✅ Tema personalizado
- ✅ Tipos TypeScript completos
users/{userId}
├── pets/{petId}
│ ├── visits/{visitId}
│ └── vaccines/{vaccineId}
└── reminders/{reminderId}
- Usuario se registra/inicia sesión
- Firebase Auth gestiona la autenticación
onAuthStateChangedactualiza el estado global- La navegación se actualiza automáticamente
- Zustand para estado global (usuario, mascota activa)
- React Hook Form para estado de formularios
- Firebase como fuente de verdad
La aplicación sigue las directrices de Material Design 3 mediante React Native Paper, con una paleta personalizada:
- Primario:
#4F46E5(Índigo) - Secundario:
#10B981(Esmeralda) - Error:
#EF4444(Rojo) - Fondo:
#F9FAFB(Gris claro)
Este proyecto está en desarrollo activo. Para contribuir:
- Fork el proyecto
- Crea una rama (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add: Amazing Feature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Alex Álvarez Almendros - @AlexAlvarezAlmendros
Nota: Este proyecto está en fase MVP. Las funcionalidades se irán implementando progresivamente según el roadmap definido.