Files
marianesaldana 80dbd947e5 Initial commit
2026-05-23 08:59:34 -06:00

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/docs en 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 Simulator
  • a → Android Emulator
  • w → 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 Email 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.js coincida 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.