# Community Rule A Next.js application for community decision-making and governance documentation — author, browse, and share governance "rules" built from curated templates and a guided wizard. Live at [communityrule.info](https://communityrule.info). Packaged as a Cloudron app for MEDLab; see [docs/guides/ops-backend-deploy.md](docs/guides/ops-backend-deploy.md) for the deployment handoff. ## Requirements - Node.js **20+** (LTS) - npm **10+** - Docker (for local Postgres and Mailhog) ## Quick start ```bash cp .env.example .env # then set SESSION_SECRET (≥16 chars) docker compose up -d postgres # add `mailhog` for a local inbox npm ci npx prisma migrate dev npm run dev ``` Open [http://localhost:3000](http://localhost:3000). Without `CLOUDRON_MAIL_SMTP_*` set, magic-link sign-in URLs are printed to the dev-server log instead of emailed. Full local backend, API reference, and PR workflow: [CONTRIBUTING.md](CONTRIBUTING.md). ## Scripts | Command | What it does | | --- | --- | | `npm run dev` | Next.js dev server (Turbopack). | | `npm run build` / `npm start` | Production build / serve. | | `npm test` | Vitest unit + component tests with coverage. | | `npm run test:component` | Components only — faster inner loop. | | `npm run e2e` | Playwright E2E + visual regression. | | `npm run migrate:smoke` | Throwaway Postgres + `prisma migrate deploy` (Docker required). | | `npm run storybook` | Storybook on port 6006. | | `npm run knip` | Detect unused files / exports. | | `npm run lhci` | Lighthouse CI performance pass. | See [`package.json`](package.json) for the full list (visual regression, bundle analysis, seeding, etc.). ## Project layout ```text app/ Next.js app router — route groups (marketing), (app), (admin), (dev); shared components under app/components/; admin-only widgets under app/(admin)//_components/ lib/ Shared library code (server, validation, create-flow logic) prisma/ Schema, migrations, seed messages/en/ Localized UI copy (single-locale today; English) public/ Static assets stories/ Storybook stories tests/ Vitest + Playwright suites (mirror source paths) docs/ Human-facing documentation — start at docs/README.md .cursor/rules/ Per-file conventions (auto-loaded by Cursor) scripts/ Build, release, and smoke-test scripts ``` ## Tech stack Next.js 16 · React 19 · TypeScript · Tailwind CSS 4 · Prisma 6 · PostgreSQL · Vitest · Playwright · Storybook 10 · Lighthouse CI. ## Documentation - [docs/README.md](docs/README.md) — index of guides and rules. - [docs/create-flow.md](docs/create-flow.md) — create-rule wizard canon. - [docs/testing-guide.md](docs/testing-guide.md) — testing philosophy. - [docs/guides/ops-backend-deploy.md](docs/guides/ops-backend-deploy.md) — Cloudron deploy + cutover plan. - [CONTRIBUTING.md](CONTRIBUTING.md) — local backend, API routes, PR workflow. - [AGENTS.md](AGENTS.md) — orientation for AI coding agents. ## License Application source code is licensed under the [GNU General Public License v3.0](LICENSE), the same license as the legacy [GitLab project](https://gitlab.com/medlabboulder/communityrule). Copyright (C) 2020 Media Enterprise Design Lab. User-facing content (guides, template copy, marketing text) is licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/), as stated on [communityrule.info/about](https://communityrule.info/about/).