🏗️ Core

Graviton is frontend agnostic editor, which means that it's Core can be re-used to build other Editors with different frontend implementations.

The Core provides a set of components as a base:

State

A State, identified by an ID, is a piece of data that holds the current state of the editor, like opened Tabs or configured Hotkeys.

They can be persisted if a State Persistor is provided, like a File Persistor or a Memory Persistor.

Use Case

In a situation like a desktop code editor, it doesn't make sense to hold multiple States. That's why The Desktop client only uses one. But, using Graviton as a remote service it might make sense to hold multiple states, plus an authentication system.

Filesystem

States can also load any kind of FileSystem implementation, this makes the work easier for the frontends.

Examples:

Extensions

Extensions are written in Rust. But bindings to other languages can be done, like core_deno which allows JavaScript/TypeScript extensions to be executed.

Examples:

Modules

These set of basic modules are small abstraction over common UI widgets.

Examples