Una aplicación móvil MVP para ayudar a usuarios a aprobar el examen teórico del permiso B del carnet de conducir en España.
- Onboarding personalizado: 17 pantallas de onboarding que recopilan información del usuario
- Autenticación: Sign in con Google y Apple usando Supabase
- Paywall con prueba gratuita: 7 días de prueba gratuita con 3 planes de suscripción
- Diseño minimalista: Inspirado en Duolingo con paleta de colores azul
- Arquitectura escalable: Código limpio y estructura modular lista para crecer
- Node.js (v16 o superior)
- npm o yarn
- Expo CLI
- Cuenta de Supabase
- Cuenta de RevenueCat
- Xcode (para iOS) o Android Studio (para Android)
-
Clonar el repositorio
cd app -
Instalar dependencias
npm install
-
Configurar variables de entorno
cp .env.example .env
Edita
.envy añade tus credenciales:- Supabase URL y Anon Key
- RevenueCat API Key (una sola clave para iOS y Android)
-
Iniciar el servidor de desarrollo
npx expo start
- Crea un proyecto en Supabase
- Copia la URL y Anon Key al archivo
.env - Configura Google OAuth en Supabase:
- Authentication → Providers → Google
- Añade las credenciales de Google Cloud Console
- Configura Apple OAuth en Supabase:
- Authentication → Providers → Apple
- Añade las credenciales de Apple Developer
- Crea la tabla
user_profiles(opcional):create table user_profiles ( id uuid primary key default uuid_generate_v4(), user_id uuid references auth.users not null, study_level text, daily_goal text, notifications_enabled boolean, age integer, created_at timestamp with time zone default now(), updated_at timestamp with time zone default now() );
- Crea un proyecto en RevenueCat
- Copia la API Key al archivo
.env- Importante: RevenueCat usa una sola API Key para iOS y Android
- Las claves que empiezan con
test_son para sandbox/pruebas - Para producción, obtendrás una clave diferente
- Configura los productos en App Store Connect y Google Play Console
- Crea los productos en RevenueCat:
- Weekly:
teorico_weekly(€3.99) - Monthly:
teorico_monthly(€9.99) - 3 Months:
teorico_three_months(€24.99)
- Weekly:
- Configura el entitlement "teorico premium" en RevenueCat
- Actualiza los identificadores en
src/services/revenueCat.tssi es necesario
- Crea un proyecto en Google Cloud Console
- Habilita Google Sign-In API
- Crea credenciales OAuth 2.0
- Añade las credenciales en Supabase y en
app.json
- Configura Sign in with Apple en Apple Developer
- Añade el capability en tu App ID
- Configura las credenciales en Supabase
- Actualiza el bundle ID en
app.json
app/
├── src/
│ ├── components/ # Componentes reutilizables
│ ├── config/ # Configuración (tema, datos de onboarding)
│ ├── hooks/ # Custom hooks
│ ├── navigation/ # Configuración de navegación
│ ├── screens/ # Pantallas de la app
│ │ └── onboarding/ # Pantallas de onboarding
│ ├── services/ # Integraciones (Supabase, RevenueCat)
│ ├── store/ # Estado global (Zustand)
│ └── types/ # TypeScript types
├── assets/ # Imágenes y recursos
├── App.tsx # Punto de entrada
└── app.json # Configuración de Expo
Edita src/config/theme.ts para cambiar la paleta de colores:
colors: {
primary: '#1CB0F6', // Color principal
primaryDark: '#1899D6', // Color principal oscuro
// ... más colores
}Edita src/config/onboardingData.ts para modificar las pantallas de onboarding:
export const onboardingScreens: OnboardingScreen[] = [
{
id: 'welcome',
type: 'feature',
title: '¡Bienvenido a Teorico!',
description: 'Tu compañero perfecto...',
},
// ... más pantallas
];Edita src/config/constants.ts:
export const SUBSCRIPTION_PRICES = {
weekly: { price: 3.99, currency: '€', period: 'semana' },
monthly: { price: 9.99, currency: '€', period: 'mes' },
threeMonths: { price: 24.99, currency: '€', period: '3 meses' },
};- Welcome Screen → Usuario ve "Empezar" o "Ya tengo una cuenta"
- Onboarding Flow → 17 pantallas (features + preguntas)
- Sign Up → Google/Apple authentication
- Paywall → Selección de plan con 7 días gratis
- Home Screen → "Hello World" (placeholder para features principales)
npx expo run:iosPara compilar para App Store:
eas build --platform iosnpx expo run:androidPara compilar para Google Play:
eas build --platform android- Onboarding: Estado efímero (no se persiste). Si el usuario cierra la app, vuelve a empezar.
- Autenticación: Persistida por Supabase
- Suscripción: Gestionada por RevenueCat
- Configurar Supabase con tus credenciales
- Configurar RevenueCat con tus productos
- Reemplazar el placeholder del mascota con tu diseño
- Actualizar iconos y splash screen
- Implementar la funcionalidad principal de tests (Home Screen)
- Añadir más pantallas de onboarding si es necesario
- Configurar analytics
- Probar el flujo completo en dispositivos reales
Asegúrate de que .env tiene las credenciales correctas y reinicia el metro bundler:
npx expo start --clear- Verifica que las API keys están en
.env - Asegúrate de que los productos están creados en RevenueCat
- Revisa que los identificadores coinciden con tu configuración
- Verifica que OAuth está configurado en Supabase
- Comprueba que los redirect URIs son correctos
- En iOS, asegúrate de que el bundle ID coincide
- En Android, añade el SHA-1 fingerprint
Este proyecto es privado y confidencial.
Para preguntas o problemas, contacta al equipo de desarrollo.
Nota: Este es un MVP. El código incluye comentarios TODO para las áreas que necesitan configuración adicional.