BranislavLazic/akka-cqrs-activator
41.1
Weak · 21 September 2026
1k
lines of production code
Scala
with JavaScript
4
measurements over time
What this system is
This system is a demonstration application built on Akka that implements a CQRS and event sourcing architecture. It manages the full lifecycle of issues—creation, updating, closing, and deletion—by persisting state changes as events to a Cassandra backend. The system exposes these operations through an HTTP API and a React-based frontend, utilizing Server-Sent Events for real-time updates.
How it got here
2017 — Initial CQRS and Event Sourcing implementation
8 changes.
The project was initialized as an Akka-based CQRS and event sourcing demonstration, establishing the core architecture with a React frontend, Akka HTTP API, and Cassandra backend. This period focused on setting up the foundational infrastructure, including configuration for Akka Persistence, Cassandra schema definitions, and test resources, while also refining the build system and dependencies.
2018–2020 — Issue management implementation
6 changes.
This period focused on implementing full issue management capabilities across the stack, including a React-based UI, an HTTP API with date filtering, and a write-side architecture with validation. The backend was updated to use Avro serialization and Cassandra for read models, while tests were added to cover the new routes, validators, and repository behaviors.
Features
Initial CQRS and Event Sourcing Configuration
The application now includes configuration for an event-sourced architecture using Akka Persistence with a Cassandra backend. This adds an \application.conf\ file defining serializers (including a new \IssueEventSerializer\), cluster settings, and Cassandra journal/snapshot store plugins. Additionally, a \schema.cql\ file is introduced to define the \issue\_tracker\ keyspace and \issues\ table structure, enabling the new read and write sides of the system.
src/main/resources · high confidence
Initial CQRS and Event Sourcing implementation with Cassandra persistence
The application now supports a CQRS architecture with an Akka-based backend that persists state to a Cassandra database. This change introduces the core infrastructure for data management, including a Cassandra connection manager, schema initialization logic, and configuration settings for the database and HTTP server. The system is now capable of handling read and write operations through separate models, with the main application entry point wiring together the Akka actors, the HTTP server, and the Cassandra read journal for event sourcing.
src/main/scala/org/akkacqrs · high confidence
Initial release of Akka CQRS and Event Sourcing demo application
The project is initialized as an Akka-based CQRS and event sourcing demonstration, featuring a React frontend, Akka HTTP API, and a Cassandra backend. The entry includes the addition of a Scalafmt configuration for code formatting, a Jekyll theme for documentation, and a Docker Compose setup for the Cassandra service. The README is updated to explain the architecture, including the write side (Akka Persistent FSM), read side (Cassandra), and the use of DistributedPubSub for eventual consistency.
(repo-wide) · high confidence
Issue management now enforces validation rules and manages actor lifecycle
Users can now create, update, close, and delete issues through a new write-side architecture. The \IssueRepository\ actor handles the full lifecycle (Idle → Created → Closed → Deleted) and persists events to a persistent store. Validation is enforced via \IssueCommandsValidator\, which checks that summaries are 2-100 characters, descriptions are under 1500 characters, and required fields are not null. The \IssueRepositoryManager\ routes commands to the correct repository actor based on issue ID and date, creating them on demand.
src/main/scala/org/akkacqrs/validator, src/main/scala/org/akkacqrs/write · high confidence
Migrate UI to React with new issue management features
The user interface has been fully migrated from AngularJS to React, introducing a new calendar-based navigation and an issue management system. Users can now select a date on a calendar to view, create, edit, close, and delete issues. The issue page displays a list of tickets with options to edit or close them, and includes a modal for adding new issues. Real-time updates for issue creation, updates, deletion, and closing are handled via Server-Sent Events (SSE).
ui · high confidence
Behavioural changes
Added HTTP server and issue API routes with date-based filtering
The API layer now includes a new HTTP server entry point and dedicated routes for managing issues. The server exposes endpoints for creating, updating, closing, and deleting issues, as well as retrieving them by date. A key behavioral change is that Server-Sent Events (SSE) streams are now filtered by date, ensuring clients receive only events relevant to the requested day. Additionally, a CORS handler has been introduced to manage cross-origin requests for the new API endpoints.
src/main/scala/org/akkacqrs/api · medium confidence
Introduces Avro-based serialization and read-model services for issue events
The system now uses Avro for serializing issue events, replacing the previous Protobuf-based approach. This change includes a new \IssueEventSerializer\ that handles serialization and deserialization of \IssueCreated\, \IssueUpdated\, \IssueClosed\, and \IssueDeleted\ events using Avro streams. Additionally, new \IssueService\ and \IssueResponse\ classes are introduced to manage the read model, subscribing to issue events via a tag and updating a Cassandra database. The \IssueTaggingEventAdapter\ is also added to tag events for easier querying.
src/main/scala/org/akkacqrs/adapter · medium confidence
Removed legacy Scala collection type aliases
The package object in the Akka CQRS activator template has been removed, eliminating the custom type aliases for Traversable, Iterable, Seq, and IndexedSeq that previously mapped to their immutable counterparts. This change simplifies the codebase by relying on standard Scala collections rather than maintaining redundant type definitions.
src/main/scala/default · high confidence
Test coverage
Add BaseSpec test base class; Added test resource files for unit tests; Added tests for IssueRoutes; Added tests for issue command validation and repository behavior.
Dependencies
Updated SBT build configuration and plugins
The SBT build environment has been upgraded to version 1.6.2. Several SBT plugins have been updated to newer versions: sbt-scalafmt to 2.3.0, sbt-git to 0.9.3, and sbt-header to 4.0.0. Additionally, new plugins for sbt-revolver, sbt-coursier, and sbt-assembly have been added to the build, and the legacy Build.scala and Dependencies.scala files have been removed in favor of the new plugin-based configuration.
project · medium confidence
Updated frontend and backend dependencies
The project's frontend (ui) dependencies were updated, including React 16.13.1, Ant Design 4.0.3, and Axios 0.21.1. On the backend, the build configuration was refactored to include a broader set of Akka libraries (Akka 2.5.32, Akka HTTP 10.1.9, Avro4s, Circe, and test libraries like Mockito-Scala and ScalaTest), and the SBT build was restructured to integrate the frontend build process.
(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
Score
- CAI 39 → 41 (+2.4)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 69 → 71 (+1.3)
- Architecture 69 → 69 (+0.0)
- Maturity 33 → 41 (+8.1)
- Readiness 24 → 24 (+0.0)
- Security 73 → 78 (+5.3)
Resolved (56)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical vulnerability: [GHSA redacted] (ui/yarn.lock)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High CVE: [GHSA redacted] (ui/yarn.lock)
- High CVE: [GHSA redacted] (ui/yarn.lock)
- …and 36 more
New (102)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical CVE: [GHSA redacted] (ui/yarn.lock)
- Critical vulnerability: [GHSA redacted] (ui/yarn.lock)
- Documentation: no usage examples (README.md)
- High CVE: [GHSA redacted] (ui/yarn.lock)
- High CVE: [GHSA redacted] (ui/yarn.lock)
- High CVE: [GHSA redacted] (ui/yarn.lock)
- …and 82 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
BranislavLazic/akka-cqrs-activator 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 2a8bab1cce745db552708d0d7e9ca6385c66fe50 — 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-fa71c66cabd8.