{
  "manifest_version": "1.0.0",
  "template": {
    "id": "0f9b2735-4889-4334-8d5f-2cc46e76e92c",
    "slug": "fronted",
    "name": "fronted",
    "description": "web element and rtc and the for call",
    "url": "https://railway.com/deploy/fronted",
    "upstream": {
      "repo_url": "https://github.com/Penghuot/ess-helm"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "matrix rtc",
      "source": {
        "repo": "https://github.com/Penghuot/ess-helm"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "lk-jwt-service",
      "source": {
        "repo": "https://github.com/Penghuot/ess-helm"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "web element",
      "source": {
        "repo": "https://github.com/Penghuot/ess-helm"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "element call",
      "source": {
        "repo": "https://github.com/Penghuot/ess-helm"
      },
      "needs_volume": false,
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "matrix rtc",
      "description": "Port your service listens on inside the container. Example: 7880",
      "secret": false,
      "strategy": "default",
      "default": "7880"
    },
    {
      "key": "LIVEKIT_DOMAIN",
      "service": "matrix rtc",
      "description": "Domain for your LiveKit deployment. Example: livekit.example.com",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "LIVEKIT_API_KEY",
      "service": "matrix rtc",
      "description": "API key for LiveKit server authentication. Example: lk_api_key_12345",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "LIVEKIT_API_SECRET",
      "service": "matrix rtc",
      "description": "API secret for LiveKit server authentication. Example: lk_api_secret_67890",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "LIVEKIT_KEY",
      "service": "lk-jwt-service",
      "description": "Alternate key for LiveKit client authentication. Example: lk_client_key_abcdef",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "LIVEKIT_URL",
      "service": "lk-jwt-service",
      "description": "Base URL for LiveKit server. Example: https://livekit.example.com",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "LIVEKIT_SECRET",
      "service": "lk-jwt-service",
      "description": "Alternate secret for LiveKit client authentication. Example: lk_client_secret_xyz",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "LIVEKIT_FULL_ACCESS_HOMESERVERS",
      "service": "lk-jwt-service",
      "description": "Comma-separated list of homeservers with full LiveKit access. Example: synapse.example.com,another-hs.example.com",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "MAS_URL",
      "service": "web element",
      "description": "Public URL of the MAS service. Example: https://mas-service-production.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "SERVER_NAME",
      "service": "web element",
      "description": "Matrix homeserver name (same as Synapse server name). Example: synape-production-7433.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "HOMESERVER_URL",
      "service": "web element",
      "description": "Public URL of the Synapse homeserver. Example: https://synape-production-7433.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "ELEMENT_WEB_URL",
      "service": "web element",
      "description": "Public URL of your Element Web client. Example: https://web-element-production.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "ELEMENT_CALL_URL",
      "service": "web element",
      "description": "Public URL of your Element Call service. Example: https://element-call-production.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "LK_JWT_SERVICE_URL",
      "service": "web element",
      "description": "Public URL of your JWT service for LiveKit. Example: https://lk-jwt-service-production.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "ELEMENT_DEFAULT_THEME",
      "service": "web element",
      "description": "Default theme for Element Web. Example: light",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "ELEMENT_WEB_CLIENT_ID",
      "service": "web element",
      "description": "OIDC client ID registered for Element Web. Example: 00000000000000000000SEC0ND",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "LIVEKIT_URL",
      "service": "element call",
      "description": "Base URL for LiveKit server (duplicate variable, ensure consistency). Example: https://livekit.example.com",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "SERVER_NAME",
      "service": "element call",
      "description": "Matrix homeserver name (duplicate, ensure consistency). Example: synape-production-7433.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "HOMESERVER_URL",
      "service": "element call",
      "description": "Public URL of the Synapse homeserver (duplicate, ensure consistency). Example: https://synape-production-7433.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "LIVEKIT_JWT_SERVICE_URL",
      "service": "element call",
      "description": "Public URL of the JWT service used by LiveKit. Example: https://lk-jwt-service-production.up.railway.app",
      "secret": false,
      "strategy": "ask_user"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "fronted"
      }
    },
    "cli": "railway deploy --template fronted",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "0f9b2735-4889-4334-8d5f-2cc46e76e92c",
            "serializedConfig": {
              "buckets": {},
              "services": {
                "154d509a-bcf5-4195-86ba-583b15714a48": {
                  "icon": "https://www.flaticon.com/free-icon/transport-van-vehicle_246",
                  "name": "matrix rtc",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/Penghuot/ess-helm",
                    "rootDirectory": "/to-test-with-railway/matrix-rtc"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port your service listens on inside the container. Example: 7880",
                      "defaultValue": "7880"
                    },
                    "LIVEKIT_DOMAIN": {
                      "isOptional": false,
                      "description": "Domain for your LiveKit deployment. Example: livekit.example.com",
                      "defaultValue": "{{LIVEKIT_DOMAIN}}"
                    },
                    "LIVEKIT_API_KEY": {
                      "isOptional": false,
                      "description": "API key for LiveKit server authentication. Example: lk_api_key_12345",
                      "defaultValue": "{{LIVEKIT_API_KEY}}"
                    },
                    "LIVEKIT_API_SECRET": {
                      "isOptional": false,
                      "description": "API secret for LiveKit server authentication. Example: lk_api_secret_67890",
                      "defaultValue": "{{LIVEKIT_API_SECRET}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "1a47b76a-d346-4aec-99fc-b32e7d77a5e2": {
                  "icon": "https://www.flaticon.com/free-icon/database-backup_306",
                  "name": "lk-jwt-service",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/Penghuot/ess-helm",
                    "rootDirectory": "/to-test-with-railway/lk-jwt-service"
                  },
                  "variables": {
                    "LIVEKIT_KEY": {
                      "isOptional": false,
                      "description": "Alternate key for LiveKit client authentication. Example: lk_client_key_abcdef",
                      "defaultValue": "{{LIVEKIT_KEY}}"
                    },
                    "LIVEKIT_URL": {
                      "isOptional": false,
                      "description": "Base URL for LiveKit server. Example: https://livekit.example.com",
                      "defaultValue": "{{LIVEKIT_URL}}"
                    },
                    "LIVEKIT_SECRET": {
                      "isOptional": false,
                      "description": "Alternate secret for LiveKit client authentication. Example: lk_client_secret_xyz",
                      "defaultValue": "{{LIVEKIT_SECRET}}"
                    },
                    "LIVEKIT_FULL_ACCESS_HOMESERVERS": {
                      "isOptional": false,
                      "description": "Comma-separated list of homeservers with full LiveKit access. Example: synapse.example.com,another-hs.example.com",
                      "defaultValue": "{{LIVEKIT_FULL_ACCESS_HOMESERVERS}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "8ed453ab-80a4-4294-9907-f6fc5b3c9315": {
                  "icon": "https://www.flaticon.com/free-icon/hippies-flowers_313",
                  "name": "web element",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/Penghuot/ess-helm",
                    "rootDirectory": "/to-test-with-railway/element-web"
                  },
                  "variables": {
                    "MAS_URL": {
                      "isOptional": false,
                      "description": "Public URL of the MAS service. Example: https://mas-service-production.up.railway.app",
                      "defaultValue": "{{MAS_URL}}"
                    },
                    "SERVER_NAME": {
                      "isOptional": false,
                      "description": "Matrix homeserver name (same as Synapse server name). Example: synape-production-7433.up.railway.app",
                      "defaultValue": "{{SERVER_NAME}}"
                    },
                    "HOMESERVER_URL": {
                      "isOptional": false,
                      "description": "Public URL of the Synapse homeserver. Example: https://synape-production-7433.up.railway.app",
                      "defaultValue": "{{HOMESERVER_URL}}"
                    },
                    "ELEMENT_WEB_URL": {
                      "isOptional": false,
                      "description": "Public URL of your Element Web client. Example: https://web-element-production.up.railway.app",
                      "defaultValue": "{{ELEMENT_WEB_URL}}"
                    },
                    "ELEMENT_CALL_URL": {
                      "isOptional": false,
                      "description": "Public URL of your Element Call service. Example: https://element-call-production.up.railway.app",
                      "defaultValue": "{{ELEMENT_CALL_URL}}"
                    },
                    "LK_JWT_SERVICE_URL": {
                      "isOptional": false,
                      "description": "Public URL of your JWT service for LiveKit. Example: https://lk-jwt-service-production.up.railway.app",
                      "defaultValue": "{{LK_JWT_SERVICE_URL}}"
                    },
                    "ELEMENT_DEFAULT_THEME": {
                      "isOptional": false,
                      "description": "Default theme for Element Web. Example: light",
                      "defaultValue": "{{ELEMENT_DEFAULT_THEME}}"
                    },
                    "ELEMENT_WEB_CLIENT_ID": {
                      "isOptional": false,
                      "description": "OIDC client ID registered for Element Web. Example: 00000000000000000000SEC0ND",
                      "defaultValue": "{{ELEMENT_WEB_CLIENT_ID}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "fe873f0c-b60c-4032-b46d-2fba217bf6cf": {
                  "icon": "https://www.flaticon.com/free-icon/video-call_360",
                  "name": "element call",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/Penghuot/ess-helm",
                    "rootDirectory": "/to-test-with-railway/element-call"
                  },
                  "variables": {
                    "LIVEKIT_URL": {
                      "isOptional": false,
                      "description": "Base URL for LiveKit server (duplicate variable, ensure consistency). Example: https://livekit.example.com",
                      "defaultValue": "{{LIVEKIT_URL}}"
                    },
                    "SERVER_NAME": {
                      "isOptional": false,
                      "description": "Matrix homeserver name (duplicate, ensure consistency). Example: synape-production-7433.up.railway.app",
                      "defaultValue": "{{SERVER_NAME}}"
                    },
                    "HOMESERVER_URL": {
                      "isOptional": false,
                      "description": "Public URL of the Synapse homeserver (duplicate, ensure consistency). Example: https://synape-production-7433.up.railway.app",
                      "defaultValue": "{{HOMESERVER_URL}}"
                    },
                    "LIVEKIT_JWT_SERVICE_URL": {
                      "isOptional": false,
                      "description": "Public URL of the JWT service used by LiveKit. Example: https://lk-jwt-service-production.up.railway.app",
                      "defaultValue": "{{LIVEKIT_JWT_SERVICE_URL}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "matrix rtc",
      "method": "GET",
      "path": "/health",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 4,
    "needs_volume": false
  },
  "generated_at": "2026-09-12T22:14:39.841Z",
  "generator_version": "0.1.0"
}
