| # ✨ API Auto-Detection System |
|
|
| ## Cómo Funciona |
|
|
| El frontend detecta automáticamente dónde está alojado y conecta al backend correcto: |
|
|
| ``` |
| ┌─────────────────────────────────────────────────────────────┐ |
| │ FRONTEND ALOJADO EN │ |
| └─────────────────────────────────────────────────────────────┘ |
| │ |
| ┌─────────────┼─────────────┐ |
| │ │ │ |
| ▼ ▼ ▼ |
| LOCALHOST HUGGING FACE VERCEL/GITHUB |
| (Desarrollo) SPACES (Producción) |
| │ │ │ |
| ▼ ▼ ▼ |
| localhost:8000 Auto-detect Configurable |
| ``` |
|
|
| ## 📋 Matriz de Configuración |
|
|
| | Plataforma | Frontend URL | Backend URL | Auto-Detect | Config | |
| |-----------|--------------|-------------|-------------|--------| |
| | **Local Dev** | `localhost:3000` | `localhost:8000` | ✅ Automático | `.env.local` | |
| | **HF Spaces** | `username-andesai-frontend.hf.space` | `username-andesai-backend.hf.space` | ✅ Automático | Sin config | |
| | **Vercel** | `andesai.vercel.app` | `andesai-api.vercel.app` | ✅ Automático | Sin config | |
| | **GitHub Pages** | `username.github.io/andesai` | URL externa (Fly.io) | ⚙️ Manual | `.env.production` | |
|
|
| ## 🔍 Cómo se Detecta (Orden de Prioridad) |
|
|
| ```javascript |
| 1. NEXT_PUBLIC_API_BASE env var explícita |
| ↓ (Si no existe) |
| 2. ¿Estoy en huggingface.co? |
| → Auto-generar: https://{spaceName}-backend.hf.space |
| ↓ (Si no) |
| 3. ¿Estoy en vercel.app? |
| → Auto-generar: https://{hostname-reemplazar-andesai-api} |
| ↓ (Si no) |
| 4. ¿Estoy en github.io o github.dev? |
| → Usar env var REACT_APP_API_BASE o fallback a fly.dev |
| ↓ (Si no) |
| 5. ¿Estoy en localhost? |
| → http://localhost:8000 |
| ``` |
|
|
| ## 🚀 Para tu Hackathon |
|
|
| ### ✅ Opción 1: Hugging Face Spaces (SIN CONFIG) |
|
|
| ``` |
| 1. Creas 2 spaces: andesai-frontend, andesai-backend |
| 2. Subes Dockerfiles |
| 3. Agargas variables de entorno en backend |
| 4. ¡LISTO! Frontend auto-detecta backend |
| 5. URLs finales compartidas con jurado |
| ``` |
|
|
| **NO NECESITAS configurar URLs manualmente.** |
|
|
| ### ⚙️ Opción 2: GitHub + Fly.io (CON CONFIG) |
|
|
| ``` |
| 1. Deploy backend a Fly.io → https://andesai-backend.fly.dev |
| 2. Configuras .env.production: |
| NEXT_PUBLIC_API_BASE=https://andesai-backend.fly.dev |
| 3. Deploy frontend a GitHub Pages |
| 4. ¡LISTO! |
| ``` |
|
|
| **NECESITAS configurar la URL del backend.** |
|
|
| ## 📝 Archivos de Configuración |
|
|
| ``` |
| frontend/ |
| ├── .env.local ← DEV: http://localhost:8000 |
| ├── .env.production ← PROD: vacío (auto-detect) o URL explícita |
| ├── .env.huggingface ← HF: vacío (auto-detect) |
| └── lib/api.ts ← Contiene la lógica de auto-detect |
| ``` |
|
|
| ## 🎯 Mi Recomendación para Hackathon |
|
|
| **Usa Hugging Face Spaces:** |
|
|
| 1. Menos configuración |
| 2. Todo funciona automáticamente |
| 3. Muy fácil de compartir |
| 4. URL profesional |
| 5. Free tier generoso |
|
|
| **Pasos:** |
| ```bash |
| 1. git push al repo (tu GitHub) |
| 2. Creas 2 Spaces en HF |
| 3. Conectas repo → HF Space (webhook) |
| 4. Ambos deployan automáticamente |
| 5. ¡Listo! Funciona sin tocar nada |
| ``` |
|
|
| ## 🔗 Resultado Final |
|
|
| ``` |
| GitHub Repo |
| └── Conectado a HF via Webhooks |
| ├── andesai-frontend space → https://user-andesai-frontend.hf.space |
| └── andesai-backend space → https://user-andesai-backend.hf.space |
| |
| Frontend auto-detecta: |
| "Estoy en huggingface.co" → Conecta a backend en HF ✨ |
| ``` |
|
|
| --- |
|
|
| ## ⚡ TL;DR |
|
|
| **Lo que cambié:** |
| - ❌ Antes: hardcoded `localhost:8000` |
| - ✅ Ahora: auto-detecta según plataforma |
|
|
| **Para ti:** |
| - ✅ Local: No cambies nada, usa `http://localhost:8000` |
| - ✅ HF Spaces: No configures nada, funciona automático |
| - ✅ Otra plataforma: Configura NEXT_PUBLIC_API_BASE si es necesario |
| |
| **No te afecta la hackathon**, solo **mejora** la portabilidad. |
| |