Web dashboard and install API for OpenBoot.
Live at openboot.dev
This repo handles the web interface for managing configs, serving install scripts, and storing snapshots. The CLI lives at openbootdotdev/openboot.
- Landing page + docs (SvelteKit + mdsvex)
- Dashboard for creating and editing configs
- Install script generator (the URL you curl from)
- Brewfile import parser
- Package search proxies (Homebrew, NPM)
- OAuth login (GitHub, Google) + CLI device auth flow
- Snapshot upload API (CLI posts your machine state here)
SvelteKit 5 + TypeScript, Cloudflare Workers + D1 (SQLite), GitHub/Google OAuth.
npm install
wrangler d1 migrations apply openboot --local # Sets up DB
npm run devCreate .dev.vars with your OAuth credentials:
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
Push to main runs CI (ci.yml: type check + tests + build + contract validation). On success, CD (deploy.yml) fires via workflow_run and ships to openboot.dev (D1 migrations + wrangler deploy + health check + smoke test). PRs run CI only. See docs/HARNESS.md for the full pipeline.
Secrets needed: CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID
Install scripts (what the CLI curls):
GET /:alias— Short alias redirect or install script (curl-detected)GET /:username/:slug/install— Config install scriptGET /:username/:slug/config— Config JSON for CLI
Configs (CRUD for dashboard):
GET/POST /api/configs— List/createGET/PUT/DELETE /api/configs/:slug— Read/update/deletePOST /api/configs/from-snapshot— CLI snapshot upload
Auth:
- OAuth callbacks at
/api/auth/callback/{github,google} - CLI device flow:
/api/auth/cli/{start,approve,poll}
Utilities:
POST /api/brewfile/parse— Brewfile → package listGET /api/homebrew/search?q=...— Search HomebrewGET /api/npm/search?q=...— Search NPM
D1 (SQLite). Tables: users, configs, config_revisions, api_tokens, cli_auth_codes. See migrations/ for schema. Key fields on configs:
configs.packages— JSON array of {name, type, desc}configs.snapshot— JSON object from CLIopenboot snapshotconfigs.visibility—public|unlisted|privateconfigs.alias— short URL (e.g.,openboot.dev/dev→ redirects)
MIT