A web interface for starting builds and deployments from the browser.
http://localhost:4000/auth/deploy.html
| Field | Description | Required | Default |
|---|---|---|---|
| Project Name | Project name (slug format) | Yes | - |
| Target Platform | www / ios / android | Yes | www |
Build branch, license, and GraphQL schema min version are set automatically (branch from build-info, license always FREE, gqlSchemaMinVersion = 1).
Textarea for recipe JSON configuration:
{
"components": {
"header": {
"type": "header",
"config": {
"title": "My App",
"logo": "/logo.png"
}
},
"footer": {
"type": "footer",
"config": {
"copyright": "Copyright 2025"
}
}
}
}
Validation:
Three modes are available:
/auth/generate-jwtExample:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiZGVwbG95Ii...
Flow:
/auth/github/start/auth/success.htmlwindow.postMessageWhen you click "Start Build & Deploy":
Validation
Request creation
POST /process
Content-Type: application/json
{
"projectName": "my-app",
"target": "www",
"recipe": { ... },
"githubJwt": "..." // optional
}
branch (current build branch), license: "FREE", and gqlSchemaMinVersion: 1 are inserted automatically.
Result display
queued status).POST /build-status/:dataHash/cancel
Status changes to canceling, then canceled.my-awesome-appwwwResult: Tar archive download URL in the response
Result: Build and publish to GitHub repository
Result: Build and publish to the selected GitHub repository
OAuth popup sends a message to the parent window:
window.opener.postMessage({
type: 'github-jwt',
jwt: 'eyJhbGci...'
}, window.location.origin);
Deploy form listens for messages:
window.addEventListener('message', (event) => {
if (event.data.type === 'github-jwt') {
document.getElementById('githubJwt').value = event.data.jwt;
// Switch to JWT mode
authJwt.checked = true;
// Close popup automatically
oauthWindow.close();
}
});
Successful build:
{
"status": "done",
"dataHash": "abc123...",
"url": "abc123.42.pub",
"publish": {
"archive": {
"status": "done",
"url": "/dist/abc123/build.tar"
},
"github": {
"status": "done",
"repo": "owner/repo",
"branch": "main",
"commit": "def456..."
}
}
}
Error:
HTTP 400: Invalid recipe JSON
Loads a sample recipe:
http://localhost:4000/auth/deploy.html?example
/) - "Deploy Now" button/auth/success.html) - sends JWT via postMessage/auth/github/start) - authorization for JWT generation