3.1 KiB
3.1 KiB
Setup & Demo Path
1. Backend (Python FastAPI)
Requisitos
- Python 3.11+
- pip
Setup
cd server
python -m venv venv
source venv/Scripts/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
Configurar .env
cp .env.example .env
# Editar .env con:
SECRET_KEY=tu-secret-key-cambiar-en-produccion
SUPABASE_URL=https://qckndtzudciejpnwqfzt.supabase.co
SUPABASE_ANON_KEY=sb_publishable_FQR0WXK6joM043Qve9gz3A_pJfAH...
SUPABASE_SERVICE_KEY=sb_secret_2y3a_...
Correr
python -m uvicorn app.main:app --reload --port 8000
Servidor en: http://localhost:8000 Docs: http://localhost:8000/docs
2. Flutter (Frontend)
Requisitos
- Flutter 3.44+
- Android Studio / Xcode (para emulador)
Setup
flutter pub get
Correr
flutter run -d windows # o -d chrome, -d emulator-5554
3. Demo Path (3 pasos)
Paso 1: Register
curl -X POST http://localhost:8000/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "demo@basura.app",
"phone": "4611234567",
"password": "demo123"
}'
Respuesta:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"user_id": "uuid-aqui"
}
Guardar access_token.
Paso 2: Create Address
curl -X POST http://localhost:8000/addresses/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN_AQUI" \
-d '{
"lat": 20.5285,
"lng": -100.7980,
"alias": "Casa",
"address_text": "Celaya, Gto"
}'
Respuesta:
{
"id": 1,
"user_id": "uuid",
"alias": "Casa",
"lat": 20.5285,
"lng": -100.7980,
"route_id": "RUTA-01"
}
Guardar address_id.
Paso 3: Get ETA
curl -X GET http://localhost:8000/eta/1 \
-H "Authorization: Bearer YOUR_TOKEN_AQUI"
Respuesta:
{
"address_id": 1,
"route_id": "RUTA-01",
"status": "EN_RUTA",
"eta_minutos": 15,
"ventana": {
"inicio": "10:00 AM",
"fin": "10:15 AM"
},
"mensaje": "El camión está en camino. Llegada estimada: 10:00 AM – 10:15 AM.",
"cached": false
}
4. Flutter Test (UI)
- Login: email=
demo@basura.app, password=demo123 - Home: Debe mostrar 2 botones:
- 📚 Guía de Reciclaje
- 🚚 Rutas & ETA
- Rutas: Click en 🚚 → Ver ETA de la ruta RUTA-01
- Guía: Click en 📚 → Ver categorías de reciclaje
5. Deploy en Railway
Crear proyecto Railway
npm i -g @railway/cli
railway login
railway init
Configurar variables de entorno en Railway Dashboard
SUPABASE_URL=...
SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_KEY=...
SECRET_KEY=...
Deploy
railway up
Backend en vivo: https://your-railway-project.up.railway.app
Troubleshooting
| Problema | Solución |
|---|---|
ModuleNotFoundError: No module named 'app' |
Estar en carpeta server/ |
SUPABASE connection refused |
Verificar SUPABASE_URL y keys en .env |
JWT token invalid |
Token expiró o SECRET_KEY no coincide |
Flutter pub get error |
Eliminar pubspec.lock y correr flutter clean |