Skip to Content
SecurityProduction hardening

Production hardening

Checklist before public launch with real payments and fal.ai.

P0 — ship blockers

ItemStatus
Generation webhook auth + external_job_id bindingDone
SSRF allow-list on provider output URLsDone
sync_org_generation_credits_for_plan not callable by usersDone
update_organization_plan gated (self_serve_billing)Done
finalize_generation_job idempotent on creditsDone

P1 — reliability

ItemStatus
Submit failure → finalize failed + refundDone
generation-process requires project editorDone
credits-monthly-reset / generation-reap-stale cron authDone
Idempotent reserve_generation_credits by job_idDone
Batch partial 402 surfaced in UIDone
Stale job reaper + monthly reset preserves balanceDone

P2 — product polish

  • Metrics from generation_jobs (replace email metrics)
  • Hide legacy /workspace/emails nav
  • E2E: board → generate → gallery
  • Failed job UX (errorMessage, refund hint)

Environment checklist

GENERATION_WEBHOOK_SECRET=... GENERATION_PROVIDER=fal FAL_API_KEY=... CREDITS_CRON_SECRET=... # private.platform_settings.self_serve_billing = false

Full backlog

Canonical list: docs/SECURITY_AND_RELIABILITY_BACKLOG.md in the monorepo.

Last updated on