I'm Patric, and I just hit a major milestone - Genesis DB 1.0.(1) is officially production-ready.
Why I built this:
Existing event sourcing tools felt too heavy, opinionated, or expensive. I wanted something that matches how developers actually think about events - simple, transparent, and powerful.
What Genesis DB is:
- Event sourcing database engine written in Go
- HTTP + JSON interface (no proprietary protocols)
- Smart validation - Preconditions act as gatekeepers, enforcing business logic before writes hit the database
- Schema registration - Automatic event validation for type safety and data consistency
- Native GDPR compliance - One-command user data deletion, full data portability, built-in audit trails
- Battle-tested performance - Thousands of events/second, zero data loss, stable under load
- ...
The journey:
- Started because I love event-driven architectures but hated the tooling complexity
- A few versions, each adding features
- Now processing real production workloads across multiple industries
Want to try it?
- Free tier: 10,000 events for testing/small projects (I’m not here to be the biggest cost factor in any business. If you’ve got special requirements, let’s talk.)
- Self-host or use the managed platform (coming soon)
Amazing, well done. Having used Go for something similar can understand why you chose that for this venture. Wondering if there was anything in particular worked out for you with that decision?
I've been using Go for some time now. I've never programmed with Rust before, and it seemed appropriate to use Go for this project. In my initial prototypes of an event sourcing system that I experimented with last year, I used PHP (yes PHP) with either PostgreSQL or MySQL and a few other things. A major advantage of Go is its backward compatibility, which certainly makes maintenance easier.
That's a valid question. At the very least, disclosing the libraries being used might even be mandatory. I'll check on that asap and add it to the documentation.
I think the adoption hurdle will be hard unless you have a free plan that can be used for small things indefinitely. Having a hard cap on events would make me pass on this for fun side projects, which is where I would pivot later from to work projects. Just throwing that out there. This is why my last work project was supabase, I was using their free tier for some fun personal stuff.
If you have another vector for adoption that's fine too.
I understand. Honestly, it was never my intention to get rich with this project. Covering a bit of the development time, servers, and so on would already be nice. Since Genesis DB doesn't limit the number of instances you can run, I would have happily used it myself as a developer at that price point. I've thought about a one-time payment model before. But as I said, I do understand your perspective.
this looks very cool. Rigging together your own event sourced Db is doable, but it gets a little annoying over time to keep DIYing everything, doing snapshot optimizations, etc...
one note: searchability on your query language named GQL may not be great, given the whole graphql thing.
I've experimented quite a bit and I'm familiar with some of those concepts, in fact, I even looked at them early on in development. But my goal was to build more than just a wrapper around SQL.
tbh – this pretty much looks like they straight-up copied another database that dropped earlier this year. looks like GenesisDB grabbed all its ideas from here:
I've definitely taken inspiration from some great ideas out there, but Genesis DB is built on my own design choices and implementation. The earlier concepts behaved quite similarly, with the main difference being that back then I hadn't implemented the CloudEvents standard or event hash-chaining yet. I later found both to be really valuable additions. The idea of event chaining isn't new for example, I just hadn't had it on my radar for very long.
Really? You built this bc “tools felt too heavy, opinionated, or expensive” — LOL… or just bc there was such a nice blueprint you could use for inspiration…?!
One approach is to keep track of the ID of the last consumed event and use that as the starting point for rehydration. That way, even after a migration or failover, the stream can resume efficiently without replaying the entire history.
TimescaleDB looks great and is built on top of Postgres. Genesis DB, in contrast, is a straightforward (if not simpler) event store that manages data differently than Postgres. That said, TimescaleDB is definitely worth a look.
Event sourcing gives you all the technical overhead of replayable transactions while giving your end-users none of the benefits (e.g. undo/redo). It's purely an infrastructure-level feature that only makes auditors and sysadmins happier.
Event sourcing doesn't directly address this. However, the "undo" functionality is not a feature of event sourcing itself, but rather something your application needs to implement. Sure, you can implement that functionality without event sourcing, but it becomes problematic if you decide to add it later.
I find GenesisDB difficult in several respects. On the one hand, there is its similarity to EventSourceDB and the fact that it is almost a 1:1 copy, for example in terms of the query language. On the other hand, the performance of GenesisDB is anything but acceptable, i noticed some query language bugs and the PHP and JavaScript SDKs are offered without testing. But now comes the critical point: it's a one-man show, without open source, which raises the question: why should as a person or as a company rely on GenesisDB for its project?
Thank you for your comment! I think it's actually your very first one on Hacker News, or am I mistaken?
If you run into bugs and want to share them, please just open an issue in the GitRepo's, or send us a message, ... Genesis DB is already being used in production projects, and so far issues that came up have been addressed in newer builds, including performance.
On performance specifically, it would be really helpful to know more about your setup: machine, architecture, how much RAM, ... Performance issues mainly existed in the very early versions, some of which were still SQL wrappers.
On the "one-man show" point: The architecture of your software can allow you to swap out the underlying database system, meaning you're not dependent on anyone. Thanks to CloudEvents, your data remains compatible with other CloudEvents-supporting systems.
In the end, it's up to everyone to decide which software they want to use.
29 comments
[ 2.6 ms ] story [ 70.3 ms ] threadI'm Patric, and I just hit a major milestone - Genesis DB 1.0.(1) is officially production-ready.
Why I built this: Existing event sourcing tools felt too heavy, opinionated, or expensive. I wanted something that matches how developers actually think about events - simple, transparent, and powerful.
What Genesis DB is:
- Event sourcing database engine written in Go
- HTTP + JSON interface (no proprietary protocols)
- CloudEvents native with zero vendor lock-in
- One-command backups/restores
- Built-in Prometheus metrics & structured logging
Major features that made it to 1.0:
- Smart validation - Preconditions act as gatekeepers, enforcing business logic before writes hit the database
- Schema registration - Automatic event validation for type safety and data consistency
- Native GDPR compliance - One-command user data deletion, full data portability, built-in audit trails
- Battle-tested performance - Thousands of events/second, zero data loss, stable under load
- ...
The journey:
- Started because I love event-driven architectures but hated the tooling complexity
- A few versions, each adding features
- Now processing real production workloads across multiple industries
Want to try it? - Free tier: 10,000 events for testing/small projects (I’m not here to be the biggest cost factor in any business. If you’ve got special requirements, let’s talk.)
- Self-host or use the managed platform (coming soon)
Full docs at https://docs.genesisdb.io
Thanks for reading!
I think the adoption hurdle will be hard unless you have a free plan that can be used for small things indefinitely. Having a hard cap on events would make me pass on this for fun side projects, which is where I would pivot later from to work projects. Just throwing that out there. This is why my last work project was supabase, I was using their free tier for some fun personal stuff.
If you have another vector for adoption that's fine too.
one note: searchability on your query language named GQL may not be great, given the whole graphql thing.
Admittedly, these options seem to not be quite as user friendly as OP's solution.
https://hub.docker.com/r/thenativeweb/eventsourcingdb
take a look and see for yourself… #copycat
I’m one of the creators of EventSourcingDB, and the CTO of the native web (the company behind EventSourcingDB).
Because of ongoing legal investigations I can’t comment any further, but I’d like to provide you with some links, so you can see for yourself:
https://www.eventsourcingdb.io
https://docs.eventsourcingdb.io
https://hub.docker.com/r/thenativeweb/eventsourcingdb
https://www.cqrs.com
https://www.eventsourcing.ai
Here is the original:
https://www.eventsourcingdb.io
Has this group done testing for how long it takes for different sizes of streams to rehydrate?
"Logs like a Philosopher."
Mean? Did you mean sage? I dont want my logs to make me contemplate the meaning of life.
If you run into bugs and want to share them, please just open an issue in the GitRepo's, or send us a message, ... Genesis DB is already being used in production projects, and so far issues that came up have been addressed in newer builds, including performance.
On performance specifically, it would be really helpful to know more about your setup: machine, architecture, how much RAM, ... Performance issues mainly existed in the very early versions, some of which were still SQL wrappers.
On the "one-man show" point: The architecture of your software can allow you to swap out the underlying database system, meaning you're not dependent on anyone. Thanks to CloudEvents, your data remains compatible with other CloudEvents-supporting systems.
In the end, it's up to everyone to decide which software they want to use.