version: '1'

projects:
  - name: affine
    environments:
      - name: production
        services:
          - type: web
            name: affine
            runtime: docker
            plan: standard
            # The Dockerfile adds a start script to ghcr.io/toeverything/affine:stable. It runs migrations and the server
            dockerfilePath: ./.render/Dockerfile
            dockerContext: ./.render
            healthCheckPath: /info
            disk:
              # Uploaded blobs (~/.affine/storage) and the generated private key
              # (~/.affine/config/private.key) must survive restarts.
              name: affine-data
              mountPath: /root/.affine
              sizeGB: 10
            envVars:
              - key: AFFINE_SERVER_PORT
                value: 10000
              - key: AFFINE_SERVER_HTTPS
                value: true
              - key: DATABASE_URL
                fromDatabase:
                  name: affine-postgres
                  property: connectionString
              - key: REDIS_SERVER_HOST
                fromService:
                  name: affine-keyvalue
                  type: keyvalue
                  property: host
              - key: REDIS_SERVER_PORT
                fromService:
                  name: affine-keyvalue
                  type: keyvalue
                  property: port

          - type: keyvalue
            name: affine-keyvalue
            plan: starter
            maxmemoryPolicy: noeviction
            ipAllowList: [] # internal connections only

        databases:
          - name: affine-postgres
            plan: basic-256mb
            postgresMajorVersion: '16'
            ipAllowList: [] # internal connections only