Akala is a framework that aims to provide kind of a mix between angular, redux, uci and pm2.
It is composed of multiple layers
- jsonrpc: base communication layer (obviously other protocols can be used, but this one is the firstclass choice.
- core: base layer containing all necessary implementations for subsequent layers: modules, dependency injection, 2way data binding, …
- commands: base layer to implement a redux-like system.
- configuration: on top of commands, sits the configuration layer. It has various way to control configuration content, so could be used without commands, but having commands implementation makes it depending on commands layer.
- storage: storage layer is my vision of an ORM in javascript. (currently not many providers are supported, but it might grow in the future).
Up to here, all previously mentioned layers are usable from either client or server side (understand browser or nodejs). Then comes the platform specific layers.
- pm: process manager. It says it all: this layer is a docker like system which you can control using the commands layer. Each process can be started with its own arguments (like a docker container).
- server: node layer. It basically supports server side command triggers like http (This permits to have commands being served by http).
- client: browser layer heavily inspired from angularjs and angular from a concept perspective, but with a radically different usage approach.
%%{ init: { 'flowchart': { 'curve': 'linear' } } }%%
flowchart TB
json-rpc-ws -.-> core
cli -.-> core
storage -.-> core
commands -.-> json-rpc-ws & cli
configuration -.-> commands
pm -.-> commands
server -.-> commands
client -.-> commands