Solution
Hub for the CLI and host tooling. This doc explains what the solution is, how it’s organized, the technology choices, and how the app works at a high level.
Active path: the Bun orchestrator in
orchestrators/bun. Historical.NETmaterial remains in-tree for reference only.
What It Is
- Opinionated Bun-first build tool and project scaffolder.
- Full-stack by default: frontend (HTML/CSS/TS) plus a Node-compatible backend runtime.
- Single CLI surface drives workflows: init, refresh, enable, build, watch, test, publish, smoke, and generators.
- Framework behavior lives in canonical TypeScript packages under
packages/**; the Bun orchestrator composes them instead of duplicating them.
Organization
- CLI: active Bun command reference.
- Engine: historical
.NETengine internals retained for reference. - Templates: workspace shape and generated project structure.
- Tests: behavior-level testing guidance across the solution.
Technology
- Language/Runtime: Bun for orchestration, TypeScript for framework and generated workspace code.
- Dev server: Bun serves frontend output and handles reload/proxy behavior for local development.
- API runtime: Bun supervises the built backend process and proxies
/api/*in full-stack watch mode. - Build system: canonical frontend/backend/testing packages under
packages/tooling/**.
How It Works
- Init
webstir initscaffolds aspa,ssg,api, orfullworkspace.
- Build
webstir buildcomposes the canonical provider packages to emitbuild/**.
- Watch
webstir watchruns the Bun dev loop for frontend-only, backend-only, or full-stack workspaces.
- Test
webstir testbuilds the relevant targets, compiles discovered tests, and executes them through the canonical testing providers.
- Publish
webstir publishwrites publish artifacts todist/**.
- Inspect and smoke
webstir backend-inspectprints backend manifest data.webstir smokeruns a bounded end-to-end verification flow across build, test, publish, and backend inspect.
- Generators and mutators
webstir add-page,add-test,add-route,add-job,enable, andrefreshmutate workspaces directly from the Bun orchestrator.
Conventions & Structure
- Base HTML:
src/frontend/app/app.htmlmust contain a<main>; page fragments merge into it. - Pages:
src/frontend/pages/<page>/index.html|css|ts(publish supports<page>/index.module.css). - App assets:
src/frontend/app/*copied as-is (e.g.,refresh.js). - Shared types:
src/shared/(consumed by both frontend and backend). - Backend:
src/backend/index.tscompiled tobuild/backend/index.jsand run by Node. - Outputs:
- Dev:
build/frontend/**,build/backend/**with readable output and refresh support. - Prod:
dist/frontend/pages/<page>/index.<timestamp>.{css|js}, HTML with rewritten links, per-pagemanifest.json.
- Dev: