Local Dev Setup
:::info Source
Sourced from services/media-service/LOCAL_DEV_SETUP.md in the documentation repo.
:::
1. Prerequisites
Node 20, pnpm 9, Docker 24, ffmpeg (locally for transcode workers).
2. Quick Start
cd services/media-service
cp .env.example .env.local
pnpm install
docker compose -f docker-compose.dev.yml up -d # postgres, redis, nats, minio, clamav, ai-gateway-mock
pnpm db:migrate
pnpm seed
pnpm dev # :3060
pnpm dev:scanner
pnpm dev:transcoder
pnpm dev:ai-worker
3. Dependencies
| Service | Port |
|---|---|
| postgres | 5432 |
| redis | 6379 |
| nats | 4222 |
| minio | 9000 |
| clamav | 3310 |
| ai-gateway-mock | 3020 |
4. Environment
PORT=3060
DATABASE_URL=postgres://media:media@localhost:5432/media
REDIS_URL=redis://localhost:6379/60
NATS_URL=nats://localhost:4222
NATS_STREAM=MEDIA
S3_ENDPOINT=http://localhost:9000
S3_ACCESS_KEY=minioadmin
S3_SECRET_KEY=minioadmin
S3_BUCKET_MEDIA=media-dev
CLAMAV_HOST=localhost
CLAMAV_PORT=3310
AI_GATEWAY_URL=http://localhost:3020
UPLOAD_URL_TTL_SECONDS=900
UPLOAD_MAX_MB=5000
TRANSCODE_PROFILES=hls-480p,hls-720p,hls-1080p,mp3-128k
CDN_SIGN_TTL_SECONDS=600
5. Seed
- 5 pre-uploaded assets (video, image, audio, doc).
- 1 quarantined asset (EICAR fixture).
- 1 AI-generated image fixture.
6. Commands
pnpm dev
pnpm test
pnpm test:integration
pnpm test:scan:eicar # AV scan EICAR fixture
pnpm test:transcode # ffmpeg variant generation
pnpm ai:image --prompt "..."
pnpm asset:inspect <id>
7. Debugging
- MinIO UI: http://localhost:9001
- Asset lifecycle tracing via
pnpm asset:trace <id>. - Mock ai-gateway returns deterministic images (for snapshot tests).