{
  "manifest_version": "1.0.0",
  "template": {
    "id": "5522cc90-2d5d-43c7-92e7-9de5513868f2",
    "slug": "javelit-app",
    "name": "Javelit App",
    "description": "A template to quickly deploy Javelit apps.",
    "url": "https://railway.com/deploy/javelit-app",
    "upstream": {
      "image": "jbangdev/jbang:0.132.1-java-21"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "Javelit container",
      "source": {
        "image": "jbangdev/jbang:0.132.1-java-21"
      },
      "needs_volume": false,
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "APP_URL",
      "service": "Javelit container",
      "description": "A public URL pointing to the app file. You can provide a link to a github folder if the app uses other files. If a link to a folder is provided, the entrypoint should be called Main.java or App.java or there should be a unique Java class at the root of the folder. Supported values: (1) A direct link to a text/plain .java file: https://raw.githubusercontent.com/user/repo/branch/file.java.  (2) A GitHub repository URL: https://github.com/user/repo. A GitHub folder tree URL : https://github.com/user/repo/tree/branch/path/to/folder. (4)A GitHub file blob URL: https://github.com/javelit/javelit/blob/main/examples/getting_started/App.java",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "JDK_JAVA_OPTIONS",
      "service": "Javelit container",
      "description": "Java options",
      "secret": false,
      "strategy": "default",
      "default": "-Xmx512m -Xms256m -XX:MaxMetaspaceSize=128m"
    },
    {
      "key": "MALLOC_ARENA_MAX",
      "service": "Javelit container",
      "description": "Used to reduce memory usage. If you're not sure, do not edit.",
      "secret": false,
      "strategy": "default",
      "default": "2"
    },
    {
      "key": "SOURCE_REFRESH_INTERVAL",
      "service": "Javelit container",
      "description": "The refresh interval (in seconds) used to update the app from the source URL. A value of -1 disables automatic refresh; in that case, you must restart the service to load a new version of the app. If set, the interval must be at least 60 seconds. Javelit attempts to respect caching headers returned by the server. This may cause the actual refresh frequency to be slower than the provided interval.",
      "secret": false,
      "strategy": "default",
      "default": "-1"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "javelit-app"
      }
    },
    "cli": "railway deploy --template javelit-app",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "5522cc90-2d5d-43c7-92e7-9de5513868f2",
            "serializedConfig": {
              "services": {
                "a34facf4-ed51-41e5-91ab-255a37f838fa": {
                  "icon": null,
                  "name": "Javelit container",
                  "deploy": {
                    "startCommand": "/bin/sh -c \"jbang  javelit@javelit run ${APP_URL} --watch-remote ${SOURCE_REFRESH_INTERVAL} --port 3000\"",
                    "healthcheckPath": ""
                  },
                  "source": {
                    "image": "jbangdev/jbang:0.132.1-java-21"
                  },
                  "variables": {
                    "APP_URL": {
                      "isOptional": false,
                      "description": "A public URL pointing to the app file. You can provide a link to a github folder if the app uses other files. If a link to a folder is provided, the entrypoint should be called Main.java or App.java or there should be a unique Java class at the root of the folder. Supported values: (1) A direct link to a text/plain .java file: https://raw.githubusercontent.com/user/repo/branch/file.java.  (2) A GitHub repository URL: https://github.com/user/repo. A GitHub folder tree URL : https://github.com/user/repo/tree/branch/path/to/folder. (4)A GitHub file blob URL: https://github.com/javelit/javelit/blob/main/examples/getting_started/App.java",
                      "defaultValue": "{{APP_URL}}"
                    },
                    "JDK_JAVA_OPTIONS": {
                      "isOptional": true,
                      "description": "Java options",
                      "defaultValue": "-Xmx512m -Xms256m -XX:MaxMetaspaceSize=128m"
                    },
                    "MALLOC_ARENA_MAX": {
                      "isOptional": true,
                      "description": "Used to reduce memory usage. If you're not sure, do not edit.",
                      "defaultValue": "2"
                    },
                    "SOURCE_REFRESH_INTERVAL": {
                      "isOptional": true,
                      "description": "The refresh interval (in seconds) used to update the app from the source URL. A value of -1 disables automatic refresh; in that case, you must restart the service to load a new version of the app. If set, the interval must be at least 60 seconds. Javelit attempts to respect caching headers returned by the server. This may cause the actual refresh frequency to be slower than the provided interval.",
                      "defaultValue": "-1"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:3000": {
                        "port": 3000
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": false
  },
  "generated_at": "2026-09-06T11:54:17.289Z",
  "generator_version": "0.1.0"
}
