services: db: image: postgres:16-alpine environment: POSTGRES_USER: viscam POSTGRES_PASSWORD: viscam POSTGRES_DB: viscam ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U viscam -d viscam"] interval: 5s timeout: 3s retries: 20 api: build: ./apps/api environment: DATABASE_URL: postgres://viscam:viscam@db:5432/viscam PORT: 3000 STORAGE_DIR: /app/storage ports: - "3000:3000" volumes: - ./storage:/app/storage depends_on: db: condition: service_healthy web: build: ./apps/web environment: VITE_API_TARGET: http://api:3000 ports: - "5173:5173" depends_on: - api ai-worker: build: ./apps/ai-worker environment: API_URL: http://api:3000 WORKER_MODE: mock MOCK_INTERVAL_SECONDS: 15 depends_on: - api volumes: pgdata: