Local Dev Setup
:::info Source
Sourced from services/delivery-service/LOCAL_DEV_SETUP.md in the documentation repo.
:::
1. Prerequisites
Node 20, pnpm 9, Docker 24.
2. Quick Start
cd services/delivery-service
cp .env.example .env.local
pnpm install
docker compose -f docker-compose.dev.yml up -d
pnpm db:migrate
pnpm seed
pnpm dev # :3040
3. Dependencies
| Service | Port | Purpose |
|---|---|---|
| postgres | 5432 | Schema delivery |
| redis | 6379 | Session cache, rate-limit |
| nats | 4222 | Events |
| ai-gateway (mock) | 3020 | AI tutor |
| content-service (mock) | 3080 | Package + bundle refs |
| progress-service (mock) | 3030 | LRS |
| assessment-service (mock) | 3050 | Quiz serving + scoring |
| enrollment-service (mock) | 3055 | Enrollment lookup |
| sync-service (mock) | 3090 | Offline sync |
4. Environment
PORT=3040
LOG_LEVEL=debug
ENV=dev
DATABASE_URL=postgres://delivery:delivery@localhost:5432/delivery
REDIS_URL=redis://localhost:6379/40
NATS_URL=nats://localhost:4222
NATS_STREAM=DELIVERY
AI_GATEWAY_URL=http://localhost:3020
CONTENT_SERVICE_URL=http://localhost:3080
PROGRESS_SERVICE_URL=http://localhost:3030
ASSESSMENT_SERVICE_URL=http://localhost:3050
ENROLLMENT_SERVICE_URL=http://localhost:3055
SYNC_SERVICE_URL=http://localhost:3090
TUTOR_STREAM_TIMEOUT_MS=30000
SESSION_IDLE_TIMEOUT_MIN=30
SESSION_ABANDON_TIMEOUT_MIN=60
OFFLINE_MOUNT_VERIFY_TIMEOUT_MS=3000
5. Seed Data
- 5 play sessions in various states (init, active, paused, completed, abandoned).
- Tied to seeded enrollments and devices from other services.
- One session with AI tutor transcript (12 turns).
- One session marked offline-mounted for offline E2E test.
6. Useful Commands
pnpm dev
pnpm test
pnpm test:integration
pnpm test:e2e:j-05 # publish → play journey
pnpm test:e2e:j-12 # airplane-mode E2E
pnpm tutor:eval # AI tutor regression suite
pnpm session:inspect <id>
pnpm openapi:check
7. Debugging
- AI tutor stream (SSE):
curl -N http://localhost:3040/api/v1/play-sessions/{id}/tutor/stream. - Session state:
pnpm session:inspect <id>dumps current aggregate + recent statements. - Mock AI returns deterministic responses so you can snapshot-test tutor turns.