Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sackosoft/sanctum

Sanctum is an event streaming and storage platform which can be scripted by "spells" written in Lua or Wren.
https://github.com/sackosoft/sanctum

event-driven event-streaming lua zig

Last synced: about 1 month ago
JSON representation

Sanctum is an event streaming and storage platform which can be scripted by "spells" written in Lua or Wren.

Awesome Lists containing this project

README

        

# Sanctum

Welcome, sorcerer, to the Sanctum. Write spells in Lua for transforming and acting on event streams of magical energy.

## What is Sanctum?

Sanctum is a platform that enables sorcerers to craft powerful spells that process and transform event streams. Sorcerers
focus on writing spells in their preferred language, while Sanctum handles the complexities of event storage, state and routing
these energies across the ethereal planes.

For more detailed reference information and documentation, refer to the [`docunomicon`](./docunomicon).

## Roadmap

# Release Roadmap

## v0.1 Proof of Concept - **Active**

Demonstrates event processing with Spells on a throw-away runtime. Sanctum runs as a CLI application and
covered by a suite of regression tests to enable building and refactoring the core engine. Runs on a
single node (no networking, no persistence).

- [ ] Docunomicon - Definition and example of Lua spells
- [x] Minimal documentation for spells in the runtime.
- [ ] Detailed documentation for spells in the runtime.
- [ ] Exhaustive documentation for spells in the runtime.
- [ ] Spell Casting
- [x] Spells can be loaded dynamically into the sanctum from files.
- [ ] Spells are loaded and unloaded with the prepare and unprepare lifecycle hooks.
- [x] Counting loop spell is added with a reusable regression test.
- [x] Many reusable regression tests can be defined.
- [x] Regression tests are fully self-contained. Seed events, the initial event loop event,
can be specified in Lua and loaded by the runtime.
- [x] Malformed spells (spell parse failure) are handled gracefully.
- [x] Handle parsing failing line number from errors Lua message.
- [x] Unstable magic (internal spell failures) is handled gracefully.
- [ ] Spells can consume magical energy (events).
- [ ] Magical energies are always internally stored as MessagePack buffers.
- [ ] Spells can produce magical energy or act as a terminal action, producing nothing.
- [ ] Remove this section from the README, create release notes and initial release artifacts.

## v0.2 Prototype - Pending

Upgrades the runtime with persistence for events and spell state. Sanctum can be used for real workloads with no guarantees.
Runs on a single node (no networking).

- [ ] Storage Engine MVP
- [ ] Durable event logging.
- [ ] Durable spell state
- [ ] Spells can leverage a library for saving and loading data.
- [ ] Spells can use a key value store.
- [ ] Spells can leverage range queries (e.g. SELECT * FROM state WHERE v > 10 AND v < 20). I.e. support clustering in state store.
- [ ] (Option) Link SQLite?
- [ ] (Option) Provide simple data structures, serialize and save to disk?
- [ ] Add initial logging and metrics to identify performance characteristics.

## v1.0 Beta - Pending

Sanctum fully featured as an MVP.

- [ ] Production Readiness
- [ ] Crash recovery guarantees.
- [ ] Limits defined and scale targets established.
- [ ] Platform Stability
- [ ] API contracts
- [ ] Documentation
- [ ] Performance optimization

## Glossary

Novice sorcers may struggle to uncover the mysteries of the Sanctum:

| Mystical Term | Technical Meaning |
|---------------|-------------------|
| Sanctum | A scriptable event streaming and storage platform. |
| Sorcerers | Developers building on Sanctum. |
| Spells | User-defined modules invoked with events in an event stream. Spells may cause new events to be created. |
| Energy Streams | Ordered event streams with immutable data. |
| Runes | Configuration options. |
| Runeset | YAML configuration file of options which can be used by the Sanctum or its Spells. |

## Want to help?

Thank you, brave scholar of the dark arts, please refer to [CONTRIBUTING.md][CONT].

[CONT]: ./Contributing.md

## Project Status

Incubation.

*This mystical undertaking is still in its early phases.*