{
  "manifest_version": "1.0.0",
  "template": {
    "id": "082bc012-9f42-4eac-9447-55e68f1d84bb",
    "slug": "appwrite-1",
    "name": "Appwrite",
    "description": "Open-source Firebase alternative: auth, databases, storage, realtime.",
    "url": "https://railway.com/deploy/appwrite-1",
    "upstream": {
      "repo_url": "https://github.com/nomideusz/appwrite-railway"
    }
  },
  "services": [
    {
      "name": "appwrite",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "console",
      "source": {
        "image": "appwrite/console:8"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "worker-webhooks",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "gateway",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "worker-mails",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "task-maintenance",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "worker-audits",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "mongodb",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": false
    },
    {
      "name": "worker-databases",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "redis",
      "source": {
        "image": "redis:7-alpine"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": false
    },
    {
      "name": "postgresql",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/postgresql/18/data",
      "http": false
    },
    {
      "name": "realtime",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "worker-deletes",
      "source": {
        "repo": "https://github.com/nomideusz/appwrite-railway"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "appwrite",
      "description": "Port the service listens on and the healthcheck probes. Don't change.",
      "secret": false,
      "strategy": "default",
      "default": "80"
    },
    {
      "key": "_APP_DOMAIN",
      "service": "appwrite",
      "description": "Wired to the gateway's public domain. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "appwrite",
      "description": "Wired automatically to the mongodb service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "appwrite",
      "description": "Wired automatically to the mongodb service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "appwrite",
      "description": "Wired automatically to the redis service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_CONSOLE_DOMAIN",
      "service": "appwrite",
      "description": "Wired to the gateway's public domain. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "appwrite",
      "description": "Encryption key for stored secrets and sessions. Auto-generated. Never change it after deploy — existing encrypted data becomes unreadable.",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "_APP_CONSOLE_HOSTNAMES",
      "service": "appwrite",
      "description": "Wired to the gateway's public domain. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "appwrite",
      "description": "Wired automatically to the postgresql service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "appwrite",
      "description": "Wired automatically to the postgresql service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_BUCKET",
      "service": "appwrite",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_REGION",
      "service": "appwrite",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_SECRET",
      "service": "appwrite",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_DOCUMENTSDB",
      "service": "appwrite",
      "description": "Wired automatically to the mongodb service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DOMAIN_TARGET_CNAME",
      "service": "appwrite",
      "description": "Wired to the gateway's public domain. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_ENDPOINT",
      "service": "appwrite",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_ACCESS_KEY",
      "service": "appwrite",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DOMAIN",
      "service": "worker-webhooks",
      "description": "Public domain from the gateway service — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "worker-webhooks",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "worker-webhooks",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "worker-webhooks",
      "description": "Redis connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "worker-webhooks",
      "description": "Shared from the appwrite service. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "worker-webhooks",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "worker-webhooks",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_DOCUMENTSDB",
      "service": "worker-webhooks",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "PUBLIC_HOST",
      "service": "gateway",
      "description": "The gateway's own public domain, referenced by other services. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "CONSOLE_HOST",
      "service": "gateway",
      "description": "Private hostname of the API / console / realtime service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "APPWRITE_HOST",
      "service": "gateway",
      "description": "Private hostname of the API / console / realtime service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "REALTIME_HOST",
      "service": "gateway",
      "description": "Private hostname of the API / console / realtime service. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DOMAIN",
      "service": "worker-mails",
      "description": "Public domain from the gateway service — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "worker-mails",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "worker-mails",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "worker-mails",
      "description": "Redis connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "worker-mails",
      "description": "Shared from the appwrite service. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "worker-mails",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "worker-mails",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_DOCUMENTSDB",
      "service": "worker-mails",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "task-maintenance",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "task-maintenance",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "task-maintenance",
      "description": "Redis connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "task-maintenance",
      "description": "Shared from the appwrite service. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "task-maintenance",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "task-maintenance",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DOMAIN",
      "service": "worker-audits",
      "description": "Public domain from the gateway service — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "worker-audits",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "worker-audits",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "worker-audits",
      "description": "Redis connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "worker-audits",
      "description": "Shared from the appwrite service. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "worker-audits",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "worker-audits",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_DOCUMENTSDB",
      "service": "worker-audits",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO_INITDB_PASSWORD",
      "service": "mongodb",
      "description": "Password for the Appwrite database user. Auto-generated — no need to change.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "MONGO_INITDB_ROOT_PASSWORD",
      "service": "mongodb",
      "description": "MongoDB root password. Auto-generated — no need to change.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "_APP_DOMAIN",
      "service": "worker-databases",
      "description": "Public domain from the gateway service — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "worker-databases",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "worker-databases",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "worker-databases",
      "description": "Redis connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "worker-databases",
      "description": "Shared from the appwrite service. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "worker-databases",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "worker-databases",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_DOCUMENTSDB",
      "service": "worker-databases",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "POSTGRES_PASSWORD",
      "service": "postgresql",
      "description": "PostgreSQL password (vectors database). Auto-generated — no need to change.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "PORT",
      "service": "realtime",
      "description": "Port the service listens on and the healthcheck probes. Don't change.",
      "secret": false,
      "strategy": "default",
      "default": "80"
    },
    {
      "key": "_APP_DOMAIN",
      "service": "realtime",
      "description": "Public domain from the gateway service — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "realtime",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "realtime",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "realtime",
      "description": "Redis connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "realtime",
      "description": "Shared from the appwrite service. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "realtime",
      "description": " PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "realtime",
      "description": " PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_DOCUMENTSDB",
      "service": "realtime",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DOMAIN",
      "service": "worker-deletes",
      "description": "Public domain from the gateway service — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST",
      "service": "worker-deletes",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS",
      "service": "worker-deletes",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_REDIS_HOST",
      "service": "worker-deletes",
      "description": "Redis connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_OPENSSL_KEY_V1",
      "service": "worker-deletes",
      "description": "Shared from the appwrite service. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_VECTORSDB",
      "service": "worker-deletes",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_DB_PASS_VECTORSDB",
      "service": "worker-deletes",
      "description": "PostgreSQL connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_BUCKET",
      "service": "worker-deletes",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_REGION",
      "service": "worker-deletes",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_SECRET",
      "service": "worker-deletes",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_DB_HOST_DOCUMENTSDB",
      "service": "worker-deletes",
      "description": "MongoDB connection — wired automatically. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "_APP_STORAGE_S3_ENDPOINT",
      "service": "worker-deletes",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "_APP_STORAGE_S3_ACCESS_KEY",
      "service": "worker-deletes",
      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "appwrite-1"
      }
    },
    "cli": "railway deploy --template appwrite-1",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "082bc012-9f42-4eac-9447-55e68f1d84bb",
            "serializedConfig": {
              "buckets": {
                "36e5a18d-054d-4635-8346-5e487bc88cd6": {
                  "name": "storage"
                }
              },
              "services": {
                "0552a01e-6ac4-49cb-b0fe-8fb9fa8699a5": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "appwrite",
                  "deploy": {
                    "startCommand": "",
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/appwrite"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port the service listens on and the healthcheck probes. Don't change.",
                      "defaultValue": "80"
                    },
                    "_APP_DOMAIN": {
                      "isOptional": false,
                      "description": "Wired to the gateway's public domain. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "Wired automatically to the mongodb service. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "Wired automatically to the mongodb service. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Wired automatically to the redis service. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_CONSOLE_DOMAIN": {
                      "isOptional": false,
                      "description": "Wired to the gateway's public domain. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Encryption key for stored secrets and sessions. Auto-generated. Never change it after deploy — existing encrypted data becomes unreadable.",
                      "defaultValue": "{{_APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_CONSOLE_HOSTNAMES": {
                      "isOptional": false,
                      "description": "Wired to the gateway's public domain. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": "Wired automatically to the postgresql service. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": "Wired automatically to the postgresql service. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    },
                    "_APP_STORAGE_S3_BUCKET": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.BUCKET}}"
                    },
                    "_APP_STORAGE_S3_REGION": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.REGION}}"
                    },
                    "_APP_STORAGE_S3_SECRET": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.SECRET_ACCESS_KEY}}"
                    },
                    "_APP_DB_HOST_DOCUMENTSDB": {
                      "isOptional": false,
                      "description": "Wired automatically to the mongodb service. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DOMAIN_TARGET_CNAME": {
                      "isOptional": false,
                      "description": "Wired to the gateway's public domain. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_STORAGE_S3_ENDPOINT": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.ENDPOINT}}"
                    },
                    "_APP_STORAGE_S3_ACCESS_KEY": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.ACCESS_KEY_ID}}"
                    }
                  }
                },
                "06ece08e-5b7a-40e2-8dba-8b355f4404ea": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "console",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "appwrite/console:8"
                  },
                  "variables": {}
                },
                "088e0dd7-c0d1-4133-9fd4-b31e3918f641": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "worker-webhooks",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/worker-webhooks"
                  },
                  "variables": {
                    "_APP_DOMAIN": {
                      "isOptional": false,
                      "description": "Public domain from the gateway service — wired automatically. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis connection — wired automatically. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Shared from the appwrite service. Don't change.",
                      "defaultValue": "${{appwrite._APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    },
                    "_APP_DB_HOST_DOCUMENTSDB": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    }
                  }
                },
                "13ae7c09-ee71-45fb-9b29-9d420b1c1c64": {
                  "icon": "https://appwrite.io/assets/logomark/logo.svg",
                  "name": "gateway",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/gateway"
                  },
                  "variables": {
                    "PUBLIC_HOST": {
                      "isOptional": false,
                      "description": "The gateway's own public domain, referenced by other services. Don't change.",
                      "defaultValue": "${{RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "CONSOLE_HOST": {
                      "isOptional": false,
                      "description": "Private hostname of the API / console / realtime service. Don't change.",
                      "defaultValue": "${{console.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "APPWRITE_HOST": {
                      "isOptional": false,
                      "description": "Private hostname of the API / console / realtime service. Don't change.",
                      "defaultValue": "${{appwrite.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "REALTIME_HOST": {
                      "isOptional": false,
                      "description": "Private hostname of the API / console / realtime service. Don't change.",
                      "defaultValue": "${{realtime.RAILWAY_PRIVATE_DOMAIN}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "207e54a2-2228-4c4a-bbed-479012d990de": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "worker-mails",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/worker-mails"
                  },
                  "variables": {
                    "_APP_DOMAIN": {
                      "isOptional": false,
                      "description": "Public domain from the gateway service — wired automatically. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis connection — wired automatically. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Shared from the appwrite service. Don't change.",
                      "defaultValue": "${{appwrite._APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    },
                    "_APP_DB_HOST_DOCUMENTSDB": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    }
                  }
                },
                "3003e214-7c9f-4d0d-9dcb-32f1cbaef4c7": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "task-maintenance",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/task-maintenance"
                  },
                  "variables": {
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis connection — wired automatically. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Shared from the appwrite service. Don't change.",
                      "defaultValue": "${{appwrite._APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    }
                  }
                },
                "46ec87bb-3484-4f8d-bf07-a80e96dc3e3e": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "worker-audits",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/worker-audits"
                  },
                  "variables": {
                    "_APP_DOMAIN": {
                      "isOptional": false,
                      "description": "Public domain from the gateway service — wired automatically. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis connection — wired automatically. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Shared from the appwrite service. Don't change.",
                      "defaultValue": "${{appwrite._APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    },
                    "_APP_DB_HOST_DOCUMENTSDB": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    }
                  }
                },
                "8ed5f51f-b666-4565-97fd-c88591d2f4c2": {
                  "icon": "https://avatars.githubusercontent.com/u/45120?s=200&v=4",
                  "name": "mongodb",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/mongodb"
                  },
                  "variables": {
                    "MONGO_INITDB_PASSWORD": {
                      "isOptional": false,
                      "description": "Password for the Appwrite database user. Auto-generated — no need to change.",
                      "defaultValue": "{{MONGO_INITDB_PASSWORD}}"
                    },
                    "MONGO_INITDB_ROOT_PASSWORD": {
                      "isOptional": false,
                      "description": "MongoDB root password. Auto-generated — no need to change.",
                      "defaultValue": "{{MONGO_INITDB_ROOT_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "8ed5f51f-b666-4565-97fd-c88591d2f4c2": {
                      "mountPath": "/data"
                    }
                  }
                },
                "a91e1596-80b0-4d0e-94f2-0a177475003b": {
                  "icon": "https://images.icon-icons.com/2550/PNG/512/database_icon_152641.png",
                  "name": "worker-databases",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/worker-databases"
                  },
                  "variables": {
                    "_APP_DOMAIN": {
                      "isOptional": false,
                      "description": "Public domain from the gateway service — wired automatically. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis connection — wired automatically. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Shared from the appwrite service. Don't change.",
                      "defaultValue": "${{appwrite._APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    },
                    "_APP_DB_HOST_DOCUMENTSDB": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    }
                  }
                },
                "a93ad3ed-0af7-4f6f-ab8b-0b4fdbebd942": {
                  "icon": "https://media.ffycdn.net/us/redis/MAQLWqeBKmrz2TFQDmA7.svg?mod=v1/resize=2400",
                  "name": "redis",
                  "deploy": {
                    "startCommand": "redis-server --maxmemory 512mb --maxmemory-policy allkeys-lru --maxmemory-samples 5",
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "redis:7-alpine"
                  },
                  "variables": {},
                  "volumeMounts": {
                    "a93ad3ed-0af7-4f6f-ab8b-0b4fdbebd942": {
                      "mountPath": "/data"
                    }
                  },
                  "haTemplateCode": "redis-ha",
                  "haConversionConfig": {
                    "edge": {
                      "label": "Reverse Proxies",
                      "options": [
                        1,
                        2
                      ],
                      "nodeLabel": "HAProxy",
                      "description": "HAProxy instances routing writes to the primary",
                      "defaultValue": 2
                    },
                    "replica": {
                      "label": "Redis Replicas",
                      "options": [
                        2,
                        3,
                        4,
                        5
                      ],
                      "nodeLabel": "Redis",
                      "description": "Nodes running Redis + colocated Sentinel",
                      "defaultValue": 2
                    },
                    "internal": null,
                    "description": "This will convert your Redis instance to an HA cluster with Sentinel failover and HAProxy routing to the primary."
                  }
                },
                "cbd6397e-ba20-408f-a618-24dead902e06": {
                  "icon": "https://www.postgresql.org/media/img/about/press/elephant.png",
                  "name": "postgresql",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/postgresql"
                  },
                  "variables": {
                    "POSTGRES_PASSWORD": {
                      "isOptional": false,
                      "description": "PostgreSQL password (vectors database). Auto-generated — no need to change.",
                      "defaultValue": "{{POSTGRES_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "cbd6397e-ba20-408f-a618-24dead902e06": {
                      "mountPath": "/var/lib/postgresql/18/data"
                    }
                  }
                },
                "e170df8b-4705-44fe-bd7c-61c8ae6b10ef": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "realtime",
                  "deploy": {
                    "startCommand": "",
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/realtime"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port the service listens on and the healthcheck probes. Don't change.",
                      "defaultValue": "80"
                    },
                    "_APP_DOMAIN": {
                      "isOptional": false,
                      "description": "Public domain from the gateway service — wired automatically. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis connection — wired automatically. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Shared from the appwrite service. Don't change.",
                      "defaultValue": "${{appwrite._APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": " PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": " PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    },
                    "_APP_DB_HOST_DOCUMENTSDB": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    }
                  }
                },
                "f9b4e51e-2a02-490b-9249-991347fbc69c": {
                  "icon": "https://devicons.railway.com/i/railway-light.svg",
                  "name": "worker-deletes",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/nomideusz/appwrite-railway",
                    "rootDirectory": "/worker-deletes"
                  },
                  "variables": {
                    "_APP_DOMAIN": {
                      "isOptional": false,
                      "description": "Public domain from the gateway service — wired automatically. Don't change.",
                      "defaultValue": "${{gateway.PUBLIC_HOST}}"
                    },
                    "_APP_DB_HOST": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_DB_PASS": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.MONGO_INITDB_PASSWORD}}"
                    },
                    "_APP_REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis connection — wired automatically. Don't change.",
                      "defaultValue": "${{redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_OPENSSL_KEY_V1": {
                      "isOptional": false,
                      "description": "Shared from the appwrite service. Don't change.",
                      "defaultValue": "${{appwrite._APP_OPENSSL_KEY_V1}}"
                    },
                    "_APP_DB_HOST_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.RAILWAY_PRIVATE_DOMAIN}}:5432"
                    },
                    "_APP_DB_PASS_VECTORSDB": {
                      "isOptional": false,
                      "description": "PostgreSQL connection — wired automatically. Don't change.",
                      "defaultValue": "${{postgresql.POSTGRES_PASSWORD}}"
                    },
                    "_APP_STORAGE_S3_BUCKET": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.BUCKET}}"
                    },
                    "_APP_STORAGE_S3_REGION": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.REGION}}"
                    },
                    "_APP_STORAGE_S3_SECRET": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.SECRET_ACCESS_KEY}}"
                    },
                    "_APP_DB_HOST_DOCUMENTSDB": {
                      "isOptional": false,
                      "description": "MongoDB connection — wired automatically. Don't change.",
                      "defaultValue": "${{mongodb.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "_APP_STORAGE_S3_ENDPOINT": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.ENDPOINT}}"
                    },
                    "_APP_STORAGE_S3_ACCESS_KEY": {
                      "isOptional": false,
                      "description": "S3 credentials from the bundled Railway bucket. Don't change.",
                      "defaultValue": "${{storage.ACCESS_KEY_ID}}"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "gateway",
      "method": "GET",
      "path": "/health",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 13,
    "needs_volume": true
  },
  "generated_at": "2026-09-10T16:14:52.212Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-09T02:16:41.022Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_d3b3d419419f4b12a63e",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "healthcheck",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 217,
    "typical_build_seconds": 112,
    "typical_start_seconds": 10,
    "slowest_service": "worker-mails"
  }
}
