* refactor(civi-crm): remove case management pages and API The Circle Case UI, its API routes and the CiviCRM query layer they used are gone. Keeps the app shell out entirely: no pages remain, so the layout, styles and UI dependencies go with them. * refactor(civi-crm): drop CiviCRM write from the intake endpoint Submissions now go to Notion and, for the steward form, n8n. The legacy afformCircleContactForm name was CiviCRM-only and is no longer accepted; the fields[] payload is ignored. * chore(web): remove CiviCRM afform generator scripts They fetched form definitions from the CiviCRM API, which is gone. The generated files under lib/civicrm are hand-maintained from now on. * refactor(web): trim funnel form definitions and move to lib/funnel-forms Fields keep only what renders the form: formKey, label, inputType, required, repeatable. The CiviCRM entity/join/fieldName plumbing and the fields[] POST payload are gone, along with the unused circle contact form. country was marked required but exempt from validation through its CiviCRM Address join, so it is now enforced like every other required select. * docs: rewrite civi-crm and funnel docs for the intake-only app Drops the CiviCRM API guide and the case management architecture, and updates the funnel reference to the Notion + n8n flow.
logos-co
pnpm + Turborepo monorepo for the Logos website and its content CMS
apps/web— public Next.js 16 site (Tailwind v4,next-intl, static export)apps/cms— Payload CMS 3.x admin (Postgres-backed; edits ship as GitHub PRs)packages/content— content schemas, loaders forcontent/**, GitHub mutation helperspackages/ui— shared React primitives and SVG icons (<LogosMark />, etc.)packages/tokens— design tokenspackages/types— shared types incl. Payload-generatedpackages/config— shared ESLint / TypeScript / Prettier configcontent/**— production source of truth (pages, press, circles, builders-hub, site)
Apps are entrypoints only. Shared logic lives in packages. The web app reads content/** at build time and never calls GitHub at request time.
Requirements
Node 24, pnpm 11.1.0.
Quick start
pnpm install
pnpm dev # web → http://localhost:3000, cms → http://localhost:3001
Payload Admin: http://localhost:3001/admin.
apps/cms requires PAYLOAD_SECRET and DATABASE_URL (Postgres). Copy apps/cms/.env.example to apps/cms/.env and fill it in. See docs/deployment.md for the full env matrix.
Workspace package builds
Apps consume internal packages (@acid-info/logos-ui, @acid-info/logos-content, etc.) through their compiled dist/ outputs declared in each package's exports map. Turborepo's dev task declares dependsOn: ["^build"], so pnpm dev builds upstream packages before starting the app servers.
If a dist/ directory goes missing (e.g. after git clean -fdx or manually removing node_modules) and an app is started directly without going through pnpm dev, you may see errors like:
Module not found: Can't resolve '@acid-info/logos-ui/client'
Rebuild the affected workspace package to fix it:
pnpm --filter @acid-info/logos-ui build
Or run pnpm build once at the repo root to compile every package.
Common scripts
pnpm build # web static export + cms build
pnpm test # vitest (apps/web)
pnpm lint # eslint --max-warnings 0
pnpm check-types # next typegen + tsc --noEmit
pnpm generate-types # regenerate packages/types/src/payload.ts from Payload schema
Branch model
develop— default branch + staging. CMS-generated content PRs target thismaster— production (created when production deploys spin up)
Direct pushes to either are blocked by branch protection.
Documentation
- AGENTS.md — conventions and rules for AI agents working in this repo
- docs/deployment.md — env vars, Vercel dev/staging, self-hosted production
- docs/cms-github-content-plan.md — schema + GitHub workflow design
- docs/web-pages.md — per-page web requirements (Figma references)
- docs/components.md — shared component specs
- docs/seo.md — SEO and metadata expectations
- docs/code-quality-followups.md — known gaps awaiting decisions