Beacon
Webhook job scheduler & run monitor
5
Max Retries
25
Runs Per Page
2s
Live Poll Interval
∞
Job History
What it does
Beacon lets developers schedule webhook calls on any 5-field cron expression — every execution is logged with status, HTTP response code, duration, response body, and error details, all isolated per user with row-level security. Think developer-grade cron with full observability built in.
Core Features
Cron Scheduling
Any 5-field cron expression via pg_cron. Live human-readable preview as you type. 9 one-click presets and full timezone-aware display.
Full Run History
Every attempt gets its own row — status, HTTP code, duration, response body, error detail, and attempt number. Paginated at 25/page.
Automatic Retries
Configurable 0–5 retries with linear backoff (500ms × attempt). Each retry is a separate job_run record for complete per-attempt visibility.
HMAC Signing
Every outgoing request carries X-Beacon-Signature: sha256=<hmac> computed from your job's signing secret. Verify on your endpoint.
Run Now & Toggle
Trigger any job immediately from the dashboard, job detail page, or REST API. Pause or resume jobs without losing their config.
Failure Alerts
Send rich HTML emails via Resend or Block Kit messages to Slack on final failure. Configured per job — no global noise.
REST API
Full CRUD + trigger via /api/v1/jobs. Authenticate with a Supabase JWT. Programmatic job management without touching the UI.
Row-Level Security
Strict per-user isolation on all tables via Supabase RLS. Your jobs and run history are never visible to other users.
How Scheduling Works
Job Insert / Update
When a job is created or updated, the trg_sync_job_cron trigger fires sync_job_cron(), reading the service role key from Supabase Vault.
pg_cron Registration
cron.schedule() registers a pg_cron entry named beacon-job-<uuid>. On deactivation or delete, cron.unschedule() removes it immediately.
Edge Function Execution
Each tick fires net.http_post() to the execute-job Deno Edge Function with the service role JWT as the caller.
HMAC + Delivery
The function computes HMAC-SHA256(signing_secret, body) via the Web Crypto API, then POSTs with X-Beacon-Signature and custom headers.
Retry & Logging
On failure, the function waits 500ms × attempt and creates a new attempt record. After the final attempt, Slack/email alerts fire if configured.
Tech Stack
Framework
Next.js (App Router) · TypeScript · Tailwind CSS 4
Runtime
React 19 · Node.js 18+
Database
Supabase (Postgres 17) · pg_cron · pg_net
Auth
Supabase Auth — email/password
Job Runtime
Supabase Edge Function (Deno)
Secrets
Supabase Vault
AI
claude-haiku-4-5 via Anthropic API — failure explanations
Alerts
Resend (email) · Slack incoming webhooks
REST API
Use Cases
Data Pipelines
Sync inventory from supplier APIs · pull overnight exchange rates · archive stale rows
Notifications
Daily email digest of signups · weekly Slack reports · Monday morning reminders
Infrastructure
Healthcheck pings every 5 min · CDN cache purge after publish · token rotation
Business Logic
Process subscription renewals at midnight · expire promo codes · recalculate leaderboards
AI / LLM Workflows
Nightly embedding jobs · batch sentiment analysis · auto-generate changelogs
Integrations
Poll partner APIs for new orders · sync GitHub issues · update Notion dashboards