Spaces:
Runtime error
title: AgroVisión
emoji: 🫐
colorFrom: green
colorTo: blue
sdk: docker
app_port: 8000
pinned: false
license: agpl-3.0
AgroVisión — Plataforma de Monitoreo Agronómico
Plataforma de precisión para gestión de parcelas, NDVI satelital, agente RAG y conteo por dron. BYOK, Docker, Hugging Face Spaces.
Demo en vivo: alexp97-agrovision.hf.space
Plataforma de AgroVisión para monitoreo agronómico de precisión: gestión de parcelas, teledetección NDVI (Sentinel-2, 5 años), agente conversacional (RAG), explorador de datos SQL y conteo de plantas por dron (este último en desarrollo). UI en Astro + Tailwind (estática) servida por el backend FastAPI (monolito modular), persistencia Supabase (PostGIS) BYOK. Despliegue en Hugging Face Spaces (Docker). (Shiny fue eliminado en la Fase 10.)
Estado actual
✅ Implementado
- Gestión de parcelas: creación, edición y persistencia en Supabase (PostGIS)
- NDVI satelital: Sentinel-2, serie histórica 5 años, heatmap zonal
- Clima básico: temperatura y precipitación (Open-Meteo)
- Agente RAG: chat conversacional con Groq/Llama 3
- Explorador de Datos: consultas SQL directas a tablas de Supabase
- Telemetría: visor de eventos de sesión (memoria o BD)
- BYOK: credenciales efímeras, nunca persistidas
En desarrollo
- Conteo por dron: modelo
agrovision-plantcount(AGPL-3.0) — cola/worker listos, pendiente publicación del modelo en Hugging Face Hub - Variables climáticas adicionales: humedad, viento, radiación solar, evapotranspiración
- Índices satelitales adicionales: EVI, SAVI, NDWI, LST (temperatura superficial)
- Alertas automatizadas: umbrales configurables por parcela
- Exportación de reportes: PDF/CSV con datos de NDVI + clima
Nota: Los módulos en desarrollo están visibles en la UI pero con funcionalidad limitada. Las variables climáticas actuales (temperatura y precipitación) son la base; se expandirán en fases posteriores.
Módulos (8)
| Módulo | Estado | Descripción |
|---|---|---|
| Resumen de Campo | ✅ | KPIs de NDVI, tendencia y área por parcela |
| Creación de Parcelas | ✅ | Dibujo de polígonos (EPSG:4326) con Leaflet-draw |
| Teledetección | ✅ | NDVI Sentinel-2 (5 años) + clima básico |
| Conteo por Dron | Modelo YOLO/RF-DETR — pendiente publicación | |
| Asistente Agéntico | ✅ | Chat RAG con Groq/Llama 3 |
| Explorador de Datos | ✅ | Consultas SQL directas a Supabase |
| Credenciales | ✅ | BYOK efímero (Supabase, Copernicus, Groq) |
| Telemetría | ✅ | Visor de eventos de sesión |
Próximas mejoras: más variables climáticas (humedad, viento, radiación) e índices satelitales (EVI, SAVI, NDWI, LST).
Capturas
| Módulo | Vista |
|---|---|
| Resumen de Campo | ![]() |
| Creación de Parcelas | ![]() |
| Teledetección NDVI | ![]() |
| Explorador de Datos | ![]() |
| Credenciales BYOK | ![]() |
| Telemetría de Sesión | ![]() |
Arquitectura
Astro + Tailwind (UI estática) ──fetch /api──► FastAPI (monolito modular) ─► Supabase (PostGIS) [BYOK]
servida por el gateway en / ├─ /api/fields (parcelas) ├─ Sentinel Hub / Copernicus (NDVI)
(1 contenedor en HF Spaces) ├─ /api/ndvi(+raster), /api/weather ├─ Open-Meteo (clima, sin llave)
├─ /api/chat (agente RAG) └─ Groq / Llama 3 (LLM)
├─ /api/events (telemetría)
├─ /api/data (explorador SQL)
└─ /api/count (conteo, en desarrollo)
Estructura
backend/ # FastAPI: api/ (routers por dominio) · services/ (negocio) · core/ (dominio puro) · db/ (PostGIS) · static (UI compilada) · main
frontend/ # UI Astro + Tailwind (se compila a backend/static)
supabase/ # migraciones SQL (PostGIS, índices, RLS, PGMQ)
tests/ # unit · integration (Supabase/Copernicus/Groq, skip sin llaves) · e2e
docs/ # reference/architect/db versionados; plan/task/investigation/doc_guia no
Arranque rápido
Con Docker (recomendado)
docker-compose up --build # http://localhost:8000/
Local (sin Docker)
Windows + OneDrive: la carpeta está sincronizada por la nube, lo que rompe los hardlinks y bloquea el
.venv. Crea el entorno fuera de OneDrive:$env:UV_PROJECT_ENVIRONMENT = "$env:LOCALAPPDATA\agrovision-venv"(El
link-mode = "copy"ya está enpyproject.toml.)
# 1) Dependencias
uv sync
# 2) (una vez, si usarás parcelas) configurar DATABASE_URL en .env y aplicar migraciones
uv run python -m backend.db.migrate
# 3) Compilar la UI Astro -> backend/static — o scripts/build.ps1
.\scripts\build.ps1
# 4) Backend (FastAPI) en :8000 (sirve la UI en / y la API en /api) — o scripts/run_backend.ps1
uv run python -u -m uvicorn backend.main:app --reload --port 8000 --log-level info
# Desarrollo de UI con hot-reload (Astro :4321 + backend :8000) en ventanas separadas:
.\scripts\dev.ps1
Despliegue a Hugging Face Spaces: .\scripts\deploy_hf.ps1 -Force (ver docs/ejecucion.md §5).
Detalle completo (credenciales por módulo, migraciones, troubleshooting): docs/ejecucion.md.
Credenciales BYOK (capa gratuita)
| Servicio | Habilita | Variable(s) en .env |
|---|---|---|
| Supabase (PostGIS) | Parcelas, Teledetección, Resumen | DATABASE_URL, SUPABASE_URL, SUPABASE_ANON_KEY |
| Copernicus CDSE | NDVI satelital + heatmap | DEV_COPERNICUS_CLIENT_ID, DEV_COPERNICUS_CLIENT_SECRET |
| Groq | Asistente RAG | DEV_GROQ_API_KEY |
| Open-Meteo | Clima | — (sin llave) |
La app abre sin credenciales; cada módulo se activa al poner su llave (en .env local o en la pestaña Credenciales).
Calidad y pruebas
uv run ruff check .
uv run python -m pytest # unit + integración (skip sin llaves)
uv run python -m pytest tests/unit -q # solo unitarias (rápidas)
Documentación
- Definición:
docs/reference/description_proyecto_agrovision.md - Arquitectura:
docs/architect/architecture_agrovision.md - Diseño de BD:
docs/db/diseno_db.md - Ejecución (runbook):
docs/ejecucion.md





