{
  "manifest_version": "1.0.0",
  "template": {
    "id": "730ba8fd-077b-4f7c-a6d4-821984158300",
    "slug": "J29H1Z",
    "name": "SerpBear",
    "description": "Search Engine Position Rank Tracking App",
    "url": "https://railway.com/deploy/J29H1Z",
    "upstream": {
      "image": "towfiqi/serpbear"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "SerpBear",
      "source": {
        "image": "towfiqi/serpbear"
      },
      "needs_volume": true,
      "volume_mount_path": "/app/data",
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "USER",
      "service": "SerpBear",
      "description": "The username you want to use to login to the app",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "APIKEY",
      "service": "SerpBear",
      "description": "API key that will be used to access the app's API",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "SECRET",
      "service": "SerpBear",
      "description": "A secret key that will be used for encrypting 3rd party API keys & passwords",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "PASSWORD",
      "service": "SerpBear",
      "description": "The password you want to use to log in to the app",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "RAILWAY_RUN_UID",
      "service": "SerpBear",
      "description": "Run the image as root to allow writing to the volume",
      "secret": false,
      "strategy": "default",
      "default": "0"
    },
    {
      "key": "SESSION_DURATION",
      "service": "SerpBear",
      "description": "The duration(in hours) of the user's logged-in session",
      "secret": false,
      "strategy": "default",
      "default": "24"
    },
    {
      "key": "NEXT_PUBLIC_APP_URL",
      "service": "SerpBear",
      "description": "The URL where your app is hosted and can be accessed",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "J29H1Z"
      }
    },
    "cli": "railway deploy --template J29H1Z",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "730ba8fd-077b-4f7c-a6d4-821984158300",
            "serializedConfig": {
              "services": {
                "f29eef16-e9b6-4aa7-9818-74b701002309": {
                  "icon": "https://raw.githubusercontent.com/towfiqi/serpbear/51ebe3e3267b0b00af28add6dc978d2ba920fdb7/public/icon.png",
                  "name": "SerpBear",
                  "build": {},
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/login"
                  },
                  "source": {
                    "image": "towfiqi/serpbear"
                  },
                  "variables": {
                    "USER": {
                      "isOptional": false,
                      "description": "The username you want to use to login to the app",
                      "defaultValue": "{{USER}}"
                    },
                    "APIKEY": {
                      "isOptional": false,
                      "description": "API key that will be used to access the app's API",
                      "defaultValue": "{{APIKEY}}"
                    },
                    "SECRET": {
                      "isOptional": false,
                      "description": "A secret key that will be used for encrypting 3rd party API keys & passwords",
                      "defaultValue": "{{SECRET}}"
                    },
                    "PASSWORD": {
                      "isOptional": false,
                      "description": "The password you want to use to log in to the app",
                      "defaultValue": "{{PASSWORD}}"
                    },
                    "SCREENSHOT_API": {
                      "isOptional": true,
                      "description": "**(Optional)** The website screenshot thumbnails are fetched with thum.io API using an API key created for SerpBear which has a 1000/month limit. When this limit is crossed, it fails to fetch screenshot thumbnails. You can create a free account on thum.io and insert your own thum.io API auth value to avoid facing the API limit issue. After creating an account, create an API key, copy the auth variable, and use that variable as the value of this property"
                    },
                    "RAILWAY_RUN_UID": {
                      "isOptional": false,
                      "description": "Run the image as root to allow writing to the volume",
                      "defaultValue": "0"
                    },
                    "SESSION_DURATION": {
                      "isOptional": false,
                      "description": "The duration(in hours) of the user's logged-in session",
                      "defaultValue": "24"
                    },
                    "NEXT_PUBLIC_APP_URL": {
                      "isOptional": false,
                      "description": "The URL where your app is hosted and can be accessed",
                      "defaultValue": "https://${{RAILWAY_PUBLIC_DOMAIN}}"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  },
                  "volumeMounts": {
                    "f29eef16-e9b6-4aa7-9818-74b701002309": {
                      "mountPath": "/app/data"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "SerpBear",
      "method": "GET",
      "path": "/login",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 1,
    "needs_volume": true
  },
  "generated_at": "2026-09-21T22:14:44.200Z",
  "generator_version": "0.1.0"
}
