# Run website in development mode
# $ docker compose -f website/compose.yml up --build

services:
  client:
    build:
      context: ./client
      dockerfile: Dockerfile
    ports:
      - "5173:5173"
    volumes:
      - ./client:/app
    environment:
      - NODE_ENV=development
    # override default command
    command: sh -c "npm i && npm run docs:dev -- --port 5173 --host"

  server:
    build:
      context: ./server
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    volumes:
      - ./server:/app
    environment:
      - NODE_ENV=development
      - PORT=8080
      # Unset bundled mode for local development (volume mount overwrites bundled files)
      - REPOMIX_WORKER_PATH=
      - REPOMIX_WASM_DIR=
      # Upstash-compatible local Redis for daily rate limiting
      - UPSTASH_REDIS_REST_URL=http://serverless-redis:80
      - UPSTASH_REDIS_REST_TOKEN=local-token
    depends_on:
      - serverless-redis
    # override default command
    command: sh -c "npm i && npm run dev"
    develop:
      watch:
        - action: sync+restart
          path: ./server
          target: /app

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

  serverless-redis:
    image: hiett/serverless-redis-http:latest
    ports:
      - "8079:80"
    environment:
      - SRH_MODE=env
      - SRH_TOKEN=local-token
      - SRH_CONNECTION_STRING=redis://redis:6379
    depends_on:
      - redis
