DEV Community

taymour
taymour

Posted on

Why I built ElysianDB

Most projects don’t fail because of a lack of ideas.
They slow down for a more structural reason: backend decisions are either made too early, or postponed behind mocks that no one truly trusts.

At the beginning of a project, teams want momentum. They want to explore features, validate user flows, and iterate quickly. But they still need a backend that behaves like a real system. Not a fragile mock that will collapse as soon as authentication, permissions, or relations appear. And not a fully designed architecture that assumes too much about a product that barely exists.

This tension is common and it is costly.

Mocks tend to grow until they resemble a backend without its guarantees. Meanwhile, real backend implementations often start with constraints that later turn out to be wrong. In both cases, teams end up rewriting significant parts of what they built, either because it was never meant to last, or because it was designed too early.

ElysianDB was born from that gap.

The project is written in Go and built around a simple idea: allow teams to start with a real backend from day one, without locking themselves into architectural decisions that should only be made once the product is clearer.

ElysianDB starts from raw JSON. You store documents, and a usable API exists immediately. CRUD endpoints are available without scaffolding. Queries are real. Persistence is real. Authentication and access control are enforced from the beginning. Frontends do not talk to placeholder... they talk to an actual system.

The key idea is continuity.

Early in a project, ElysianDB relies on a fast and lightweight internal storage engine. It is designed for rapid iteration, minimal setup, and low friction. At that stage, the priority is not maximum durability or horizontal scalability, but speed of feedback and the ability to change direction safely.

As the project evolves, requirements change. Data grows. Reliability becomes critical. Instead of redesigning the backend or migrating APIs, ElysianDB allows the storage layer to evolve. By switching configuration, the same API can run on MongoDB. Endpoints stay identical. Contracts remain stable. The frontend does not need to adapt. The system grows without breaking what was already built.

Behavior and permissions inevitably follow data.

ElysianDB addresses this through hooks and access control lists. Hooks are written in JavaScript and executed at read time, making it possible to enrich or transform data dynamically without mutating stored documents or embedding business logic too early into backend code. ACLs define permissions explicitly and enforce them consistently, instead of being retrofitted once the application is already live.

Both are managed through a web-based admin interface. This is not about hiding complexity, but about making it visible and adjustable as the system evolves. Rules and behavior can change as understanding improves, without forcing a structural rewrite.

ElysianDB is still under active development. It is not yet a mature, all-encompassing backend solution, and it does not claim to be one. What matters here is the direction it takes and the problem it addresses: reducing backend friction without pretending that complexity does not exist.

It is not designed to replace carefully crafted domain-driven systems, nor to compete with large backend platforms. Its goal is more modest and more practical: provide a trustworthy backend early, keep it honest as the project grows, and delay irreversible decisions until they are actually justified.

If this way of building resonates with you, I would genuinely like to know where you would use ElysianDB... and where you would not.

https://github.com/elysiandb/elysiandb

Top comments (0)