Local development
Use Node.js 24.20.0, pnpm 12.3.4, Docker Desktop and WSL 2 on Windows. Exact
dependency versions are pinned in manifests and pnpm-lock.yaml.
From the repository root:
pnpm install --frozen-lockfilepnpm db:startpnpm db:resetnode scripts/setup-local.mjspnpm db:testpnpm exec tsx apps/web/scripts/bootstrap-local.tsdocker compose up --build --wait webdocker compose watch webOpen the app at http://127.0.0.1:3000, Supabase Studio at
http://127.0.0.1:54323 and local mail at http://127.0.0.1:54324.
Local accounts are parent@foliovera.test, student@foliovera.test and
outsider@foliovera.test. The outsider has no family membership and is denied access.
Reset deletes local users and files. Run database tests immediately after reset, before bootstrap and browser tests. Setup scripts require local URLs before creating accounts. Local environment files are excluded from Git.
pnpm typecheckpnpm lintpnpm test:unitpnpm buildpnpm exec playwright install chromiumpnpm test:uppnpm test:e2eSQL tests roll back their transactions. Browser tests use the Docker production build with real local Auth, PostgreSQL, Storage and Mailpit. The magic-link test reads a delivered email and verifies that the link cannot be reused.
test:up validates local endpoints and passes only the public local key to the
build. The container runs Next.js standalone output. Return to development with
docker compose up --build --wait web. Database commands always target local
Docker regardless of production credentials in the original .env.
Supabase lifecycle commands run its Linux CLI in the tooling image with the
Docker Unix socket and Docker CLI 29.7.2. No Docker TCP port is required. Windows
uses Docker Desktop and a project on a local drive; Linux uses the same image
and the project’s absolute path. Reset uses Supabase stop --no-backup, then
start, recreating Auth, database and Storage together.
Dependencies use a BuildKit cache mount for the pnpm store, following the official pnpm Docker guide. The cache is not an image layer.
Documentation uses Astro Starlight. Start its development server with pnpm docs:dev.