Documentation
Fuzor is an HTML-first framework built on Vite and Effect. You write pages as HTML or Markdown folders, add interactive islands where you need them, and Fuzor compiles every page into a finished HTML document at build time.
The mental model
Three independent choices describe every Fuzor app:
| Choice | Options | Decided by |
|---|---|---|
| Navigation | spa: one document, the router swaps pages. mpa: one document per page, normal links. | --target |
| Delivery | Static files, or a generated Node server | Automatic when the app has api/ or server.ts; --server forces it |
| Interactivity | None, or islands that activate on load, idle, visibility or interaction | <fuzor-island> in your pages |
Pages are never rendered per request. A server build keeps the same prerendered documents a static build writes; the server selects one and sends it, and additionally answers API endpoints and server data requests. That is why switching between SPA and MPA, or adding a server, never requires rewriting pages.
Where to go next
- New to Fuzor: Getting started, then the examples, which run all four delivery modes side by side.
- Building UI: Fuzor UI, live components, styling and restoration.
- Writing an app: Project structure, pages and routing, islands, Markdown.
- Adding a backend: API endpoints and server data.
- Shipping: build profiles and deployment.
- Looking something up: CLI, configuration, runtime API, server API.
Frequently Asked Questions
--target flag.
fuzor/ui, which provides design-system agnostic components driven by Zag.js state machines.
Status
Fuzor is early software. Everything these pages describe is implemented and tested in the repository, but the API can still change between minor versions; the upgrade guide lists breaking changes. Not yet available: request-time HTML, unbounded dynamic routes, deployment adapters for platforms other than Node, and verified Electron or Capacitor support.