Aplicación mobile construida con Expo Router.
npm installLa forma más fácil es levantar todo desde el monorepo emprendeX-web:
cd C:\Proyectos\emprendeX-web
pnpm dev # Stack local completo
pnpm dev:railway # Contra API de RailwayEl script del monorepo copia automáticamente el .env correcto y arranca Expo. Si prefieres arrancar manualmente:
npm run startLa app resuelve la API desde variables EXPO_PUBLIC_* en lib/api-config.ts.
Prioridad de resolución:
EXPO_PUBLIC_API_BASE_URL— URL completa (atajo, omite toda resolución)EXPO_PUBLIC_API_TARGET=railway— usaEXPO_PUBLIC_API_RAILWAY_BASE_URLEXPO_PUBLIC_API_TARGET=local— construye desdeHOST+PORT+SCHEME+PATHEXPO_PUBLIC_API_TARGET=auto— prueba local primero, luego railway
Usa el backend local levantado desde el monorepo con pnpm dev.
Archivo C:\Proyectos\emprendeX-mobile\.env.local:
EXPO_PUBLIC_API_TARGET=local
EXPO_PUBLIC_API_HOST=192.168.18.9
EXPO_PUBLIC_API_PORT=3000
EXPO_PUBLIC_API_SCHEME=http
EXPO_PUBLIC_API_PATH=/api/v1
EXPO_PUBLIC_DEFAULT_CURRENCY_SYMBOL=S/
EXPO_PUBLIC_PASSWORD_MIN_LENGTH=8La IP
192.168.18.9es un ejemplo. CambiaEXPO_PUBLIC_API_HOSTpor la IP de tu máquina si es diferente. Si usas emulador, usalocalhost(o10.0.2.2en Android).
Usa la API desplegada en Railway.
Archivo C:\Proyectos\emprendeX-mobile\.env.railway.example:
EXPO_PUBLIC_API_TARGET=railway
EXPO_PUBLIC_API_RAILWAY_BASE_URL=https://api-production-xxxx.up.railway.app/api/v1
EXPO_PUBLIC_DEFAULT_CURRENCY_SYMBOL=S/
EXPO_PUBLIC_PASSWORD_MIN_LENGTH=8Edita la URL con la de tu servicio Railway, luego ejecuta desde el monorepo:
pnpm dev:railwayEsto copia automáticamente .env.railway.example → .env.local y arranca Expo.
También puedes usar una URL explícita completa:
EXPO_PUBLIC_API_BASE_URL=https://api-production-xxxx.up.railway.app/api/v1
EXPO_PUBLIC_DEFAULT_CURRENCY_SYMBOL=S/
EXPO_PUBLIC_PASSWORD_MIN_LENGTH=8Archivos incluidos en el repo:
| Archivo | Propósito |
|---|---|
.env.example |
Plantilla para desarrollo local (con TARGET=local) |
.env.railway.example |
Plantilla para apuntar a Railway (con TARGET=railway) |
Archivos no versionados (gitignored):
| Archivo | Cómo se genera |
|---|---|
.env.local |
pnpm dev:local lo copia desde .env.example |
.env |
No usar |
.env*.local |
Ignorados por git |
pnpm dev (= dev:local)
→ Copia .env.example → .env.local
→ TARGET=local, HOST=192.168.x.x
pnpm dev:railway
→ Copia .env.railway.example → .env.local
→ TARGET=railway, URL de Railway
Al alternar entre modos, el .env.local se actualiza automáticamente. No necesitas editar archivos manualmente cada vez.
npm run startTambién puedes usar:
- La vision global vive en
docs/. - El
READMEdebe responder como correr, como esta organizado y donde leer mas. - El codigo compartido y exportado debe usar
JSDoccuando su contrato no sea obvio. - Los comentarios inline deben reservarse para decisiones o flujos no evidentes.
- Al agregar una funcionalidad nueva, se debe actualizar al menos un documento externo si cambia arquitectura, flujo o dominio.
Si la app no conecta con el backend:
- Confirma que la API responde en
/api/v1/health - Revisa que
EXPO_PUBLIC_API_TARGETsea el esperado - Revisa que
EXPO_PUBLIC_API_HOSTapunte a una IP accesible desde el dispositivo - Reinicia Expo después de cambiar variables de entorno
- Si usas
pnpm dev:localy tu IP cambió, edita.env.examplecon la nueva IP