commanded/commanded-ecto-projections
62.6
Adequate · 21 September 2026
383
lines of production code
Elixir
primary language
8
measurements over time
What this system is
This system is a library for building read model projections in Commanded CQRS/ES applications using Ecto for persistence. It provides a mechanism to track projection versions, handle errors, and support multi-tenant schema prefixes. The codebase includes configuration for environment-specific setups and test infrastructure for validating projection behavior.
Features
Add Ecto-based projection support with configurable schema prefixes and error handling
Introduces a new \Commanded.Projections.Ecto\ module that enables defining read model projections using Ecto. This change allows users to configure the \schema\_prefix\ via application environment or as an optional callback function, and supports passing additional projector configuration options to the underlying Commanded event handler. The implementation includes an \after\_update/3\ callback for post-processing and robust error handling that catches \Ecto.Multi\ build errors and passes them to an optional \error/3\ callback.
lib/projections · high confidence
Initial release of Commanded Ecto Projections
This change introduces the initial version of the Commanded Ecto Projections library, providing a way to create read model projections for Commanded CQRS/ES applications using Ecto for persistence. The diff adds the core library files, including a \.formatter.exs\ for code formatting, a \.tool-versions\ file specifying Elixir 1.15.7 and Erlang 25.3.2.8, and a \CHANGELOG.md\ documenting the history from v0.4.0 to v1.4.0. It also includes a \README.md\ that explains the library's purpose, provides an example projector, and links to further documentation. The \LICENSE.md\ and \.gitignore\ files are also added to complete the repository structure.
(repo-wide) · high confidence
Behavioural changes
Added database migrations for projection version tracking
New Ecto migrations were added to the database schema to track projection versions. The first migration creates a \projection\_versions\ table in the default schema, storing the last seen event number for each projection. A second migration creates an identical \projection\_versions\ table within a separate \test\ schema prefix, enabling support for multi-schema deployments where projections are isolated by schema.
priv · high confidence
Modernized configuration structure for Elixir 1.9+
The project's configuration has been modernized to use the new \import Config\ syntax and environment-specific config files (dev, prod, test). The main \config.exs\ now imports environment-specific files, and the \test.exs\ file explicitly configures the \commanded\_ecto\_projections\ application with a dedicated test database and logging settings, ensuring proper isolation and environment separation.
config · medium confidence
Removed Ecto projection module
The \Commanded.Projections.Ecto\ module has been removed from the library. This eliminates the Ecto-based projection implementation, meaning users relying on this specific projection strategy will need to migrate to an alternative approach.
lib · high confidence
Test coverage
Added test support modules for Ecto-based projections; Added tests for projection lifecycle callbacks and schema prefixing; Updated test setup and removed obsolete test file.
Dependencies
Updated project configuration and dependencies
The project's \mix.exs\ has been updated to require Elixir 1.12+ and specifies dependencies for Commanded (\~\> 1.4), Ecto (\~\> 3.11), and Ecto SQL (\~\> 3.11), alongside test and build tooling like Dialyxir, ExDoc, and Mox. The \mix.lock\ file has been added to pin the exact versions of all dependencies, including Ecto 3.11.1, Commanded 1.4.3, and Telemetry 1.2.1, ensuring reproducible builds.
(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 58 → 63 (+4.4)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 41 → 45 (+4.4)
- Readiness 64 → 79 (+14.9)
- Security 97 → 93 (-4.0)
Resolved (7)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — no supported dependency manifest was read
- High CVE: [GHSA redacted] (mix.lock)
- Medium CVE: EEF-[CVE redacted] (mix.lock)
- No exposed public API
- Test reliability not included
- dormant codebase — no living knowledge left to concentrate
New (23)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- High CVE: [GHSA redacted] (mix.lock)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium CVE: EEF-[CVE redacted] (mix.lock)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No dependency advisory monitoring
- Outdated: commanded
- Outdated: dialyxir
- Outdated: ecto
- Outdated: ecto_sql
- Outdated: ex_doc
- Outdated: jason
- Outdated: mix_test_watch
- …and 3 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
commanded/commanded-ecto-projections 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 34e7660e2f195f44bb6e1b1948fb9f09502f8355 — 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-b84573e22831.