This is a prototype of the idea of profunctor user interfaces for Web/Material Design Component-based UIs written in PureScript.
Why Bambik? — a long-form introduction
20 minutes-long presentation of the idea
Variant syntax sugar — the forked PureScript compiler this repo builds on
bambik is consumed as a spago git package pinned to a release tag — no clone,
nothing vendored. The v0.1.5 release
ships developing-bambik-apps, the authoring skill: how to bootstrap a
project, the vocabulary and its four row directions, separation of concerns, the
definitive code-style contract, and the build/verify workflow — with a scaffold
that produces a working application, left running in dev mode.
Its bootstrap.md gives the packages.dhall entry and the two toolchain pins
the library requires (the variant-sugar compiler and the matching
purescript-variant fork; stock purs cannot build bambik).
mkdir -p .claude/skills
curl -sL https://github.com/restaumatic/bambik/releases/download/v0.1.5/developing-bambik-apps-v0.1.5.tar.gz | tar xz -C .claude/skillsIts source of truth is .claude/skills/developing-bambik-apps/; bootstrap.md is readable on its own if you would rather follow the procedure by hand.
Read the demos in this order — counter, temperature-converter, flight-booker,
todomvc, checkout, order-form — each adding one idea to the last.
walkthrough.md reads
flight-booker line by line, and
vocabulary.md is the
lookup index from what the screen needs to the word for it, and
writing.md's What the laws guarantee
says what the six shape laws buy you when composing. The toolchain is
one command: npm install fetches the forked compiler as a pinned GitHub
release together with the matching variant library — nothing is built locally.
In order to run the demo:
$ npm installDemo of Material Design Component-based UI:
$ npm run dev order-formDemo of plain HTML-based UI — a fancy static page with no Material components, part of the nGUIs set:
$ npm run dev restaurant-menu