4.4 KiB
4.4 KiB
Guía de instalación
Paso a paso para correr Mi Ruta Limpia en macOS / Linux.
1. Requisitos previos
| Software | Versión | Verificar con |
|---|---|---|
| Node.js | 20 LTS (no 22+) | node --version |
| Python | 3.11 - 3.13 | python3 --version |
| Xcode (solo iOS) | 15+ | App Store |
| Watchman (opcional pero recomendado) | última | brew install watchman |
Instalar Node 20 si tienes versión nueva
# Con nvm (recomendado)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20
nvm use 20
# O con Homebrew
brew install node@20
brew link --overwrite node@20
2. Backend
cd backend
# Crear entorno virtual
python3 -m venv venv
source venv/bin/activate
# Instalar dependencias
pip install -r requirements.txt
# Configurar variables de entorno
cp .env.example .env
# Edita .env si quieres cambiar SECRET_KEY (opcional para hackathon)
# Poblar BD con datos demo + masivos
python seed_massive.py
# Esto crea ~200 usuarios, 62 camiones, 280 reportes, etc.
Arrancar el servidor
# Con --host 0.0.0.0 para que el simulador iOS lo alcance
uvicorn main:app --reload --host 0.0.0.0 --port 8000
Verifica que esté corriendo:
- Local:
curl http://localhost:8000/health - Docs OpenAPI: abre
http://localhost:8000/docsen el navegador
3. Frontend
cd frontend
# Aumentar límite de file descriptors (macOS)
ulimit -n 65536
# Instalar dependencias
npm install
# Configurar IP del backend
# Edita: frontend/src/constants/config.js
# Cambia la línea:
# export const API_BASE_URL = 'http://10.82.68.125:8000/api/v1';
# por la IP de TU Mac (obténla con `ipconfig getifaddr en0`)
Arrancar Metro y la app
npx expo start --clear
Cuando aparezca el menú:
i→ iOS Simulatora→ Android Emulatorw→ Navegador web- Escanea el QR con la app Expo Go (App Store / Play Store) si quieres usar tu celular físico
⚠️ Para celular físico, debes estar en la misma red Wi-Fi que la Mac.
4. Credenciales para probar
Después de seed_massive.py, usa cualquiera de estas:
| Rol | Contraseña | |
|---|---|---|
| 🧑 Ciudadano | demo@celaya.gob.mx |
Celaya2026 |
| 👮 Empleado | empleado@celaya.gob.mx |
Empleado2026 |
| 🛡️ Admin | admin@celaya.gob.mx |
Admin2026 |
5. Troubleshooting
"Credenciales inválidas" pero las escribí bien
- Verifica que el backend esté corriendo con
--host 0.0.0.0 - Verifica que la IP en
config.jscoincida con tu IP local actual - Reinicia Metro con
npx expo start --clear
"EMFILE: too many open files"
ulimit -n 65536
brew install watchman
"URL.protocol is not implemented"
Verifica que index.js (en la raíz de frontend/) sea:
import 'react-native-url-polyfill/auto';
import 'expo/AppEntry';
Y que package.json tenga "main": "index.js".
"main has not been registered"
Causa más común: un módulo falló al cargar silenciosamente. Reinicia con:
npx expo start --clear
"Cannot find module .../something.types"
Tu Node.js es muy nuevo (22+). Cambia a Node 20 LTS:
nvm use 20
rm -rf node_modules package-lock.json
npm install
Backend dice "passlib bcrypt error"
pip install 'bcrypt==4.0.1'
El simulador no encuentra el servidor
Confirma la IP correcta con:
ipconfig getifaddr en0
Y actualiza frontend/src/constants/config.js con esa IP.
6. Reiniciar todo desde cero
Si algo se rompe completamente:
# Frontend
cd frontend
rm -rf node_modules package-lock.json
npm install
npx expo start --clear
# Backend
cd ../backend
source venv/bin/activate
rm -f mi_ruta_limpia.db # ¡Cuidado! Borra todos los datos
python seed_massive.py
uvicorn main:app --reload --host 0.0.0.0 --port 8000
7. Cómo configurar para presentar
Pre-checklist (5 min antes del pitch):
- Backend corriendo con
--host 0.0.0.0 - Frontend corriendo con
npx expo start - iOS Simulator abierto en iPhone 17 Pro (Cmd+R recargado)
- Probar login con
demo@celaya.gob.mx→ debe entrar a la vista ciudadana - Probar login con
admin@celaya.gob.mx→ debe ver el dashboard con stats - WiFi estable
- Pantalla de Mac compartida en el proyector
Para la demo:
Sigue el script en docs/PRESENTACION.md.