What this is
A little automation running on my self-hosted n8n (Coolify + Traefik). Every morning at 08:00 it fans out to three public APIs, merges the results, and composes a single Daily Spark card. A second branch exposes a small webhook so this very page can pull the freshest run — the diagram above is interactive (drag to pan, scroll to zoom), and the cards below render the most recent spark per category.
How it works
- Schedule trigger kicks off daily at 08:00.
- Three HTTP nodes fetch a dad joke, a useless fact, and a random activity in parallel.
- Merge combines all three, and a Code node composes the spark card.
- Save latest stores the newest card in the workflow’s shared store.
- A Webhook branch (
/spark-latest) serves that data as JSON with CORS, which this page fetches client-side — so the state bar always shows the real last run and the countdown to the next one.
Stack
Self-hosted n8n · Coolify · Traefik · Astro + Svelte islands · a hand-rolled interactive flow (no heavy graph lib) and pure-CSS 3D cards.