Event Sourcing is a data storage paradigm that saves changes in your application state rather than the state itself.
It is powerful as it enables rewinding to a previous state and exploring audit trails for debugging or business/legal purposes. It also integrates very well with event-driven architectures.
However, it is tricky to implement 😅
...well, not anymore 💪
👉 Get StartedCastore is in TypeScript. Outside from that, it can be used pretty much anywhere: Web apps, containers, Lambdas... you name it 🙌
For instance, EventStore
classes are stack agnostic: They need an EventStorageAdapter
class to interact with actual data.
You can code your own EventStorageAdapter
(simply implement the interface), but it's much simpler to use off-the-shelf adapters like the DynamoDBEventStorageAdapter.
Castore is a collection of utility classes and helpers, but NOT a framework: While some classes require compatible infrastructure, Castore is not responsible for deploying it.
Though that is not something we exclude in the future, we are a small team and decided to focus on DevX first.
Speaking of DevX, we absolutely love TypeScript! If you do too, you're in the right place: We push type-safety to the limit in everything we do!
The Event Sourcing journey has many hidden pitfalls. We ran into them for you!
Castore is opinionated. It comes with a collection of best practices and documented anti-patterns that we hope will help you out!
It also comes with an awesome collection of packages that will make your life easy, e.g. when working on unit tests, data migration or data modelling.