https://github.com/keechma/keechma
Micro frontend framework for ClojureScript and Reagent
https://github.com/keechma/keechma
clojurescript keechma reagent
Last synced: 5 months ago
JSON representation
Micro frontend framework for ClojureScript and Reagent
- Host: GitHub
- URL: https://github.com/keechma/keechma
- Owner: keechma
- License: mit
- Created: 2016-02-06T10:44:32.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-12-06T14:34:53.000Z (over 2 years ago)
- Last Synced: 2024-04-14T22:25:11.421Z (about 1 year ago)
- Topics: clojurescript, keechma, reagent
- Language: Clojure
- Homepage: http://keechma.com
- Size: 818 KB
- Stars: 326
- Watchers: 14
- Forks: 11
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Keechma
[](https://clojars.org/keechma)
Keechma is a micro framework for Reagent written in ClojureScript. It gives you a set of utilities that allow you to build applications that have the following properties:
- **Deterministic and predictable behavior**
+ Based on the route, you can determine what the application's state will be
+ UI never "requests" data it's always provided to it
- **Unidirectional data flow**
1. Route params are derived from the URL
2. Application state is derived from the route params
3. UI is derived from the application state
- **Loose coupling between components**
+ Communication is performed through `core.async` channels
- **Automatic synchronization of entities' states**
+ An entity is any data loaded into the app that has an identity (e.g. `:id` column)
+ Entities are stored in the EntityDB
+ EntityDB propagates entity state to every place where that entity is displayed in the UI
- **Enforced lifecycle (and memory safety)**
+ Automatically load data on route change
+ Automatically clean up stale data on route change
+ Automatically set up event listeners on route change (e.g. listener on the WebSocket)
+ Automatically tear down event listeners on route change
- **Applications are first-class citizens**
+ Applications can be started and stopped
+ Applications can be passed around
+ Applications can mount sub-applicationsns
- **UI components are decoupled and reusable**
+ UI components can declare it's dependencies
+ Dependencies are injected when the application is started
+ Each component has own context
- **No shared globals**
+ Router is bound to the application context
+ App state is bound to the application context
+ Multiple apps can run at the same time, each with own state## Documentation
Read the [guides](http://keechma.com/01-introduction.html) or the [API docs](http://keechma.com/api/index.html) to find out more about Keechma.
## Name
> Kičma (lat. columna vertebralis) is a Croatian word for backbone / spine.
Yes, it’s a nod to BackboneJS and SpineJS.
## License
Copyright © 2016 Mihael Konjevic.
Distributed under the MIT License.