A member check-in and program management system built with Next.js, Prisma, and PostgreSQL.
An npm-workspaces monorepo. The web app lives in checkin-app/; the rest are satellites around it.
checkin-app/— the Next.js + Prisma web app: membership, programs, attendance, payments, ops.client/— Python kiosk client for Raspberry Pi devices at the facility entrance (a transparent Ed25519 signing proxy in front of the backend).s-read-function/— Lambda that pulls Shopify orders/payouts/balance transactions into a dedicated Postgres (deploy notes, monitoring PRD).s-replay-function/— admin/replay operations for that ingestion pipeline (pure database consumer).monitoring-watchdog-function//monitoring-relay-function/— the detection and delivery halves of fleet monitoring.packages/— shared workspaces:telemetry(emission core),monitoring-db(monitoring Postgres layer),pg-test-harness(throwaway-Postgres integration testing).layers/prisma-runtime/— shared Lambda layer with the Prisma 7 driver-adapter runtime.deploy/— docker-compose stacks (local dev DB, self-hosted prod, flow tests) and Caddyfile.docs/— cross-cutting documentation: setup, designs, security (see the map below).
Follow the guide for your operating system:
- macOS Setup Guide — Install and run on a MacBook (Intel or Apple Silicon)
- Linux Setup Guide — Install and run on Ubuntu/Debian, Fedora, or Arch
npm install
docker compose -f deploy/docker-compose.yml up -d db
npm -w checkin-app exec -- prisma generate
npm -w checkin-app exec -- prisma db push
npm -w checkin-app exec -- prisma db seed
npm -w checkin-app run devThe app runs at http://localhost:4000 (Postgres on port 5433). Environment
variables go in checkin-app/.env — the setup guides list them.
- AGENTS.md — orientation for contributors and agents: test commands, repo conventions, editing rules.
- CONSTITUTION.md — purpose and core principles (security, privacy, auditability); what must never be weakened.
- Canonical Vocabulary — what every domain word means (people, roles, money, tools, attendance).
- Domain rules — the register of board and operations decisions, one file per domain; read the relevant file before changing behaviour in that domain. How the corpus is organised and retired: Documentation Standard.
- Critical User Journeys — every user-facing flow, per step, tagged with what exists and what does not.
- Design Specification — the original system design; further design notes live in
docs/designs/.
- Production Launch Runbook — the ordered checklist behind ops.innovationtreehouse.org.
- Deploy / Migration Order of Operations — why migrations run before rollout and what that implies for schema changes.
- Migration Coalesce Flow — a release may apply at most one new migration; how to coalesce accumulated migrations (
checkin-app/scripts/coalesce-migrations.ts). .github/workflows/—ci.yml(lint, tests, build — also reused to revalidate release tags),deploy-dev.yml(merge to main → dev),deploy-prod.yml(publishedv*release → prod, human-approved),migration-safety.yml(new migrations must apply to a populated DB),flow-tests.yml,shopify-live.yml,security-boundary-isolation.yml.
- Security Policy Layer — the declarative model-security layer and its contract tests.
docs/security/also holds the auth-consistency analysis, presence/identity tiering, and pentest findings (2026-04-21).
- s-read-function/README.md — the Shopify → Postgres ingestion pipeline; DEPLOY.md for rollout, FUTUREWORK.md for the backlog.
- Program Capacity & Scholarships — capacity as single-pool Shopify inventory and the scholarship hold-ledger lifecycle.
- AGENTS.md defines the three test classes (unit / integration / flow) and their commands — run them from
checkin-app/. - Test Coverage Plan — the path to 80% line coverage and how to re-measure.
- pg-test-harness — the fleet template for real-Postgres integration tiers.
Licensing: LICENSE · TRADEMARKS.md