Files
community-rule/CONTRIBUTING.md
T
2026-04-06 16:37:15 -06:00

2.9 KiB
Raw Blame History

Contributing

Backend (local)

  1. Copy .env.example to .env and set SESSION_SECRET (at least 16 characters).
  2. docker compose up -d postgres mailhog — omit mailhog if you only need Postgres; with SMTP_URL unset, the magic-link verify URL is printed in the dev server log (see .env.example).
  3. Install dependencies: npm ci
  4. Apply migrations: npx prisma migrate dev
  5. Run the app: npm run dev

Use npx prisma studio to inspect the database.

Prisma migrations (important)

  • Do not edit migration files that have already been applied to staging, production, or any shared database. Changing history breaks migrate deploy and other environments.
  • To fix a bad migration, add a new migration that corrects the schema. See docs/backend-roadmap.md §8 for the full policy.

API routes (overview)

Method Path Purpose
GET /api/health Liveness / DB check
GET /api/auth/session Current user or null
POST /api/auth/magic-link/request Send sign-in link email
GET /api/auth/magic-link/verify Validate token, set session cookie, redirect
POST /api/auth/logout Clear session
GET / PUT /api/drafts/me Load or save create-flow JSON (authenticated)
GET / POST /api/rules List or publish rules
GET /api/templates List curated templates
  • Open http://localhost:3000/login or use Log in in the site header (modal or full page).
  • Enter email and request a link. Complete sign-in by opening the link in the same browser you use for the app (session cookie).
  • No SMTP_URL: the full GET /api/auth/magic-link/verify?... URL is printed in the dev server terminal — paste it into the browser address bar.
  • Mailhog: with Compose Mailhog running, set SMTP_URL=smtp://localhost:1025 and open the link from the message in the Mailhog UI (http://localhost:8025).

Staging / production: Sign-in links use the apps origin. Ensure your reverse proxy sets Host (and TLS) so links in email match the URL users open. See docs/backend-roadmap.md §9.

Optional draft sync

Set NEXT_PUBLIC_ENABLE_BACKEND_SYNC=true in .env so the create flow saves drafts to the server when a user is logged in.

Frontend / tests

See docs/TESTING_GUIDE.md and the root README.md.