All Projects → jwstegemann → Fritz2

jwstegemann / Fritz2

Licence: mit
Easily build reactive web-apps in Kotlin based on flows and coroutines.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Fritz2

Neo
Create blazing fast multithreaded Web Apps
Stars: ✭ 1,219 (+295.78%)
Mutual labels:  framework, frontend, html5
Cyclow
A reactive frontend framework for JavaScript
Stars: ✭ 105 (-65.91%)
Mutual labels:  reactive, framework, frontend
Lazy
Kule Lazy4 / CSS Framework
Stars: ✭ 147 (-52.27%)
Mutual labels:  framework, frontend, html5
Vue.py
Pythonic Vue.js
Stars: ✭ 223 (-27.6%)
Mutual labels:  reactive, framework, frontend
Kvision
Object oriented web framework for Kotlin/JS
Stars: ✭ 658 (+113.64%)
Mutual labels:  reactive, framework, frontend
Rxrealmdatasources
An easy way to bind an RxRealm observable to a table or collection view
Stars: ✭ 154 (-50%)
Mutual labels:  reactive, binding
Playframework
Play Framework
Stars: ✭ 12,041 (+3809.42%)
Mutual labels:  reactive, framework
Mag.js
MagJS - Modular Application Glue
Stars: ✭ 157 (-49.03%)
Mutual labels:  reactive, framework
bindkit
Two-way data binding framework for iOS. Only one API to learn.
Stars: ✭ 13 (-95.78%)
Mutual labels:  reactive, binding
Viewi
Powerful tool for building full-stack and completely reactive user interfaces using PHP
Stars: ✭ 93 (-69.81%)
Mutual labels:  reactive, frontend
Mogwai
The minimalist, obvious, graphical, web application interface
Stars: ✭ 249 (-19.16%)
Mutual labels:  reactive, frontend
WpfExtensions
Some syntactic sugar for Wpf development.
Stars: ✭ 128 (-58.44%)
Mutual labels:  reactive, binding
Marble
Marble.js - functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS.
Stars: ✭ 1,947 (+532.14%)
Mutual labels:  reactive, framework
Connective
agent-based reactive programming library for typescript
Stars: ✭ 98 (-68.18%)
Mutual labels:  reactive, framework
Choo Handbook
🚂✋📖 - Learn the choo framework through a set of exercises
Stars: ✭ 266 (-13.64%)
Mutual labels:  framework, frontend
bound
Data-binding made easy
Stars: ✭ 21 (-93.18%)
Mutual labels:  reactive, binding
Qmlcore
QML to Javascript/HTML5 translator, both for mobile and desktop targets
Stars: ✭ 258 (-16.23%)
Mutual labels:  frontend, html5
Bem Core
BEM Core Library
Stars: ✭ 275 (-10.71%)
Mutual labels:  framework, frontend
Saltgui
A web interface for managing SaltStack based infrastructure.
Stars: ✭ 278 (-9.74%)
Mutual labels:  frontend, html5
Rocket.jl
Functional reactive programming extensions library for Julia
Stars: ✭ 69 (-77.6%)
Mutual labels:  reactive, framework

fritz2

Actions Status Awesome Kotlin Badge Download IR Examples API Docs

fritz2 is an extremely lightweight, well-performing, independent library to build reactive web apps in Kotlin heavily depending on coroutines and flows.

fritz2 includes an intuitive way to build and render html-elements and styles using a type-safe dsl. You can easily create lightweight reactive html-components that are bound to an underlying model and automatically change whenever the model data changes:

val model = storeOf("init value")

render {
    div("some-css-class") {
        input {
            value(model.data)
            changes.values() handledBy model.update 
        }
        p {
            +"model value = "
            model.data.asText()
        }
    }
}

fritz2 implements precise data binding. This means that when parts of your data model change, exactly those and only those DOM-nodes depending on the changed parts will automatically change as well. No intermediate layer (like a virtual DOM) is needed. fritz2 requires no additional methods to decide which parts of your component have to be re-rendered:

State management in fritz2

Utilizing Kotlin's multiplatform-abilities, you'll write the code of your data classes only once and use it on your client and server (i.e. in a SpringBoot- or Ktor-Backend). This is also true for your model-validation-code, which can quickly become far more complex than your data model.

Key Features

  • easy reactive one- and two-way-databinding (even for lists and deep nested structures)
  • hassle-free redux-like state-handling
  • model-validation and message handling
  • integrated styling-dsl
  • component-library
  • routing (for SPAs, hash-based)
  • backend-repositories (Rest APIs, WebSockets, LocalStorage, etc.)
  • history / undo
  • processing state ("spinning wheel")
  • easy to learn
  • documentation
  • examples i.e. implementing the specification of TodoMVC

How to try it?

Overall Goals

  • staying lightweight (a few hundred lines of code for the core)
  • keeping dependencies as low as possible (zero up to now!)
  • generating elements, attributes, events for html from specification (w3c, mozilla, ...)
  • make it as easy as possible to write reactive pwas in pure kotlin

Inspiration

fritz2 is hugely inspired by the great Binding.scala. Later we discovered that a lot of those concepts are described independently in Meiosis.

Leave us a star...

If you like the idea of a lightweight pure Kotlin implementation for building reactive web apps, please give us a star on github. Thank you.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].