meritocrab 0.1.4

A reputation system for open source repositories using LLM-based contribution evaluation
Documentation
version: '3.8'

services:
  postgres:
    image: postgres:16-alpine
    container_name: meritocrab-postgres
    environment:
      POSTGRES_USER: meritocrab
      POSTGRES_PASSWORD: meritocrab_password
      POSTGRES_DB: meritocrab
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U meritocrab"]
      interval: 5s
      timeout: 5s
      retries: 5

  server:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: meritocrab-server
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      # Server configuration
      SERVER_HOST: 0.0.0.0
      SERVER_PORT: 3000

      # Database configuration
      DATABASE_URL: postgres://meritocrab:meritocrab_password@postgres:5432/meritocrab
      DATABASE_MAX_CONNECTIONS: 10

      # GitHub configuration (override with your values)
      GITHUB_APP_ID: ${GITHUB_APP_ID:-123456}
      GITHUB_INSTALLATION_ID: ${GITHUB_INSTALLATION_ID:-7654321}
      GITHUB_WEBHOOK_SECRET: ${GITHUB_WEBHOOK_SECRET:-development_webhook_secret}
      GITHUB_PRIVATE_KEY_PATH: /app/private-key.pem
      GITHUB_OAUTH_CLIENT_ID: ${GITHUB_OAUTH_CLIENT_ID:-your_client_id}
      GITHUB_OAUTH_CLIENT_SECRET: ${GITHUB_OAUTH_CLIENT_SECRET:-your_client_secret}
      GITHUB_OAUTH_REDIRECT_URL: ${GITHUB_OAUTH_REDIRECT_URL:-http://localhost:3000/auth/callback}

      # LLM configuration
      LLM_PROVIDER: ${LLM_PROVIDER:-mock}
      LLM_API_KEY: ${LLM_API_KEY:-}
      LLM_MODEL: ${LLM_MODEL:-claude-3-5-sonnet-20241022}

      # Credit configuration
      CREDIT_STARTING: 100
      CREDIT_PR_THRESHOLD: 50
      CREDIT_BLACKLIST_THRESHOLD: 0

      # Rate limiting
      MAX_CONCURRENT_LLM_EVALS: 5

      # Logging
      RUST_LOG: ${RUST_LOG:-info}
    ports:
      - "3000:3000"
    volumes:
      # Mount GitHub App private key (you need to provide this)
      - ${GITHUB_PRIVATE_KEY_FILE:-./test-private-key.pem}:/app/private-key.pem:ro
      # Optional: mount custom config
      - ${CONFIG_FILE:-./config.toml}:/app/config.toml:ro
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 30s
    restart: unless-stopped

volumes:
  postgres_data: