feat: add backend FastAPI structure and Supabase schema

This commit is contained in:
Alan Alonso
2026-05-23 00:41:13 -06:00
parent 17cdde7dbb
commit e6eb466c14
38 changed files with 1760 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
"""
Guía de separación de residuos - endpoint cacheado
"""
from fastapi import APIRouter
from app.core.cache import cached
router = APIRouter()
# Guía de separación (cache por 24 horas)
RECYCLING_GUIDE = {
"categories": [
{
"name": "Orgánico",
"color": "#4CAF50",
"icon": "leaf",
"items": [
"Restos de comida",
"Cáscaras de fruta",
"Hojas y césped",
"Cáscaras de huevo",
"Café y filtros de papel",
"Servilletas de papel",
"Restos de poda"
]
},
{
"name": "Reciclable",
"color": "#2196F3",
"icon": "recycle",
"items": [
"Plástico (PET, HDPE, PP)",
"Vidrio (botellas, frascos)",
"Papel y cartón (limpio y seco)",
"Latas de aluminio",
"Envases Tetra Pak",
"Periódicos y revistas"
]
},
{
"name": "Sanitario",
"color": "#9C27B0",
"icon": "medical-services",
"items": [
"Pañales desechables",
"Toallas sanitarias",
"Papel higiénico usado",
"Algodón y gasas",
"Cubrebocas",
"Jeringas (en contenedor especial)"
]
},
{
"name": "Peligroso",
"color": "#F44336",
"icon": "warning",
"items": [
"Pilas y baterías",
"Aceite de cocina usado",
"Pinturas y solventes",
"Químicos de limpieza",
"Medicamentos caducados",
"Focos y fluorescentes",
"Electrónicos"
]
}
],
"tips": [
"Lava los envases reciclables antes de desecharlos",
"No mezcles residuos peligrosos con la basura común",
"Los residuos sanitarios deben ir en bolsa aparte",
"El aceite de cocina debe almacenarse en botella cerrada"
]
}
@router.get("/recycling-guide")
@cached(prefix="guide", ttl=86400) # 24 horas de caché
async def get_recycling_guide():
"""
Guía de separación de residuos.
Funciona offline en el cliente (cacheable por 24 horas).
"""
return RECYCLING_GUIDE