Go-Live Checklist¶
Checklist corto y operativo para sacar FarmAPI a producción en https://estudioapi.com/farmapi.
1. Estado mínimo antes de desplegar¶
El producto no debería salir si no se cumple todo esto:
- 19/19 territorios en
readyono_change - cobertura nacional
>= 99.5% missing_coords_total = 0o, como máximo, residuo trazado y asumido manualmente- panel admin operativo con GitHub SSO
- formularios públicos configurados con Resend
SAAS_MOCK_MODE=falsey credenciales reales del SaaS
2. Preparar el .env de producción¶
cp .env.prod.example .env.prod.local
make prod-env-bootstrap ENV_FILE=.env.prod.local
chmod 600 .env.prod.local
Completa después los valores reales que no pueden venir de plantilla:
DATABASE_URLGITHUB_CLIENT_IDGITHUB_CLIENT_SECRETRESEND_API_KEYRESEND_FROM_EMAILTASKS_SERVICE_ACCOUNT_EMAILsi se activa Cloud Tasks
3. Valores cerrados para producción¶
Estos son los valores esperados en producción:
FARMAAPI_ENV=prodAPP_BASE_PATH=/farmapiPUBLIC_EXAMPLE_BASE_URL=https://estudioapi.com/farmapiSAAS_BASE_URL=https://estudioapi.com/farmapiSAAS_OAUTH_TOKEN_URL=https://estudioapi.com/farmapi/oauth/tokenGITHUB_REDIRECT_URI=https://estudioapi.com/farmapi/auth/github/callbackTRUSTED_HOSTS_CSV=estudioapi.com,www.estudioapi.comADMIN_ALLOWED_ORIGINS_CSV=https://estudioapi.com,https://www.estudioapi.comWEBHOOK_REQUIRE_HTTPS=trueWEBHOOK_ALLOW_LOCALHOST=falseRATE_LIMIT_BACKEND=redisOSM_GEOCODING_ENABLED=falseARCGIS_GEOCODING_ENABLED=trueMAPS_GEOCODING_ENABLED=trueSAAS_MOCK_MODE=falseDOCKER_STARTUP_PREFLIGHT_MODE=prod
4. Preflight obligatorio¶
Antes de desplegar:
make preflight-prod ENV_FILE=.env.prod.local
Este check debe quedar en prod_ready=true.
Si quieres ver el detalle exacto:
make preflight-prod-json ENV_FILE=.env.prod.local
5. Build y arranque¶
docker compose -f docker-compose.coolify.yml up -d --build
El guard de arranque debe aceptar el entorno. Si hay placeholders inseguros, callback GitHub incorrecto o Resend incompleto, el contenedor debe abortar.
6. Verificación funcional tras levantar¶
Superficie pública:
uv run python scripts/verify_live_surface.py \
--base-url https://estudioapi.com/farmapi \
--require-ok
Cobertura y estado vivo:
uv run python scripts/runtime_certify_current.py \
--env-file .env.prod.local \
--require-production-go
7. Comprobaciones manuales finales¶
- comprobar que Coolify publica certificado para:
https://estudioapi.com/farmapihttps://www.estudioapi.com/farmapi- entrar en
https://estudioapi.com/farmapi/admin - validar login GitHub del admin real
- crear un cliente
- generar una API key
- asignar scope
- descargar un CSV por territorio
- comprobar landing pública
- comprobar documentación in-app en
/farmapi/docs/
8. Go / No-Go¶
Go¶
preflight-prodverde- verificacion de Resend en verde
runtime_certify_currentverde- login admin correcto
- exports públicos correctos
No-Go¶
- falta cualquier secreto crítico
- GitHub OAuth sigue apuntando a localhost
- Resend no entrega
SAAS_MOCK_MODE=true- cobertura o coordenadas no están cerradas