# 🚲 The Fixi Project [The Fixi Project](https://fixiproject.org) is a collection of five small web libraries based on other libraries we work on. Each library in The Fixi Project is constrained to have an *unminified, uncompressed* source size smaller than the excellent [Preact](https://preactjs.org) library's [min.gz'd size](https://bundlephobia.com/package/preact) (~ 4.7kb). ## The Libraries The five libraries each provide independent bits of functionality, but are designed to compose well. You can mix and match them as you see fit. ### 🚲 `fixi.js` - supercharged HTML `fixi.js` is the original and main library in this collection. It is based on [htmx](https://htmx.org) and, like htmx, makes it possible to issue HTTP requests from elements in response to events. Here is a fixi-powered button: ```html ``` This button will issue an HTTP POSt to `/like` when it is clicked and will replace itself with whatever HTML content the server responds with. This simple concept is a surprisingly powerful way to build web applications. You can read more about how fixi works on its [homepage](https://github.com/bigskysoftware/fixi). ### 🥊 `moxi.js` - inline scripting & simple reactivity `moxi.js` adds inline scripting and DOM-based reactivity. It is based on [hyperscript](https://hyperscript.org) and lets you put behavior directly on elements via `on-*` attributes, plus a `live` attribute that re-runs whenever the page changes. Here is a moxi-powered button: ```html ``` This button disables itself and updates its text when clicked, without a separate ` ``` The entire fixi project comes in at ~4.4kb when brotli-compressed. ## Developing From a fresh checkout of this repo: ```bash npm install # installs playwright + terser (dev-only) npm run clone # clones each sub-project repo into its directory npm test # runs the full test suite across all libraries (headless) npm run build # builds the all-in-one bundle into dist/ npm run demo # runs the demo app on http://localhost:8765 npm run serve # serves the docs site on http://localhost:4000 ``` `npm test` accepts a subset of project names, so `npm test rexi paxi` runs only those two. ## License BSD-0 (Zero-Clause BSD) across all libraries.