services:
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: stiftung_dev
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres_dev
    volumes:
      - dbdata_dev:/var/lib/postgresql/data
    ports:
      - "5433:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d stiftung_dev"]
      interval: 10s
      timeout: 5s
      retries: 5

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

  web:
    build: ./app
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
    environment:
      - POSTGRES_DB=stiftung_dev
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres_dev
      - DB_HOST=db
      - DB_PORT=5432
      - DJANGO_SECRET_KEY=dev-secret-key-not-for-production
      - DJANGO_DEBUG=1
      - DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
      - LANGUAGE_CODE=de
      - TIME_ZONE=Europe/Berlin
      - REDIS_URL=redis://redis:6379/0
      - PAPERLESS_API_URL=http://paperless:8000
      - PAPERLESS_API_TOKEN=d477152aca264ea00620910ac09a06f0a4faaecc
      - PAPERLESS_REQUIRED_TAG=Stiftung_Destinatäre
      - PAPERLESS_LAND_TAG=Stiftung_Land_und_Pächter
      - PAPERLESS_ADMIN_TAG=Stiftung_Administration
      - PAPERLESS_DESTINATAERE_TAG_ID=1
      - PAPERLESS_LAND_TAG_ID=3
      - PAPERLESS_ADMIN_TAG_ID=2
    ports:
      - "8081:8000"
    volumes:
      - ./app:/app
    command: ["python", "manage.py", "runserver", "0.0.0.0:8000"]

  paperless:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    ports:
      - "8082:8000"
    environment:
      - PAPERLESS_REDIS=redis://redis:6379
      - PAPERLESS_DBHOST=db
      - PAPERLESS_DBPORT=5432
      - PAPERLESS_DBNAME=stiftung_dev
      - PAPERLESS_DBUSER=postgres
      - PAPERLESS_DBPASS=postgres_dev
      - PAPERLESS_SECRET_KEY=dev-paperless-secret-key
      - PAPERLESS_URL=http://localhost:8082
      - PAPERLESS_ALLOWED_HOSTS=localhost,127.0.0.1
      - PAPERLESS_CORS_ALLOWED_HOSTS=http://localhost:8082,http://localhost:8081
      - PAPERLESS_ADMIN_USER=admin
      - PAPERLESS_ADMIN_PASSWORD=admin123
      - PAPERLESS_ADMIN_MAIL=admin@localhost
    volumes:
      - paperless_data_dev:/usr/src/paperless/data
      - paperless_media_dev:/usr/src/paperless/media
      - paperless_export_dev:/usr/src/paperless/export
      - paperless_consume_dev:/usr/src/paperless/consume
    depends_on:
      - db
      - redis

volumes:
  dbdata_dev:
  paperless_data_dev:
  paperless_media_dev:
  paperless_export_dev:
  paperless_consume_dev:
