Skip to content
philosophy contribute

Contribution

Levl’s software stack includes:

  • SolidJS: A UI framework that looks very similar to React but is vastly superior in terms of performance and developer experience. A smooth learning curve for React developers.
  • Yjs: A CRDT framework that’s used as a storage and network backend. See SharedStore for more.

The ./app directory contains the core elements of the UI. This includes the initialization logic, connections, sidebar, etc.

The logic for user-facing functionality is expected to live under ./plugins/ in a more modular form.

A plugin has both server and client parts, and so it must be loaded on both sides for it to work.

The entire persistence and network stack is based on a custom class called SharedStore. Every plugin gets one of its own, and every contributor also gets one.

The idea is that a plugin (running on either the server or the client) only has to care about presenting and manipulating its state and nothing else.

It has the following features:

  • Expose a simple javascript object as state.
  • Maintain synchronization of this object state across the network.
  • Provide a reactive (SolidJS signal based) layer that updates the UI in real time on any changes to this object.
LocationDescription
./cli.tsthe levl command
./appthe app (i.e. GUI client)
./coreserver, client and plugins infra
./pluginssee plugins
./extras/docsthe docs container (what you see now)