Skip to main content

Scheduling Service — Local Dev Setup

Status: populated Owner: TBD Last updated: 2026-04-17 Companion: Service Template

1. Prerequisites

Node.js 22.x, pnpm 9.x, Docker + Docker Compose 24+.

2. docker-compose.yml (dev stack)

version: "3.9"
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: ghasi
POSTGRES_PASSWORD: ghasi_dev
POSTGRES_DB: scheduling_dev
ports:
- "5434:5432"

nats:
image: nats:2.10-alpine
command: ["-js", "-m", "8222"]
ports:
- "4222:4222"

redis:
image: redis:7-alpine
ports:
- "6381:6379"

3. Environment Variables (.env.example)

PORT=3011
NODE_ENV=development
DATABASE_URL=postgresql://ghasi:ghasi_dev@localhost:5434/scheduling_dev
REDIS_URL=redis://localhost:6381
NATS_URL=nats://localhost:4222
JWKS_URI=http://localhost:8080/realms/ghasi-dev/protocol/openid-connect/certs
AUDIT_NATS_SUBJECT=AUDIT.events
MODULE_KEY=ADMIN-SCHED
REMINDER_LEAD_TIME_HOURS=24

4. Common Commands

docker compose up -d
pnpm drizzle-kit migrate
pnpm seed:dev
pnpm dev:scheduling
pnpm test:unit --filter=scheduling
pnpm test:integration --filter=scheduling
pnpm test:coverage --filter=scheduling

5. Seed Data

SeedDescription
2 tenantstenant-af, tenant-ae
3 providersWith schedules covering Mon–Thu 08:00–17:00 (Asia/Kabul)
30 slotsMix of free, busy, blocked
5 appointmentsPlanned, booked, arrived, fulfilled, cancelled states
2 waitlist entriesOne waiting, one fulfilled