mishudark/eventhus
58.5
Adequate · 21 September 2026
1.2k
lines of production code
Go
primary language
4
measurements over time
What this system is
Features
Add Badger-based event store implementation
A new event store backend using BadgerDB has been added to the eventstore/badger package. The implementation provides Save, SafeSave, and Load operations for event-sourced aggregates, along with a NewClient constructor and corresponding unit tests that verify client creation, event persistence, and retrieval.
eventstore/badger · high confidence
Add RabbitMQ event bus implementation
Users can now publish events to a RabbitMQ broker via a new \eventbus/rabbitmq\ package. This adds a \Client\ that connects to RabbitMQ using the \streadway/amqp\ library and provides a \Publish\ method that marshals events to JSON, declares a direct exchange, and sends messages with persistent delivery mode.
eventbus/rabbitmq · high confidence
Add ULID-based UUID generation utility
A new utility function has been added to generate unique identifiers using the ULID algorithm, providing an alternative to standard UUIDs for users requiring time-sortable, compact, and URL-safe unique IDs.
utils · medium confidence
Add bank example demonstrating CQRS and event sourcing
The examples/bank directory now includes a complete bank account example that demonstrates the toolkit's CQRS and event sourcing capabilities. The example defines an Account aggregate that processes CreateAccount, PerformDeposit, PerformWithdrawal, and ChangeOwner commands, mapping them to corresponding domain events (AccountCreated, DepositPerformed, WithdrawalPerformed, OwnerChanged). It also includes a docker-compose configuration for running MongoDB and NATS, and command/event type definitions for the bank domain.
examples/bank · high confidence
Add bank example demonstrating CQRS and event-driven architecture
A new bank example was added to the examples/bank/cmd directory, demonstrating how to use the Eventhus toolkit for CQRS and event-driven architecture. The example configures a command bus with MongoDB for the event store, NATS for the event bus, and async command handling. It showcases creating an account, performing deposits, and executing withdrawals through a command handler, illustrating the integration of aggregates, commands, and event registration.
examples/bank/cmd · medium confidence
Add basic generic command handler
Introduced a new basic command handler in the commandhandler/basic package. This handler manages commands by loading an aggregate from the repository, handling the command, validating the aggregate's ID, saving the updated state, and publishing any resulting events.
commandhandler · high confidence
Added Mosquitto-based event bus implementation
A new event bus implementation using Mosquitto (MQTT) has been added to the codebase. This introduces a \Client\ struct that connects to an MQTT broker (defaulting to localhost:1883) and provides a \Publish\ method to serialize and publish events as JSON payloads to specified topics.
eventbus/mosquitto · high confidence
Added NATS.io event bus implementation
A new NATS.io-based event bus implementation has been added to the codebase. This introduces a \Client\ struct and associated methods (\NewClient\, \Publish\) that enable publishing events to NATS subjects, serializing them as JSON payloads. This provides an alternative transport mechanism for the event bus, allowing users to leverage NATS for event distribution.
eventbus/nats · high confidence
Added multi-publisher support for the event bus
The eventbus package now includes a MultiPublisher that allows publishing events to multiple underlying event bus implementations simultaneously. It aggregates errors from all publishers, returning a MultiPublisherError if any publisher fails, and includes a Logger adapter for logging event details.
eventbus · high confidence
Introduce asynchronous command bus with worker pool
Added a new asynchronous command bus implementation in the \commandbus/async\ package. This introduces a \Bus\ that manages a pool of workers to process commands concurrently, allowing commands to be queued and handled asynchronously rather than synchronously.
commandbus · high confidence
Behavioural changes
Functional configuration API for event bus, event store, and command bus
The application now uses a functional configuration pattern to initialize core infrastructure components. Users can now create event bus implementations for RabbitMQ, NATS, and Mosquitto, as well as event store implementations for MongoDB and BadgerDB, using dedicated builder functions. Additionally, an asynchronous command bus is provided for handling commands with a specified number of workers.
config · medium confidence
Migrate eventstore/mongo to use the eventhus package
The MongoDB event store implementation has been updated to use the eventhus package instead of the previous cqrs framework. This change updates all type references from cqrs.Event and cqrs.EventStore to eventhus.Event and eventhus.EventStore, and replaces the event register with eventhus.NewEventRegister(). Additionally, the test file now includes a build tag for integration tests, and the test cases have been adjusted to use the new eventhus types and simplified event type names.
eventstore/mongo · high confidence
Project renamed to Eventhus and migrated to its own package
The project has been renamed from 'cqrs' to 'eventhus', with the Go package name updated from 'cqrs' to 'eventhus' across all source files (event.go, event\_test.go, eventstore.go). The event type registry has been refactored to use a global registry with mutex-based concurrency control, and the 'Register' method has been renamed to 'Set' to reflect this change. Additionally, the 'GetTypeName' helper was added to handle pointer types and extract type names.
(repo-wide) · high confidence
Dependencies
Add Go module definition and dependencies
The project now includes a go.mod file that defines the module as github.com/mishudark/eventhus and specifies its Go version (1.13) along with all required dependencies, including libraries for BadgerDB, MQTT, NATS, AMQP, and various utility packages.
(dependencies) · medium confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 57 → 59 (+1.5)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 99 (+0.4)
- Architecture 69 → 69 (+0.0)
- Maturity 49 → 49 (+0.0)
- Readiness 50 → 54 (+3.9)
- Security 85 → 92 (+6.5)
Resolved (11)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (14 lines × 2) (eventstore/badger/badger.go)
- Duplicated block (16 lines × 2) (eventstore/badger/badger.go)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- OSV Dependency Vulnerabilities not included (check did not complete)
- Test reliability not included
- The README does not mention configuration or how to set up the event store or publisher (Config; Event Store; Event Publisher) (README.md)
- dormant codebase — no living knowledge left to concentrate
New (27)
- Critical CVE: [GHSA redacted] (go.sum)
- Dependency pinned to a stale untagged commit: github.com/golang/glog
- Dependency pinned to a stale untagged commit: github.com/streadway/amqp
- Dependency pinned to a stale untagged commit: gopkg.in/mgo.v2
- Deprecated module: github.com/streadway/amqp
- Documentation: no architecture or design documentation (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (12–14 lines × 2) (eventstore/badger/badger.go)
- Duplicated block (16 lines × 2) (eventstore/badger/badger.go)
- High CVE: [GHSA redacted] (go.mod)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium CVE: [GHSA redacted] (go.mod)
- Medium CVE: [GHSA redacted] (go.mod)
- Medium CVE: [GHSA redacted] (go.mod)
- Medium CVE: GO-2021-0226 (go.mod)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- …and 7 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
mishudark/eventhus was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 9c41720129ae612f74ffbe86efd87e9b52d189b6 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.