Skip to main content

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

ServicePort
postgres5432
redis6379
nats4222
minio9000
clamav3310
ai-gateway-mock3020

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).