Stack
- Next.js 16 App Router
- React 19
- TypeScript
- Tailwind CSS v4
- shadcn/ui
- React Hook Form + Zod
- Supabase for Postgres, Auth, and RLS
- Vitest for unit tests
Requirements
- Node.js compatible with the current Next.js toolchain
- a Supabase project with the expected schema provisioned
- environment variables in
.env.local
Environment variables
Create.env.local with:
- the publishable key is used by the app client
- the service role key is server-only
- the seed script and admin-only server actions rely on the service role key
Installation
Seed demo data
DEMO_USER_PASSWORD in scripts/seed.ts), not randomized, so re-running the seed re-applies it to existing accounts instead of rotating credentials on every run.
Development server
http://localhost:3000.
Scripts
Development notes
- authenticated app routes live under
src/app/(app) - server-side business logic lives in
src/lib/actions - chemistry calculations live in
src/lib/services - Supabase helpers live in
src/lib/supabase - forms (template builder, submissions, scheduling, approvals, corrections), alerts, compliance, exports, and scheduled closures are all implemented product areas — public form links and multi-org accounts are the remaining roadmap phases