{
  "manifest_version": "1.0.0",
  "template": {
    "id": "62b62bc9-fff6-4ea6-b954-f6559714428e",
    "slug": "typebot",
    "name": "Typebot",
    "description": "Build advanced chatbots visually",
    "url": "https://railway.com/deploy/typebot",
    "upstream": {
      "repo_url": "https://github.com/railwayapp-templates/minio"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "Valkey",
      "source": {
        "image": "valkey/valkey:latest"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "tcp_ports": [
        6379
      ],
      "http": false
    },
    {
      "name": "MinIO",
      "source": {
        "repo": "https://github.com/railwayapp-templates/minio"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": true
    },
    {
      "name": "Console",
      "source": {
        "repo": "https://github.com/railwayapp-templates/minio-console"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "Postgres",
      "source": {
        "image": "ghcr.io/railwayapp-templates/postgres-ssl:16"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/postgresql/data",
      "tcp_ports": [
        5432
      ],
      "http": false
    },
    {
      "name": "Builder",
      "source": {
        "image": "baptistearno/typebot-builder:latest"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "Viewer",
      "source": {
        "image": "baptistearno/typebot-viewer:latest"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "MinIO Bucket Creator",
      "source": {
        "image": "minio/mc:RELEASE.2025-04-16T18-13-26Z"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "VALKEY_URL",
      "service": "Valkey",
      "description": "Private database URL",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "VALKEY_HOST",
      "service": "Valkey",
      "description": "Private hostname",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "VALKEY_PORT",
      "service": "Valkey",
      "description": "Private port",
      "secret": true,
      "strategy": "default",
      "default": "6379"
    },
    {
      "key": "VALKEY_USER",
      "service": "Valkey",
      "description": "Default username",
      "secret": true,
      "strategy": "default",
      "default": "default"
    },
    {
      "key": "VALKEY_PASSWORD",
      "service": "Valkey",
      "description": "Authentication password",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "VALKEY_PUBLIC_URL",
      "service": "Valkey",
      "description": "Public database URL",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "VALKEY_PUBLIC_HOST",
      "service": "Valkey",
      "description": "Public hostname",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "VALKEY_PUBLIC_PORT",
      "service": "Valkey",
      "description": "Public port",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PORT",
      "service": "MinIO",
      "description": "MinIO port",
      "secret": false,
      "strategy": "default",
      "default": "9000"
    },
    {
      "key": "MINIO_BUCKET",
      "service": "MinIO",
      "description": "MinIO default bucket",
      "secret": false,
      "strategy": "default",
      "default": "typebot"
    },
    {
      "key": "MINIO_ROOT_USER",
      "service": "MinIO",
      "description": "MinIO root username",
      "secret": false,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "MINIO_ROOT_PASSWORD",
      "service": "MinIO",
      "description": "MinIO secret key",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "PORT",
      "service": "Console",
      "description": "The port the Console runs on internally",
      "secret": false,
      "strategy": "default",
      "default": "9090"
    },
    {
      "key": "PASSWORD",
      "service": "Console",
      "description": "The password to login to the Console",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "USERNAME",
      "service": "Console",
      "description": "The username to login to the Console",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "CONSOLE_MINIO_SERVER",
      "service": "Console",
      "description": "The domain of the Minio server",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PGDATA",
      "service": "Postgres",
      "description": "Location where the database will be initialized",
      "secret": false,
      "strategy": "default",
      "default": "/var/lib/postgresql/data/pgdata"
    },
    {
      "key": "PGHOST",
      "service": "Postgres",
      "description": "Railway Private Domain Name.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "PGPORT",
      "service": "Postgres",
      "description": "Port to connect to Postgres.",
      "secret": false,
      "strategy": "default",
      "default": "5432"
    },
    {
      "key": "PGUSER",
      "service": "Postgres",
      "description": "Required variable for Data panel",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PGDATABASE",
      "service": "Postgres",
      "description": "Required variable for the data panel.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PGPASSWORD",
      "service": "Postgres",
      "description": "Required variable for Data panel",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "POSTGRES_DB",
      "service": "Postgres",
      "description": "Default database created when image is started.",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "DATABASE_URL",
      "service": "Postgres",
      "description": "URL to connect to Postgres database.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "POSTGRES_USER",
      "service": "Postgres",
      "description": "User to connect to Postgres DB",
      "secret": false,
      "strategy": "default",
      "default": "postgres"
    },
    {
      "key": "SSL_CERT_DAYS",
      "service": "Postgres",
      "description": "SSL certificate expiry in days.",
      "secret": false,
      "strategy": "default",
      "default": "820"
    },
    {
      "key": "POSTGRES_PASSWORD",
      "service": "Postgres",
      "description": "Password to connect to DB",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "DATABASE_PUBLIC_URL",
      "service": "Postgres",
      "description": "Public URL to connect to Postgres database, used by the Data panel.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "RAILWAY_DEPLOYMENT_DRAINING_SECONDS",
      "service": "Postgres",
      "description": "Allow Postgres to cleanly shut down",
      "secret": false,
      "strategy": "default",
      "default": "60"
    },
    {
      "key": "PORT",
      "service": "Builder",
      "description": "Provide a value for PORT.",
      "secret": false,
      "strategy": "default",
      "default": "3000"
    },
    {
      "key": "SCOPE",
      "service": "Builder",
      "description": "Set the correct scope, used when deploying from the repository",
      "secret": false,
      "strategy": "default",
      "default": "builder"
    },
    {
      "key": "S3_PORT",
      "service": "Builder",
      "description": "S3 Host port number",
      "secret": false,
      "strategy": "default",
      "default": "443"
    },
    {
      "key": "HOSTNAME",
      "service": "Builder",
      "description": "Provide a value for HOSTNAME.",
      "secret": false,
      "strategy": "default",
      "default": "0.0.0.0"
    },
    {
      "key": "REDIS_URL",
      "service": "Builder",
      "description": "Used to - Rate limit the sign in requests based on user IP & Enable multiple media upload on WhatsApp",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "S3_BUCKET",
      "service": "Builder",
      "description": "Name of the bucket where assets will be uploaded in",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_HOST",
      "service": "Builder",
      "description": "SMTP host. Gmail is known to not work",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "SMTP_PORT",
      "service": "Builder",
      "description": "SMTP port",
      "secret": false,
      "strategy": "default",
      "default": "465"
    },
    {
      "key": "ADMIN_EMAIL",
      "service": "Builder",
      "description": "The email that will get an UNLIMITED plan on user creation. The associated user will be able to bypass database rules.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "S3_ENDPOINT",
      "service": "Builder",
      "description": "S3 endpoint",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "SMTP_SECURE",
      "service": "Builder",
      "description": "If true the connection will use TLS when connecting to server. If false (the default) then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATABASE_URL",
      "service": "Builder",
      "description": "The database URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "NEXTAUTH_URL",
      "service": "Builder",
      "description": "The builder base URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "S3_ACCESS_KEY",
      "service": "Builder",
      "description": "S3 access key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "S3_SECRET_KEY",
      "service": "Builder",
      "description": "S3 key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_PASSWORD",
      "service": "Builder",
      "description": "SMTP password",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "SMTP_USERNAME",
      "service": "Builder",
      "description": "SMTP username, This email doubles as the email used for the admin user, the admin user will get an unlimited plan",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "DISABLE_SIGNUP",
      "service": "Builder",
      "description": "Disable new user sign ups. Invited users are still able to sign up",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ENCRYPTION_SECRET",
      "service": "Builder",
      "description": "A key used to encrypt sensitive data",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "SMTP_AUTH_DISABLED",
      "service": "Builder",
      "description": "To disable the authentication by email",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "NEXT_PUBLIC_SMTP_FROM",
      "service": "Builder",
      "description": "SMTP from email address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "DEFAULT_WORKSPACE_PLAN",
      "service": "Builder",
      "description": "Default workspace plan on user creation or when a user creates a new workspace. Possible values are `FREE`, `STARTER`, `PRO`, `LIFETIME`, `UNLIMITED`",
      "secret": false,
      "strategy": "default",
      "default": "UNLIMITED"
    },
    {
      "key": "NEXT_PUBLIC_VIEWER_URL",
      "service": "Builder",
      "description": "The viewer base URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE",
      "service": "Builder",
      "description": "Limits the size of each file in megabytes that can be uploaded in the bots",
      "secret": false,
      "strategy": "default",
      "default": "10"
    },
    {
      "key": "PORT",
      "service": "Viewer",
      "description": "Provide a value for PORT.",
      "secret": false,
      "strategy": "default",
      "default": "3000"
    },
    {
      "key": "SCOPE",
      "service": "Viewer",
      "description": "Set the correct scope, used when deploying from the repository",
      "secret": false,
      "strategy": "default",
      "default": "viewer"
    },
    {
      "key": "S3_PORT",
      "service": "Viewer",
      "description": "S3 Host port number",
      "secret": false,
      "strategy": "default",
      "default": "443"
    },
    {
      "key": "HOSTNAME",
      "service": "Viewer",
      "description": "Provide a value for HOSTNAME.",
      "secret": false,
      "strategy": "default",
      "default": "0.0.0.0"
    },
    {
      "key": "REDIS_URL",
      "service": "Viewer",
      "description": "Used to - Rate limit the sign in requests based on user IP & Enable multiple media upload on WhatsApp",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "S3_BUCKET",
      "service": "Viewer",
      "description": "Name of the bucket where assets will be uploaded in",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_HOST",
      "service": "Viewer",
      "description": "SMTP host. (i.e. smtp.host.com)",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_PORT",
      "service": "Viewer",
      "description": "SMTP port",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ADMIN_EMAIL",
      "service": "Viewer",
      "description": "The email that will get an UNLIMITED plan on user creation. The associated user will be able to bypass database rules.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "S3_ENDPOINT",
      "service": "Viewer",
      "description": "S3 endpoint",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "SMTP_SECURE",
      "service": "Viewer",
      "description": "If true the connection will use TLS when connecting to server. If false (the default) then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "DATABASE_URL",
      "service": "Viewer",
      "description": "The database URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "NEXTAUTH_URL",
      "service": "Viewer",
      "description": "The builder base URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "S3_ACCESS_KEY",
      "service": "Viewer",
      "description": "S3 access key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "S3_SECRET_KEY",
      "service": "Viewer",
      "description": "S3 Key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_PASSWORD",
      "service": "Viewer",
      "description": "SMTP password",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_USERNAME",
      "service": "Viewer",
      "description": "SMTP username",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ENCRYPTION_SECRET",
      "service": "Viewer",
      "description": "A key used to encrypt sensitive data",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_AUTH_DISABLED",
      "service": "Viewer",
      "description": "To disable the authentication by email",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "NEXT_PUBLIC_SMTP_FROM",
      "service": "Viewer",
      "description": "SMTP from email address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "NEXT_PUBLIC_VIEWER_URL",
      "service": "Viewer",
      "description": "The viewer base URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "MINIO_BUCKET",
      "service": "MinIO Bucket Creator",
      "description": "Provide a value for MINIO_BUCKET.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MINIO_ENDPOINT",
      "service": "MinIO Bucket Creator",
      "description": "Provide a value for MINIO_ENDPOINT.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MINIO_ROOT_USER",
      "service": "MinIO Bucket Creator",
      "description": "Provide a value for MINIO_ROOT_USER.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MINIO_ROOT_PASSWORD",
      "service": "MinIO Bucket Creator",
      "description": "Provide a value for MINIO_ROOT_PASSWORD.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "typebot"
      }
    },
    "cli": "railway deploy --template typebot",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "62b62bc9-fff6-4ea6-b954-f6559714428e",
            "serializedConfig": {
              "services": {
                "478bc9e7-0a3b-465e-a67f-3bc0df41762d": {
                  "icon": "https://res.cloudinary.com/h5kvzw/image/upload/v1713278076/Valkey-logo_yrnlsx.svg",
                  "name": "Valkey",
                  "build": {},
                  "deploy": {
                    "startCommand": "/bin/sh -c \"exec docker-entrypoint.sh valkey-server --port ${VALKEY_PORT} --requirepass ${VALKEY_PASSWORD}\""
                  },
                  "source": {
                    "image": "valkey/valkey:latest"
                  },
                  "variables": {
                    "VALKEY_URL": {
                      "description": "Private database URL",
                      "defaultValue": "redis://${{VALKEY_USER}}:${{VALKEY_PASSWORD}}@${{VALKEY_HOST}}:${{VALKEY_PORT}}"
                    },
                    "VALKEY_HOST": {
                      "description": "Private hostname",
                      "defaultValue": "${{RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "VALKEY_PORT": {
                      "description": "Private port",
                      "defaultValue": "6379"
                    },
                    "VALKEY_USER": {
                      "description": "Default username",
                      "defaultValue": "default"
                    },
                    "VALKEY_PASSWORD": {
                      "description": "Authentication password",
                      "defaultValue": "{{VALKEY_PASSWORD}}"
                    },
                    "VALKEY_PUBLIC_URL": {
                      "description": "Public database URL",
                      "defaultValue": "redis://${{VALKEY_USER}}:${{VALKEY_PASSWORD}}@${{VALKEY_PUBLIC_HOST}}:${{VALKEY_PUBLIC_PORT}}"
                    },
                    "VALKEY_PUBLIC_HOST": {
                      "description": "Public hostname",
                      "defaultValue": "${{RAILWAY_TCP_PROXY_DOMAIN}}"
                    },
                    "VALKEY_PUBLIC_PORT": {
                      "description": "Public port",
                      "defaultValue": "${{RAILWAY_TCP_PROXY_PORT}}"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "6379": {}
                    }
                  },
                  "volumeMounts": {
                    "478bc9e7-0a3b-465e-a67f-3bc0df41762d": {
                      "mountPath": "/data"
                    }
                  }
                },
                "5b0a134c-0a69-48af-82f2-d45110ac5e48": {
                  "icon": "https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png",
                  "name": "MinIO",
                  "build": {},
                  "deploy": {
                    "startCommand": "/bin/sh -c \"exec minio server --address [::]:$PORT $RAILWAY_VOLUME_MOUNT_PATH\"",
                    "healthcheckPath": "/minio/health/ready"
                  },
                  "source": {
                    "repo": "railwayapp-templates/minio",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "MinIO port",
                      "defaultValue": "9000"
                    },
                    "MINIO_BUCKET": {
                      "isOptional": false,
                      "description": "MinIO default bucket",
                      "defaultValue": "typebot"
                    },
                    "MINIO_ROOT_USER": {
                      "isOptional": false,
                      "description": "MinIO root username",
                      "defaultValue": "{{MINIO_ROOT_USER}}"
                    },
                    "MINIO_ROOT_PASSWORD": {
                      "isOptional": false,
                      "description": "MinIO secret key",
                      "defaultValue": "{{MINIO_ROOT_PASSWORD}}"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  },
                  "volumeMounts": {
                    "5b0a134c-0a69-48af-82f2-d45110ac5e48": {
                      "mountPath": "/data"
                    }
                  }
                },
                "69773069-66fb-4f40-9696-609e1f05f474": {
                  "icon": "https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png",
                  "name": "Console",
                  "deploy": {
                    "startCommand": "/bin/sh -c \"exec console server --host 0.0.0.0 --port $PORT\"",
                    "healthcheckPath": "/login"
                  },
                  "source": {
                    "repo": "railwayapp-templates/minio-console",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "description": "The port the Console runs on internally",
                      "defaultValue": "9090"
                    },
                    "PASSWORD": {
                      "description": "The password to login to the Console",
                      "defaultValue": "${{MinIO.MINIO_ROOT_PASSWORD}}"
                    },
                    "USERNAME": {
                      "description": "The username to login to the Console",
                      "defaultValue": "${{MinIO.MINIO_ROOT_USER}}"
                    },
                    "CONSOLE_MINIO_SERVER": {
                      "description": "The domain of the Minio server",
                      "defaultValue": "${{MinIO.MINIO_PRIVATE_ENDPOINT}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "7e27ba8a-ac7f-4f4c-827a-b4368b00ed55": {
                  "icon": "https://devicons.railway.app/i/postgresql.svg",
                  "name": "Postgres",
                  "build": {},
                  "deploy": {},
                  "source": {
                    "image": "ghcr.io/railwayapp-templates/postgres-ssl:16"
                  },
                  "variables": {
                    "PGDATA": {
                      "isOptional": false,
                      "description": "Location where the database will be initialized",
                      "defaultValue": "/var/lib/postgresql/data/pgdata"
                    },
                    "PGHOST": {
                      "isOptional": false,
                      "description": "Railway Private Domain Name.",
                      "defaultValue": "${{RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "PGPORT": {
                      "isOptional": false,
                      "description": "Port to connect to Postgres.",
                      "defaultValue": "5432"
                    },
                    "PGUSER": {
                      "isOptional": false,
                      "description": "Required variable for Data panel",
                      "defaultValue": "${{ POSTGRES_USER }}"
                    },
                    "PGDATABASE": {
                      "isOptional": false,
                      "description": "Required variable for the data panel.",
                      "defaultValue": "${{POSTGRES_DB}}"
                    },
                    "PGPASSWORD": {
                      "isOptional": false,
                      "description": "Required variable for Data panel",
                      "defaultValue": "${{POSTGRES_PASSWORD}}"
                    },
                    "POSTGRES_DB": {
                      "isOptional": false,
                      "description": "Default database created when image is started.",
                      "defaultValue": "railway"
                    },
                    "DATABASE_URL": {
                      "isOptional": false,
                      "description": "URL to connect to Postgres database.",
                      "defaultValue": "postgresql://${{PGUSER}}:${{POSTGRES_PASSWORD}}@${{RAILWAY_PRIVATE_DOMAIN}}:5432/${{PGDATABASE}}"
                    },
                    "POSTGRES_USER": {
                      "isOptional": false,
                      "description": "User to connect to Postgres DB",
                      "defaultValue": "postgres"
                    },
                    "SSL_CERT_DAYS": {
                      "isOptional": true,
                      "description": "SSL certificate expiry in days.",
                      "defaultValue": "820"
                    },
                    "POSTGRES_PASSWORD": {
                      "isOptional": false,
                      "description": "Password to connect to DB",
                      "defaultValue": "{{POSTGRES_PASSWORD}}"
                    },
                    "DATABASE_PUBLIC_URL": {
                      "description": "Public URL to connect to Postgres database, used by the Data panel.",
                      "defaultValue": "postgresql://${{PGUSER}}:${{POSTGRES_PASSWORD}}@${{RAILWAY_TCP_PROXY_DOMAIN}}:${{RAILWAY_TCP_PROXY_PORT}}/${{PGDATABASE}}"
                    },
                    "RAILWAY_DEPLOYMENT_DRAINING_SECONDS": {
                      "isOptional": false,
                      "description": "Allow Postgres to cleanly shut down",
                      "defaultValue": "60"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "5432": {}
                    },
                    "serviceDomains": {}
                  },
                  "volumeMounts": {
                    "7e27ba8a-ac7f-4f4c-827a-b4368b00ed55": {
                      "mountPath": "/var/lib/postgresql/data"
                    }
                  },
                  "haTemplateCode": "postgres-ha",
                  "haConversionConfig": {
                    "edge": {
                      "label": "Reverse Proxy",
                      "options": [
                        2,
                        3,
                        4,
                        5
                      ],
                      "nodeLabel": "HAProxy",
                      "description": "Routes traffic to the primary",
                      "defaultValue": 3
                    },
                    "replica": {
                      "label": "Replicas",
                      "options": [
                        2,
                        3,
                        4,
                        5,
                        6,
                        7
                      ],
                      "nodeLabel": "Postgres",
                      "description": "Streaming replicas for automatic failover",
                      "defaultValue": 2
                    },
                    "internal": {
                      "label": "Coordinator Nodes",
                      "options": [
                        3,
                        5,
                        7,
                        9
                      ],
                      "nodeLabel": "etcd",
                      "defaultValue": 3
                    },
                    "description": "This will convert your Postgres database to an HA cluster with Patroni failover and etcd consensus."
                  }
                },
                "801d3882-0405-40d4-8897-7ce13d9effaf": {
                  "icon": "https://raw.githubusercontent.com/baptisteArno/typebot.io/b0d1b113259c4e820f0b5e45d3b2d45df5776513/apps/docs/static/img/logo.svg",
                  "name": "Builder",
                  "build": {},
                  "deploy": {
                    "startCommand": "",
                    "healthcheckPath": "/signin"
                  },
                  "source": {
                    "image": "baptistearno/typebot-builder:latest"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "defaultValue": "3000"
                    },
                    "SCOPE": {
                      "isOptional": false,
                      "description": "Set the correct scope, used when deploying from the repository",
                      "defaultValue": "builder"
                    },
                    "S3_PORT": {
                      "isOptional": false,
                      "description": "S3 Host port number",
                      "defaultValue": "443"
                    },
                    "HOSTNAME": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "0.0.0.0"
                    },
                    "REDIS_URL": {
                      "isOptional": false,
                      "description": "Used to - Rate limit the sign in requests based on user IP & Enable multiple media upload on WhatsApp",
                      "defaultValue": "${{Valkey.VALKEY_URL}}?family=0"
                    },
                    "S3_BUCKET": {
                      "isOptional": false,
                      "description": "Name of the bucket where assets will be uploaded in",
                      "defaultValue": "${{MinIO.MINIO_BUCKET}}"
                    },
                    "SMTP_HOST": {
                      "isOptional": false,
                      "description": "SMTP host. Gmail is known to not work",
                      "defaultValue": "{{SMTP_HOST}}"
                    },
                    "SMTP_PORT": {
                      "isOptional": false,
                      "description": "SMTP port",
                      "defaultValue": "465"
                    },
                    "ADMIN_EMAIL": {
                      "isOptional": false,
                      "description": "The email that will get an UNLIMITED plan on user creation. The associated user will be able to bypass database rules.",
                      "defaultValue": "${{SMTP_USERNAME}}"
                    },
                    "S3_ENDPOINT": {
                      "isOptional": false,
                      "description": "S3 endpoint",
                      "defaultValue": "${{MinIO.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "SMTP_SECURE": {
                      "isOptional": false,
                      "description": "If true the connection will use TLS when connecting to server. If false (the default) then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false",
                      "defaultValue": "true"
                    },
                    "DATABASE_URL": {
                      "isOptional": false,
                      "description": "The database URL",
                      "defaultValue": "${{Postgres.DATABASE_URL}}"
                    },
                    "NEXTAUTH_URL": {
                      "isOptional": false,
                      "description": "The builder base URL",
                      "defaultValue": "https://${{RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "S3_ACCESS_KEY": {
                      "isOptional": false,
                      "description": "S3 access key",
                      "defaultValue": "${{MinIO.MINIO_ROOT_USER}}"
                    },
                    "S3_SECRET_KEY": {
                      "isOptional": false,
                      "description": "S3 key",
                      "defaultValue": "${{MinIO.MINIO_ROOT_PASSWORD}}"
                    },
                    "SMTP_PASSWORD": {
                      "isOptional": false,
                      "description": "SMTP password",
                      "defaultValue": "{{SMTP_PASSWORD}}"
                    },
                    "SMTP_USERNAME": {
                      "isOptional": false,
                      "description": "SMTP username, This email doubles as the email used for the admin user, the admin user will get an unlimited plan",
                      "defaultValue": "{{SMTP_USERNAME}}"
                    },
                    "DISABLE_SIGNUP": {
                      "isOptional": false,
                      "description": "Disable new user sign ups. Invited users are still able to sign up",
                      "defaultValue": "false"
                    },
                    "ENCRYPTION_SECRET": {
                      "isOptional": false,
                      "description": "A key used to encrypt sensitive data",
                      "defaultValue": "{{ENCRYPTION_SECRET}}"
                    },
                    "SMTP_AUTH_DISABLED": {
                      "isOptional": false,
                      "description": "To disable the authentication by email",
                      "defaultValue": "false"
                    },
                    "NEXT_PUBLIC_SMTP_FROM": {
                      "isOptional": false,
                      "description": "SMTP from email address",
                      "defaultValue": "Typebot Notifications <${{SMTP_USERNAME}}>"
                    },
                    "DEFAULT_WORKSPACE_PLAN": {
                      "isOptional": false,
                      "description": "Default workspace plan on user creation or when a user creates a new workspace. Possible values are `FREE`, `STARTER`, `PRO`, `LIFETIME`, `UNLIMITED`",
                      "defaultValue": "UNLIMITED"
                    },
                    "NEXT_PUBLIC_VIEWER_URL": {
                      "isOptional": false,
                      "description": "The viewer base URL",
                      "defaultValue": "https://${{Viewer.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE": {
                      "isOptional": false,
                      "description": "Limits the size of each file in megabytes that can be uploaded in the bots",
                      "defaultValue": "10"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  },
                  "volumeMounts": {}
                },
                "dbf1afab-8d32-451c-ac25-7062315ec5a0": {
                  "icon": "https://raw.githubusercontent.com/baptisteArno/typebot.io/b0d1b113259c4e820f0b5e45d3b2d45df5776513/apps/docs/static/img/logo.svg",
                  "name": "Viewer",
                  "build": {},
                  "deploy": {
                    "startCommand": "",
                    "healthcheckPath": "/"
                  },
                  "source": {
                    "image": "baptistearno/typebot-viewer:latest"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "defaultValue": "3000"
                    },
                    "SCOPE": {
                      "isOptional": false,
                      "description": "Set the correct scope, used when deploying from the repository",
                      "defaultValue": "viewer"
                    },
                    "S3_PORT": {
                      "isOptional": false,
                      "description": "S3 Host port number",
                      "defaultValue": "443"
                    },
                    "HOSTNAME": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "0.0.0.0"
                    },
                    "REDIS_URL": {
                      "description": "Used to - Rate limit the sign in requests based on user IP & Enable multiple media upload on WhatsApp",
                      "defaultValue": "${{Valkey.VALKEY_URL}}?family=0"
                    },
                    "S3_BUCKET": {
                      "isOptional": false,
                      "description": "Name of the bucket where assets will be uploaded in",
                      "defaultValue": "${{MinIO.MINIO_BUCKET}}"
                    },
                    "SMTP_HOST": {
                      "isOptional": false,
                      "description": "SMTP host. (i.e. smtp.host.com)",
                      "defaultValue": "${{Builder.SMTP_HOST}}"
                    },
                    "SMTP_PORT": {
                      "isOptional": false,
                      "description": "SMTP port",
                      "defaultValue": "${{Builder.SMTP_PORT}}"
                    },
                    "ADMIN_EMAIL": {
                      "isOptional": false,
                      "description": "The email that will get an UNLIMITED plan on user creation. The associated user will be able to bypass database rules.",
                      "defaultValue": "${{Builder.ADMIN_EMAIL}}"
                    },
                    "S3_ENDPOINT": {
                      "isOptional": false,
                      "description": "S3 endpoint",
                      "defaultValue": "${{MinIO.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "SMTP_SECURE": {
                      "isOptional": false,
                      "description": "If true the connection will use TLS when connecting to server. If false (the default) then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false",
                      "defaultValue": "${{Builder.SMTP_SECURE}}"
                    },
                    "DATABASE_URL": {
                      "isOptional": false,
                      "description": "The database URL",
                      "defaultValue": "${{Postgres.DATABASE_URL}}"
                    },
                    "NEXTAUTH_URL": {
                      "isOptional": false,
                      "description": "The builder base URL",
                      "defaultValue": "https://${{Builder.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "S3_ACCESS_KEY": {
                      "isOptional": false,
                      "description": "S3 access key",
                      "defaultValue": "${{MinIO.MINIO_ROOT_USER}}"
                    },
                    "S3_SECRET_KEY": {
                      "isOptional": false,
                      "description": "S3 Key",
                      "defaultValue": "${{MinIO.MINIO_ROOT_PASSWORD}}"
                    },
                    "SMTP_PASSWORD": {
                      "isOptional": false,
                      "description": "SMTP password",
                      "defaultValue": "${{Builder.SMTP_PASSWORD}}"
                    },
                    "SMTP_USERNAME": {
                      "isOptional": false,
                      "description": "SMTP username",
                      "defaultValue": "${{Builder.SMTP_USERNAME}}"
                    },
                    "ENCRYPTION_SECRET": {
                      "isOptional": false,
                      "description": "A key used to encrypt sensitive data",
                      "defaultValue": "${{Builder.ENCRYPTION_SECRET}}"
                    },
                    "SMTP_AUTH_DISABLED": {
                      "isOptional": false,
                      "description": "To disable the authentication by email",
                      "defaultValue": "${{Builder.SMTP_AUTH_DISABLED}}"
                    },
                    "NEXT_PUBLIC_SMTP_FROM": {
                      "isOptional": false,
                      "description": "SMTP from email address",
                      "defaultValue": "${{SMTP_USERNAME}}"
                    },
                    "NEXT_PUBLIC_VIEWER_URL": {
                      "isOptional": false,
                      "description": "The viewer base URL",
                      "defaultValue": "https://${{RAILWAY_PUBLIC_DOMAIN}}"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  },
                  "volumeMounts": {}
                },
                "f3cf3ce3-380c-45cf-aa39-762e9c57d7fe": {
                  "icon": "https://res.cloudinary.com/h5kvzw/image/upload/v1706062979/MINIO_Bird_vbtpet.png",
                  "name": "MinIO Bucket Creator",
                  "build": {},
                  "deploy": {
                    "startCommand": "/bin/sh -c \"sleep 10 && /usr/bin/mc config host add minio ${MINIO_ENDPOINT} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} && /usr/bin/mc mb minio/${MINIO_BUCKET} && /usr/bin/mc anonymous set public minio/${MINIO_BUCKET}/public && exit 0\""
                  },
                  "source": {
                    "image": "minio/mc:RELEASE.2025-04-16T18-13-26Z"
                  },
                  "variables": {
                    "MINIO_BUCKET": {
                      "isOptional": false,
                      "defaultValue": "${{MinIO.MINIO_BUCKET}}"
                    },
                    "MINIO_ENDPOINT": {
                      "isOptional": false,
                      "defaultValue": "http://${{MinIO.RAILWAY_PRIVATE_DOMAIN}}:${{MinIO.PORT}}"
                    },
                    "MINIO_ROOT_USER": {
                      "isOptional": false,
                      "defaultValue": "${{MinIO.MINIO_ROOT_USER}}"
                    },
                    "MINIO_ROOT_PASSWORD": {
                      "isOptional": false,
                      "defaultValue": "${{MinIO.MINIO_ROOT_PASSWORD}}"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {}
                  },
                  "volumeMounts": {}
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "MinIO",
      "method": "GET",
      "path": "/minio/health/ready",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 7,
    "needs_volume": true
  },
  "generated_at": "2026-09-18T16:14:44.724Z",
  "generator_version": "0.1.0"
}
