You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make the empty system runnable and provable: docker compose up starts PostgreSQL, SeaweedFS, web and a no-op worker; the three verify levels exist and CI runs them.
Acceptance criteria
docker compose up starts postgres:17, SeaweedFS, web (Next.js, Node 24) and worker; GET /api/health returns 200 with database and storage status
pnpm verify:changed, pnpm verify, pnpm verify:full exist; verify runs lint, typecheck, Vitest, dependency-cruiser, build and pnpm audit --audit-level high
Module skeletons src/features/<module>/index.ts match the architecture map; dependency-cruiser rejects deep imports across modules
Drizzle with migrations in src/db/migrations; the first migration creates the roles app_owner and app_rw (NOBYPASSRLS)
.env.example documents every variable; no secret committed; the foundation note in AGENTS.md is removed
New dependencies are justified in the PR (Next.js, Drizzle, pg-boss, Vitest, dependency-cruiser, S3 SDK)
Not part of this task
Auth, RLS policies, AI service, UI beyond a placeholder page
Affected areas
package.json
compose.yaml
Dockerfile
src/app/
src/db/
src/features/*/index.ts
.github/workflows/ci.yml
Test plan
Criterion
Check
health endpoint
integration test against Postgres + SeaweedFS
module boundaries
dependency-cruiser rule test with a deliberate deep import
compose start
manual smoke: docker compose up → /api/health
Security/Privacy affected?
Database roles and env-only secrets. No data processed yet.
Goal
Make the empty system runnable and provable:
docker compose upstarts PostgreSQL, SeaweedFS,weband a no-opworker; the three verify levels exist and CI runs them.Acceptance criteria
docker compose upstarts postgres:17, SeaweedFS, web (Next.js, Node 24) and worker;GET /api/healthreturns 200 with database and storage statuspnpm verify:changed,pnpm verify,pnpm verify:fullexist;verifyruns lint, typecheck, Vitest, dependency-cruiser, build andpnpm audit --audit-level highsrc/features/<module>/index.tsmatch the architecture map; dependency-cruiser rejects deep imports across modulessrc/db/migrations; the first migration creates the rolesapp_ownerandapp_rw(NOBYPASSRLS).env.exampledocuments every variable; no secret committed; the foundation note in AGENTS.md is removedNot part of this task
Affected areas
package.jsoncompose.yamlDockerfilesrc/app/src/db/src/features/*/index.ts.github/workflows/ci.ymlTest plan
docker compose up→/api/healthSecurity/Privacy affected?
Database roles and env-only secrets. No data processed yet.
Epic: #2 · Architecture:
docs/decisions/ADR-0001-pilot-architecture.md