Serverless GitHub deployment command center for mobile-first developers. Upload workspace artifacts — folders, files, or ZIP archives — and let GitHub Actions handle the synchronisation. No backend server. No secrets in the browser. Works from any device.
| Feature | Description |
|---|---|
| Deployment History | Persistent local history of all deployments with Actions status badges |
| Live Actions Monitoring | Real-time polling of GitHub Actions pipeline status after deploy |
| Multi-Format Upload | Drag-and-drop folders, individual files, or ZIP archives |
| ZIP Inspector | Preview file contents, sizes, and workflow files before deploying |
| Smart Workflow Handling | .github/workflows/*.yml files pushed directly via API (no PAT needed) |
| Custom Commit Messages | Set your own commit message per deployment |
| Deploy Modes | Choose between Merge (overlay) and Replace (clean sync) |
| Branch Management | Create new branches directly from the UI |
| Repository Dashboard | Quick stats, recent commits, and direct links to GitHub |
| Professional Sound Design | Aternos-style audio feedback (opt-in via settings) |
| Command Palette | VS Code-style Ctrl+K for quick actions |
| Pipeline Version Detection | Auto-detects outdated pipelines with one-click upgrade |
| Deployment Receipts | .deploy-receipt.json written to repo after each sync |
.deployignore Support |
Exclude files during sync (like .gitignore) |
| Rollback | Revert to any previous commit via workflow_dispatch |
| Toast Notifications | In-app slide-in notifications for all events |
| Browser Notifications | Deploy and walk away — get notified when it's done |
| Keyboard Shortcuts | Ctrl+D deploy, Ctrl+L clear terminal, Ctrl+K palette |
┌────────────────────────────────────────────────────────────┐
│ 100% Client-Side │
│ │
│ Browser (GitHub Pages / localhost) │
│ ├── OAuth 2.0 login (Web Application Flow) │
│ ├── Multi-format upload (folder/files/zip via JSZip CDN) │
│ ├── Smart workflow file pre-push (Contents API) │
│ ├── ZIP upload → GitHub Contents API │
│ ├── Live Actions status polling │
│ └── All state in localStorage (zero server state) │
│ │
│ Cloudflare Worker (stateless proxy) │
│ └── Exchanges OAuth code for token (hides CLIENT_SECRET) │
│ │
│ GitHub Actions (heavy lifting) │
│ ├── Extract workspace.zip │
│ ├── Apply .deployignore rules │
│ ├── Sync files (merge or replace mode) │
│ ├── Write deployment receipt │
│ └── Commit & push │
└────────────────────────────────────────────────────────────┘
GitHub Actions' GITHUB_TOKEN cannot write to .github/workflows/*.yml. DemonZ Deployer v3.0.1 solves this transparently:
- JSZip inspects the uploaded zip client-side
- Detects any
.github/workflows/*.ymlfiles - Pushes them directly via the GitHub Contents API (the OAuth token has
workflowscope) - Uploads the remaining zip for Actions to handle
Zero PAT required. Zero user configuration. Works on mobile.
Go to GitHub Settings → Developer Settings → OAuth Apps → New OAuth App
| Field | Value |
|---|---|
| Homepage URL | https://<you>.github.io/DemonZ-Deployer/ |
| Authorization callback URL | https://<you>.github.io/DemonZ-Deployer/ |
Copy the Client ID into js/config.js.
- Go to workers.cloudflare.com → Create Worker
- Paste the contents of
worker/worker.js - In Worker Settings → Variables → add
CLIENT_SECRETas a Secret - Save & Deploy
- Copy the
*.workers.devURL intojs/config.js
git push origin mainThen enable GitHub Pages in your repo settings (Settings → Pages → Branch: main → Save).
- Open your GitHub Pages URL
- Click Connect with GitHub
- Select a repository → Click Setup Repository (installs the pipeline)
- Drop your workspace files → Click Deploy
The pipeline YAML contains a machine-readable version tag:
# DZ_PIPELINE_VERSION=3.0.0When you select a repository, the app reads this tag and shows:
- ✅ Pipeline v3.0.0 — up to date
⚠️ Pipeline (legacy) — upgrade available → one-click upgrade button
| Mode | Behavior |
|---|---|
| Merge (default) | Overlays extracted files onto existing repo contents |
| Replace | Clears all tracked files first, then syncs (clean slate) |
The mode is embedded in the commit message as [mode:merge] or [mode:replace] and read by the pipeline.
Create a .deployignore file in your repo root or include one in your workspace zip. Works like .gitignore:
node_modules
.env
*.log
dist/
The pipeline will exclude matching files during sync.
| Shortcut | Action |
|---|---|
Ctrl+K |
Open command palette |
Ctrl+D |
Deploy workspace |
Ctrl+L |
Clear terminal |
Esc |
Close modal / palette |
MIT — see LICENSE
Forging Digital Empires — DemonZ Development
