The Essential Server repository is a comprehensive implementation of the Essential declarative protocol as a centralized server. This project aims to provide a system for application developers to start building and experimenting with declarative applications. The decentralized node implementation with be built on top of the same foundation so will be a very similar experience.
Our server implementation offers various storage options, a REST API for interaction, and the core block building server that runs on top of essential base.
This repository is organized into several Rust crates.
essential-server: The core implementation of the Essential declarative protocol. It builds blocks and runs as a centralized server.
essential-storage: Defines the traits that abstract over various storage implementations used by the server. This allows for flexible and interchangeable storage backends.
essential-memory-storage: An in-memory implementation of the Essential storage system. Ideal for testing, development, or scenarios where persistence isn't required.
essential-rqlite-storage: A persistent storage implementation backed by rqlite, suitable for production environments requiring data durability and distribution.
essential-transaction-storage: A transactional layer that wraps any storage implementation, providing transactions that can span across await boundaries.
essential-rest-server: A lightweight HTTP REST server that facilitates interaction with the Essential application, allowing for easy integration and communication.
essential-server-types: A collection of common types and data structures used for communication between clients and the Essential REST server.
See the documentation.