Backend
- Registro de datos en una base de datos (BBDD).
- API REST creada desde el mismo Reflex o con FastAPI, para el envío y la lectura de datos.
- Documentar ejemplos de uso en el README.
Todo lo que tu equipo necesita saber para construir, entregar y presentar su proyecto en el II Reto Agrotech 2026.
Tutores y equipos inscritos recibirán también estas bases por email.
Sección 1
Desarrollar una web app responsiva que permita a un agricultor / técnico monitorizar en tiempo real sensores ubicados en una parcela (temperatura, humedad del suelo, luminosidad, humedad ambiental, etc.). La solución debe ser un proyecto desarrollado con software libre, usando Python con la tecnología Reflex, base de datos para la recogida de datos, control de versiones con git y código publicado en GitHub.
Sección 3
La solución deberá cumplir, como mínimo, los siguientes requisitos:
Sección 4
Cada equipo usará git para el control de versiones y colgará su software en un repositorio de GitHub desde el primer día. Se valorará un historial en GitHub que cuente cómo ha crecido el proyecto:
Sección 5
El repositorio deberá explicar el proyecto a quien lo abra por primera vez:
Sección 6
Cada equipo subirá su proyecto a la plataforma colaborativa antes de la fecha límite. Las instrucciones de acceso a la plataforma llegarán por email a tutores y equipos.
Entrega prevista
Sección 7
El jurado puntuará cada proyecto según criterios que se publicarán con su peso en las bases. Se tendrán en cuenta, entre otros:
Sección 8
En la Gran Final, cada equipo presentará y demostrará en directo su solución ante el jurado: el problema que resuelve, cómo funciona y su posible aplicación en el sector.
Fecha prevista
Conceptos de referencia para orientar el desarrollo. Son sugerencias: cada equipo puede adaptarlos a su solución.
POST/api/auth/login → obtiene token (si aplica).
GET/api/parcels → listar parcelas.
GET/api/parcels/{id}/sensors → sensores de parcela.
POST/api/sensors/{sensor_id}/data → enviar dato sensor (permitir fuentes externas o simulador).
GET/api/sensors/{sensor_id}/data?from=&to=&limit= → histórico.
GET/api/dashboard → resumen (último valor, alertas).
WS/ws/parcels/{id} → (opcional) streaming en tiempo real.
Respuesta de GET /api/sensors/{sensor_id}/data en JSON, con el formato de dato de ejemplo:
{
"sensor_id": "t001",
"timestamp": "2025-10-10T12:34:56Z",
"type": "temperatura",
"value": 23.7,
"unit": "ºC"
}
Puede usarse cualquiera de estos motores:
Ejemplos de tablas básicas:
id (INTEGER, PK)username (TEXT)password_hash (TEXT)role (TEXT)
id (INTEGER, PK)name (TEXT)location (TEXT)
id (TEXT, PK) -- ej. "t001"parcel_id (INTEGER, FK parcels.id)type (TEXT) -- temperatura, humedad_suelo, luminosidad...unit (TEXT)description (TEXT)threshold_low (REAL)threshold_high (REAL)
id (INTEGER, PK)sensor_id (TEXT, FK sensors.id)timestamp (TEXT ISO)value (REAL)raw (TEXT) -- opcional JSON
id (INTEGER, PK)sensor_idtimestamptype (TEXT) -- "LOW"/"HIGH"message (TEXT)acknowledged (BOOLEAN)
¿Tienes dudas sobre las bases técnicas?
Contacta con la organización