Practitionist / Practitionist/elluminar_web
Launch hardening: action rate-limiting, prod email fail-closed, CI e2e job, DR docs, dead-code sweep
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 17h 2m
- Merged PRs (30d)
- 18
Description
Audit leftovers mapped to #35/#39/#42:
- Server actions unlimited — only BetterAuth endpoints rate-limited today; checkout/refunds/redeem/import are open abuse surface. Upstash store already exists.
- sliding-window helper + safe-action middleware; caps: checkout 10/min/user, refunds 5/hr, redeem/import 20/hr/org
- Idempotency-Key check in createCheckout (table exists)
- Prod email fails open — console fallback when RESEND_API_KEY missing → silent signup breakage; @react-email installed but unused.
- throw+Sentry in production; port verification/reset/receipt to react-email templates
- Playwright not in CI — add e2e job (Postgres service container, migrate+seed+run) w/ golden-path spec: signup→verify→buy→complete→quiz→certificate verify
- Backups/PITR undocumented — DEPLOYMENT.md DR section (Supabase PITR window, monthly restore drill, RPO/RTO)
- Dead exports sweep after #57 lands (getLiveSessionEmbedData, getFermionLoginLink, requestDsaRun/getDsaRunResult, storage helpers)
Spec: temp prompt library 09-launch-hardening.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Treat this as a multi-part launch-hardening effort and split the work across the five numbered areas. Start with the existing Upstash store, createCheckout, safe-action middleware, the Playwright setup, and DEPLOYMENT.md; verify the golden-path e2e flow and the listed rate limits, email behavior, DR guidance, and dead-export sweep after #57. Done means every checklist item is addressed and the CI job runs the seeded Postgres flow.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- playwright, postgresql, supabase, typescript
- Domain
- backend, ci-cd, databases, documentation, security, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100