docs: add setup guide with 3-step demo path
This commit is contained in:
179
SETUP.md
Normal file
179
SETUP.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# Setup & Demo Path
|
||||
|
||||
## 1. Backend (Python FastAPI)
|
||||
|
||||
### Requisitos
|
||||
- Python 3.11+
|
||||
- pip
|
||||
|
||||
### Setup
|
||||
```bash
|
||||
cd server
|
||||
python -m venv venv
|
||||
source venv/Scripts/activate # Windows: venv\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Configurar .env
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
### Correr
|
||||
```bash
|
||||
flutter run -d windows # o -d chrome, -d emulator-5554
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Demo Path (3 pasos)
|
||||
|
||||
### Paso 1: Register
|
||||
```bash
|
||||
curl -X POST http://localhost:8000/auth/register \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"email": "demo@basura.app",
|
||||
"phone": "4611234567",
|
||||
"password": "demo123"
|
||||
}'
|
||||
```
|
||||
|
||||
**Respuesta:**
|
||||
```json
|
||||
{
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||||
"token_type": "bearer",
|
||||
"user_id": "uuid-aqui"
|
||||
}
|
||||
```
|
||||
|
||||
Guardar `access_token`.
|
||||
|
||||
---
|
||||
|
||||
### Paso 2: Create Address
|
||||
```bash
|
||||
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:**
|
||||
```json
|
||||
{
|
||||
"id": 1,
|
||||
"user_id": "uuid",
|
||||
"alias": "Casa",
|
||||
"lat": 20.5285,
|
||||
"lng": -100.7980,
|
||||
"route_id": "RUTA-01"
|
||||
}
|
||||
```
|
||||
|
||||
Guardar `address_id`.
|
||||
|
||||
---
|
||||
|
||||
### Paso 3: Get ETA
|
||||
```bash
|
||||
curl -X GET http://localhost:8000/eta/1 \
|
||||
-H "Authorization: Bearer YOUR_TOKEN_AQUI"
|
||||
```
|
||||
|
||||
**Respuesta:**
|
||||
```json
|
||||
{
|
||||
"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)
|
||||
|
||||
1. **Login**: email=`demo@basura.app`, password=`demo123`
|
||||
2. **Home**: Debe mostrar 2 botones:
|
||||
- 📚 Guía de Reciclaje
|
||||
- 🚚 Rutas & ETA
|
||||
3. **Rutas**: Click en 🚚 → Ver ETA de la ruta RUTA-01
|
||||
4. **Guía**: Click en 📚 → Ver categorías de reciclaje
|
||||
|
||||
---
|
||||
|
||||
## 5. Deploy en Railway
|
||||
|
||||
### Crear proyecto Railway
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
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` |
|
||||
|
||||
Reference in New Issue
Block a user