https://github.com/ralphv/gallifrey-rules
A modern robust framework for handling real-time events
https://github.com/ralphv/gallifrey-rules
Last synced: over 1 year ago
JSON representation
A modern robust framework for handling real-time events
- Host: GitHub
- URL: https://github.com/ralphv/gallifrey-rules
- Owner: ralphv
- License: lgpl-3.0
- Created: 2024-08-07T20:35:11.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-02T15:34:07.000Z (over 1 year ago)
- Last Synced: 2025-04-10T06:17:12.280Z (over 1 year ago)
- Language: TypeScript
- Size: 15.7 MB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Roadmap: docs/ROADMAP.md
Awesome Lists containing this project
README
Gallifrey Rules
A modern robust framework for handling real-time events
Get Started »
Read the Docs
.
Sample Application
### Interested in Gallifrey-Rules?
I offer free one to one sessions via Google Meet to kick-start adoption or to answer questions about the library.
Please reach out at `mail[at]gallifrey-rules.dev`
### What is Gallifrey-Rules?
[Read the introduction here.](https://gallifrey-rules.dev/docs/intro)
### Features at a glance
* **Structured Event-Driven Architecture (EDA)**: Enforces a disciplined approach to event-driven development, ensuring consistency and best practices across your projects.
* Transform **Consumer Blackbox** => Modular design with Filters, Rules, DataObjects, and Actions as customizable plugins, enabling seamless extension and flexibility.
* **Dynamic Plugin Management**: All modules, including plugins and providers, are dynamically loaded and referenced by name,
* **Namespace-Oriented Projects**: Projects are organized into **Namespaces**, each consisting of a **Namespace Schema** and a list of modules, promoting modularity and reusability.
* **Abstracted Configuration Management**: Configurations are managed through an abstracted provider, allowing them to be sourced from any backend, ensuring flexibility in various environments.
* **Logging and Metrics**: Logging and metrics are abstracted behind providers, offering a consistent and extensible approach to monitoring and diagnostics. Out of the box support for [InfluxDB](https://www.influxdata.com/)/[Grafana](https://grafana.com/).
* **Journal Logging**: Capturing/grouping high level logs that happen during a single event.
* **Scheduled Events Support**: Native support for scheduling events in the future, with rules that can seamlessly trigger new events based on business logic.
* **Distributed Locks**: Out-of-the-box support for distributed locks, enabling atomic event processing and ensuring data integrity across distributed systems.
* **Asynchronous Actions**: Actions can be easily converted into Async Actions with dedicated consumer topics, allowing for efficient time management and workload distribution.
* **Comprehensive Metrics Tracking**: Tracks counts and durations for each plugin type, enabling quick identification of performance bottlenecks, such as slow data pullers or actions.
* **Enforced Naming Conventions**: Consistent naming conventions across the library, enhancing the developer experience and reducing the likelihood of errors.
* **Resilient Error Handling**: The ReactToFailure mechanism is abstracted behind a provider, giving developers control over how to handle unexpected errors in a customizable and consistent manner.
* Fully supports [TypeScript](https://www.typescriptlang.org/).