Kolibri

The Web UI Toolbox

What's New

Beta testing new features: typesafe routing and animated page transitions (basic start, more to come). All feedback is much appreciated!

Features

Kolibri's typesafe standard library contains the functional and immutable: Pair, Tuple, Maybe, Either, Choice, Sequence, JINQ, and JSON monad along with many church-encoded lambda abstractions.

For interactive user interfaces we have: Observable, ObservableList, DataFlowVariable, Scheduler, Attribute, and the ModelWorld.

Additional utilities care for: array extensions, DOM handling, test facility (incl. async testing), logging, and REST calls.

Classic MVC and the Projector Pattern lead us from simple to more-and-more advanced web clients as shown in the examples. The UI becomes rich, reliable, consistent and efficient to build and maintain.

Kolibri also puts forward best practices on how to organize code, organize types, organize styles, develop to interfaces, layout code, use JavaScript features wisely, ubiquitous testing, and helpful JsDoc.

Examples

Browse through many examples.

Guided Tour

Take the tour through a selection of examples in order to understand how Kolibri helps with developing web applications. They are arranged from simple to increasingly complex and introduce new concepts along the way.

Create a simple form very efficiently with just one line of code.

Enforce and test business rules in the UI to interactively manage working hours in a day.

Put the daily work hours in a week overview and keep all the business rules in place by simply delegating to what we have done before. Show compositionality of controllers and projectors.

Have some fun with multi-way editing in a master-detail view. It builds on what we already know and adds real interactive richness to our application.

Why is Kolibri the way it is?

Have a look at our philosophy.

Free Open Source

Kolibri is freely available on GitHub, which is also the place for any discussions and issues.

Please have a look at how to install without dependencies.