Skip to content

Repository files navigation

Profunctor User Interfaces

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

1000 characters-long description of the idea

20 minutes-long presentation of the idea

Row profunctors over records and variants (design note)

Variant syntax sugar — the forked PureScript compiler this repo builds on

Using it in your own application

bambik is consumed as a spago git package pinned to a release tag — no clone, nothing vendored. The v0.1.1 release gives the packages.dhall entry and the two toolchain pins it requires (the variant-sugar compiler and the matching purescript-variant fork; stock purs cannot build bambik).

That release also 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.

mkdir -p .claude/skills
curl -sL https://github.com/restaumatic/bambik/releases/download/v0.1.1/developing-bambik-apps-v0.1.1.tar.gz | tar xz -C .claude/skills

Its 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.

Demo

In order to run the demo:

$ npm install

Demo of Material Design Component-based UI:

$ npm run dev order-form

Demo of plain HTML-based UI — a fancy static page with no Material components, part of the nGUIs set:

$ npm run dev restaurant-menu