services:
  app:
    image: node:20-alpine
    working_dir: /app
    # Use pnpm since the project uses it, and run the next dev script directly
    command: sh -c "corepack enable pnpm && pnpm i && pnpm dev:next"
    volumes:
      - .:/app
    environment:
      NODE_ENV: development
      # Docker Internal Communication
      DIRECTUS_URL: http://directus:8055
      # Build / dependency installation
      NPM_TOKEN: ${NPM_TOKEN}
      CI: 'true'
    ports:
      - "3000:3000"
    labels:
      - "traefik.enable=true"
      # Clear all production-related TLS/Middleware settings for the main routers
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}.entrypoints=web"
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}.rule=Host(`${TRAEFIK_HOST:-mb-grid-solutions.localhost}`)"
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}.tls=false"
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}.middlewares="
      # Remove Gatekeeper for local dev simply by not defining it or overwriting?
      # Actually, gatekeeper is a separate service. We can keep it or ignore it.
      # But the app router normally points to gatekeeper middleware.
      # By clearing middlewares above, we bypass gatekeeper for local dev.

  directus:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}-directus.entrypoints=web"
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}-directus.rule=Host(`${DIRECTUS_HOST:-cms.mb-grid-solutions.localhost}`)"
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}-directus.tls=false"
      - "traefik.http.routers.${PROJECT_NAME:-mb-grid-solutions}-directus.middlewares="
    ports:
      - "8055:8055"
    environment:
      PUBLIC_URL: http://${DIRECTUS_HOST:-cms.mb-grid-solutions.localhost}
