Esta landing sigue siendo demo-first, pero ahora cada corrida vive en Postgres, se expone en una URL estable y queda lista para evolucionar a historial, uploads reales y automatizaciones.
1. Trigger
La app construye el payload demo, crea el análisis y sus dependencias en Postgres, y luego dispara el webhook privado de n8n.
2. Espera
La UI redirige a una URL persistida del análisis y hace polling contra la API real hasta que llegue el callback.
3. Brief
El callback firmado se valida, se deduplica y queda guardado como un brief premium recuperable en `/analysis/[id]`.
El payload demo incluye upgrades mixtos, un paquete deprecated y suficiente contexto para que n8n devuelva un brief interesante y quede persistido como análisis.
Readiness
Postgres persistido
`DATABASE_URL`
Webhook privado de n8n
`N8N_ANALYSIS_WEBHOOK_URL` + token
Validación del callback
`N8N_CALLBACK_SECRET`
Callback fijo
https://hackaton.jamesjh.top/api/internal/n8n/callback
n8n ya puede llamar este endpoint. La app valida `x-n8n-signature`, registra `x-idempotency-key`, deduplica retries y persiste el resultado del callback en Postgres.
Persistencia real
Proyecto
Slug lógico reutilizable para que esta demo pueda crecer a historial y rechecks.
Análisis
Estado, payload enviado, callback crudo, brief renderizado y timestamps terminales.
Dependencias
Snapshot normalizado por análisis para que luego puedas comparar corridas.
Receipts de callback
Idempotency keys persistidas para que retries de n8n no reescriban el análisis.
Ruta final
/analysis/[id]
Después del trigger, la app redirige a una URL estable del análisis. Desde ahí verás el polling corto, el callback firmado y el brief renderizado, todo leyendo desde Postgres.
Stack de esta slice
SvelteKit SSR + Bun SQL nativo + Postgres + webhook privado a n8n + callback idempotente.