# =============================================================================
# DEVELOPMENT DOCKER COMPOSE - Security Hardened
# =============================================================================
# Note: Dev containers need write access to volumes for hot-reload.
# Production containers run as non-root with read-only filesystem.
# =============================================================================

services:
  backend-dev:
    image: node:22-slim
    working_dir: /app
    command: sh -c "npm install && npm run dev"
    volumes:
      - ./backend:/app
      - backend_node_modules:/app/node_modules
      - ./backend/data:/app/data
    env_file:
      - .env
    ports:
      - "3000:3000"
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD-SHELL", "node -e \"fetch('http://localhost:3000/health').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))\""]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  frontend-dev:
    image: node:22-slim
    working_dir: /app
    command: sh -c "npm install && npm run dev -- --host --port 5173"
    volumes:
      - ./frontend:/app
      - frontend_node_modules:/app/node_modules
    ports:
      - "5173:5173"
    security_opt:
      - no-new-privileges:true
    depends_on:
      - backend-dev

volumes:
  backend_node_modules:
  frontend_node_modules:
