Practitionist / Practitionist/elluminar_web

Launch hardening: action rate-limiting, prod email fail-closed, CI e2e job, DR docs, dead-code sweep

Open
#65 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

observability
Dominant language
TypeScript
Stars
1
Forks
0
Avg merge
17h 2m
Merged PRs (30d)
18

Description

Audit leftovers mapped to #35/#39/#42:

  1. 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)
  2. 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
  3. Playwright not in CI — add e2e job (Postgres service container, migrate+seed+run) w/ golden-path spec: signup→verify→buy→complete→quiz→certificate verify
  4. Backups/PITR undocumented — DEPLOYMENT.md DR section (Supabase PITR window, monthly restore drill, RPO/RTO)
  5. 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.