Local Dev Setup
:::info Source
Sourced from services/progress-service/LOCAL_DEV_SETUP.md in the documentation repo.
:::
1. Prerequisites
Node 20, pnpm 9, Docker 24, Postgres CLI 16.
2. Quick Start
cd services/progress-service
cp .env.example .env.local
pnpm install
docker compose -f docker-compose.dev.yml up -d
pnpm db:migrate
pnpm partman:init # pg_partman monthly partition init
pnpm seed
pnpm dev # :3030
pnpm dev:projector
3. Dependencies
| Service | Port | Purpose |
|---|---|---|
| postgres | 5432 | Schema progress; pg_partman ext |
| redis | 6379 | Query cache |
| nats | 4222 | Events |
4. Environment
PORT=3030
LOG_LEVEL=debug
ENV=dev
DATABASE_URL=postgres://progress:progress@localhost:5432/progress
DATABASE_READ_URL=postgres://progress:progress@localhost:5432/progress
REDIS_URL=redis://localhost:6379/30
NATS_URL=nats://localhost:4222
NATS_STREAM=PROGRESS
XAPI_VERSION=1.0.3
XAPI_STATEMENT_BATCH_MAX=10000
PARTITION_MONTHS_RETAIN_HOT=6
PARTITION_DETACH_SCHEDULE="0 3 * * 0" # Sunday 3 AM
OUTBOX_POLL_INTERVAL_MS=200
STATEMENT_QUERY_CACHE_TTL_S=60
5. Seed Data
- 2 enrollments with full-course completion (attempts × 100 statements each).
- 1 in-progress attempt (open state, 20 statements).
- 1 failed attempt → retake journey.
- GDPR-erasure fixture: user
erased_user@dev.localscheduled for erasure in tests.
6. Useful Commands
pnpm dev
pnpm test
pnpm test:integration
pnpm test:xapi:conformance # ADL xAPI test suite
pnpm test:replay # event-log replay test
pnpm transcript:render <enrollmentId>
pnpm xapi:query --agent ... --verb ...
pnpm openapi:check
pnpm partman:maintain # manually run monthly partition maintenance
7. xAPI Testing
- Public conformance fixtures in
fixtures/xapi/. pnpm xapi:post fixtures/xapi/passed.jsonposts a statement.pnpm xapi:queryprovides a REPL over the xAPI surface.
8. Debugging
pnpm attempt:inspect <id>— dump attempt + all statements.pnpm partition:list— show partition status.pnpm outbox:tail— watch outbox publisher activity.