A new Functional UI

programming

paradigm

desert cactusdesert cactus

A programming model for declarative user interface.

Fast

Shpadoinkle does little work. The renderer is modular, so you can always benefit from the latest advances in virtual DOM rendering.

Declarative

Your Shpadoinkle code is high-level. You need not worry about low-level details, causality, or when DOM nodes get replaced.

Composable

Shpadoinkle avoids elaborate passing of messages and payloads. Components are highly composable with Lenses

Reliable

Shpadoinkle UIs are composed of components with no side-effects. Runtime errors are exceedingly rare. Code is easy to test because model updates are pure functions.

Type Safe

Shpadoinkle facilities type safe UI code. Everything from client server communication with Servant, to compile time checked asset paths, is designed with types in mind.

background transition

Hello World

Shpadoinkle components are expressed as functions, no classes, inheritance, or JSX style new syntax. Purity of view logic is guaranteed by the type system.

Live Shpadoinkle Editor
Result

State is easy

Components are simply functions that accept a state argument to render. Event listeners provide updates to the state. No props management, digest cycle, hooks, dispatch, or other such ceremony.

Live Shpadoinkle Editor
Result

An Application

Using event handlers, and pure functions we can compose applications without any further abstraction.

Live Shpadoinkle Editor
Result
background transition