commanded

commanded/eventstore

Elixir MIT

Event store using PostgreSQL for persistence

1.2k stars
155 forks
slow
GitHub

1.2k

Stars

155

Forks

27

Open issues

5

Contributors

v1.4.8 06 Mar 2025

AI Analysis

An Elixir-based event store built on PostgreSQL for implementing event sourcing and CQRS architectures. It provides persistent event storage with support for clustering across multiple nodes, enabling scalable event-driven systems with strong consistency guarantees.

Documentation 9/10
Activity 7/10
Community 8/10
Code quality 8/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

event-sourcing cqrs elixir postgresql event-store
Actively maintained Well documented MIT licensed Popular Production ready
Deep Analysis · Based on README and public signals
1w ago

PostgreSQL-backed event store for Elixir, stable and production-proven but narrowly adopted

EventStore is an Elixir library providing event sourcing persistence using PostgreSQL as the storage backend. It enables appending, reading, and subscribing to event streams with built-in support for clustering, correlation tracking, and transactional guarantees. The project claims production use and is part of the broader `commanded` ecosystem for CQRS/ES patterns in Elixir. Adoption appears concentrated within the Elixir community, particularly among teams using the `commanded` framework, rather than widespread.

Origin

Created in 2016 as part of the `commanded` project ecosystem. It emerged during the wave of CQRS and event sourcing adoption in functional programming communities. Positioned as an Elixir-native alternative to language-agnostic event stores, leveraging PostgreSQL's reliability and transactions rather than building a custom storage engine.

Growth

Repository gained 1,152 stars over a decade, indicating stable but modest adoption. Growth appears driven by Elixir ecosystem adoption and interest in CQRS/ES patterns rather than by viral expansion. No stars gained in the last 7 days (as of 2026-06-30) suggests mature, plateaued adoption rather than accelerating interest. Recent activity (last push 2026-05-04) shows continued maintenance but not rapid feature velocity.

In production

README explicitly claims 'Yes, this event store is being used in production' but provides no specific case studies, company names, deployment scale, or quantified metrics. The statement is a declarative claim without third-party verification. Adoption is not verified beyond the project's own assertion.

Code analysis
Architecture

Based on README, the library exposes a high-level API for event stream management (append, read, subscribe). It appears to use PostgreSQL transactions for ACID compliance and supports clustering via distributed Elixir nodes. Event serialization defaults to JSON. Likely uses Postgrex driver for database interaction (based on similar repos). README does not detail schema design, query optimization, or internal concurrency patterns, so architectural depth cannot be fully assessed.

Tests

Not documented in README. CI badge indicates tests are run, but coverage metrics are not published.

Maintenance

Last push 2026-05-04 (within 2 months of evaluation date) indicates active maintenance. Changelog and upgrade guides suggest deliberate versioning. No evidence of abandonment or backlog decay in README. However, lack of recent star activity and modest fork count (155) suggest a stable project that is not attracting new contributors at scale.

Honest verdict

ADOPT IF: you are building an Elixir application using CQRS/ES patterns and want a battle-tested PostgreSQL-backed event store with clustering support, low operational overhead (PostgreSQL only), and transaction guarantees. AVOID IF: you need event store capability across polyglot services, require extensive vendor support, or need to avoid Elixir-specific tooling. MONITOR IF: you are evaluating the `commanded` ecosystem but unsure about long-term maintenance; the project shows active maintenance but modest growth trajectory, so ensure the broader `commanded` community remains viable.

Independent dimensions

Mainstream potential

3/10

Technical importance

6/10

Adoption evidence

3/10

Risks
  • Adoption is concentrated within the Elixir community; if Elixir adoption plateaus or declines, the project's user base may shrink.
  • Production use is claimed but not independently verified; no public case studies or deployment metrics available to validate reliability claims at scale.
  • Maintenance is steady but not accelerating; contributor base may be small, creating long-term sustainability risk if primary maintainers step back.
  • Tightly coupled to PostgreSQL; no support for alternative storage backends limits flexibility for teams considering multi-database strategies.
  • Documentation is README-centric; absence of published benchmarks, performance comparisons, or architectural deep-dives may hinder adoption by teams with strict performance requirements.
Prediction

EventStore will likely remain a stable, niche component within the Elixir ecosystem. It will continue to receive maintenance updates and security patches, but is unlikely to expand adoption significantly beyond the `commanded` framework community. Mainstream event-sourcing adoption in other languages and ecosystems (e.g., .NET, Java, Node.js) may continue to grow, but will use different tools, leaving EventStore as a perpetual Elixir-specific choice rather than a category leader.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Elixir
97.9%
PLpgSQL
2.1%

Information

Language
Elixir
License
MIT
Last updated
2mo ago
Created
126mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

commanded

commanded/commanded

Commanded is an Elixir framework for building CQRS/ES (Command Query...

2k Elixir
elixir-ecto

elixir-ecto/postgrex

Postgrex is a PostgreSQL driver for Elixir that enables communication between...

1.2k Elixir
elixir-horde

elixir-horde/horde

Horde provides distributed Supervisor and Registry capabilities for Elixir...

1.5k Elixir
supabase

supabase/realtime

Supabase Realtime is an Elixir/Phoenix server that enables real-time...

7.6k Elixir Dev Tools
sequinstream

sequinstream/sequin

Sequin is a high-performance change data capture platform for PostgreSQL that...

2.1k Elixir
vs. alternatives
commanded/commanded

EventStore is a component within the larger `commanded` CQRS framework (2,014 stars). `commanded` is the orchestrator; EventStore is the persistence layer. They are symbiotic, not competitive.

EventStoreDB (proprietary/open)

Standalone, language-agnostic event store with gRPC API. Serves teams across multiple languages; EventStore serves Elixir-specific use cases. EventStoreDB offers more operational tooling but adds deployment complexity.

Apache Kafka (event log)

Kafka is a distributed event log for streaming; EventStore is a transactional event sourcing library. Different use cases: Kafka for high-throughput pub/sub, EventStore for aggregate state reconstruction and audit trails.

Sequel or Ecto with custom schemas

Teams can implement event sourcing directly atop PostgreSQL via raw SQL or Ecto. EventStore saves boilerplate and provides subscription semantics; the tradeoff is reduced control and Elixir-specific coupling.

supabase/realtime (Elixir-based)

Realtime is a real-time database layer (7,592 stars); EventStore is a write-optimized event log. Different architectural goals, though both use PostgreSQL.