Skip to content
CAI
Software that uses CAICheck a score

mschuwalow/zio-todo-backend

51.1

Adequate · 20 September 2026

370

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a ZIO-based Todo-Backend API that manages a list of todo items through HTTP endpoints. It provides full CRUD functionality for creating, reading, updating, and deleting tasks, backed by an H2 database with Flyway migrations. The application is built using Scala 2.13, ZIO 2, http4s, and Doobie, and is packaged for containerized deployment via sbt.

Features

Initial database schema, logging configuration, and application settings

The application now includes an initial database migration (V1) that creates a TODOS table with ID, TITLE, COMPLETED, and ORDERING columns. Logging has been configured using Log4j2 with console output for the application and repository packages, replacing the previous log4j.properties setup. Application configuration has been expanded to define structured settings for the API (port and base URL) and the database (H2 in-memory driver, user, and password).

src/main/resources · high confidence

Behavioural changes

Adopts Scalafmt for code formatting and updates project configuration

The project has switched its code formatting tool from Scalastyle to Scalafmt (version 3.8.3), introducing a new .scalafmt.conf and .scalafix.conf to manage style rules and import organization. This change includes migrating the Scala dialect to 2.13 and updating the .gitignore to reflect modern build tool artifacts. Additionally, the README has been updated to clarify the project's identity as a ZIO-based Todo-Backend implementation and includes a CI badge.

(repo-wide) · high confidence

Migrate to ZIO 2 and Doobie for database access

The application's core logic and data access layer have been rewritten to use ZIO 2 and Doobie. The previous repository implementation has been replaced with DoobieTodoRepository, which uses Doobie for SQL operations and HikariCP for connection pooling, managed via a new database configuration layer. The main entry point and API startup have been updated to use ZIO 2's runtime and configuration providers, and the HTTP routes have been refactored to align with the new ZIO 2 effects and Doobie-based repository.

src/main/scala/com/schuwalow/todo · high confidence

Removal of legacy Scala 2.12 ZIO and Cats Effect entry point

The application's main entry point and domain model definitions have been removed. This change eliminates the previous implementation which relied on the \scalaz-zio\ library (specifically \ZIO\ from \scalaz.zio\) and \cats-effect\ for runtime management, along with \http4s\ and \pureconfig\ for configuration and server setup. The deleted \Main.scala\ contained the logic for bootstrapping the HTTP server and dependency injection, while \domain.scala\ defined the core \TodoItem\ data structures. This cleanup prepares the codebase for the migration to Scala 2.13 and the switch to the native ZIO ecosystem.

src/main/scala/com/schuwalow/zio/todo · high confidence

Removal of legacy ZIO 1.x repository implementation

The \TodoRepository\ trait, its \InMemoryTodoRepository\ implementation, and the associated \package.scala\ delegation layer have been removed from the codebase. This change eliminates the legacy \scalaz.zio\-based repository code, which previously provided in-memory storage and access methods for todo items, indicating a migration away from the older ZIO 1.x API surface.

src/main/scala/com/schuwalow/zio/todo/repository · high confidence

Test coverage

Added test suite for TodoRepository and HTTP API; Removed legacy ScalaTest-based test suite; Updated test configuration resources.

Dependencies

Initial project scaffolding with Sbt 1.11.3 and ZIO 2 ecosystem

The project has been initialized with a new build structure using Sbt 1.11.3, replacing any previous build configuration. This setup defines the core dependency versions, including ZIO 2.1.19 for the functional effect system, http4s 0.23.37 for HTTP services, Doobie 1.0.0-RC10 for database access, and Flyway 11.10.3 for database migrations. The build also includes compiler plugins like kind-projector 0.13.4 and better-monadic-for 0.3.1, along with plugins for code formatting (sbt-scalafmt 2.5.5), static analysis (sbt-scalafix 0.14.9), and native packaging (sbt-native-packager 1.11.1).

project · high confidence

Migrate build system from Maven to sbt

The project has switched its build tool from Maven (pom.xml) to sbt (build.sbt). This migration updates the Scala version to 2.13.18, replaces the legacy ZIO 0.16 dependency with the modern ZIO ecosystem (including ZIO 1.x, ZIO-Logging, and ZIO-Test), and updates core libraries such as http4s to 0.21.x, doobie to 0.9.x, and flyway to 7.x. The new build configuration also integrates Docker packaging via the DockerPlugin, enabling the application to be containerized with a base image of eclipse-temurin:17-jre and exposing port 8080.

(dependencies) · high 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

Baseline

  • First survey — no prior run to compare against. CAI 51.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 42
  • Readiness 60
  • Security 49

Changes since last survey

  • 300 commits — 299 feature/other, 1 fixes

By area

  • (repo) — 146 commits
  • project/Dependencies.scala — 96 commits
  • project/build.properties — 23 commits
  • (root) — 18 commits
  • project/plugins.sbt — 16 commits
  • .github/workflows — 1 commit

Notable commits

  • fix: Revert to working main (#734)
  • change: Merge pull request #587 from mschuwalow/update/zio-interop-cats-23.1.0.5
  • change: Merge pull request #592 from mschuwalow/update/sbt-1.10.11
  • change: Merge pull request #593 from mschuwalow/update/sbt-scalafmt-2.5.4
  • change: Merge pull request #594 from mschuwalow/update/doobie-core-1.0.0-RC9
  • change: Merge pull request #595 from mschuwalow/update/flyway-core-11.8.0
  • change: Merge pull request #596 from mschuwalow/update/flyway-core-11.8.1
  • change: Merge pull request #597 from mschuwalow/update/sbt-scalafix-0.14.3
  • change: Merge pull request #598 from mschuwalow/update/flyway-core-11.8.2
  • change: Merge pull request #599 from mschuwalow/update/zio-2.1.18
  • change: Merge pull request #600 from mschuwalow/update/sbt-1.11.0
  • change: Merge pull request #601 from mschuwalow/update/zio-2.1.19
  • change: Merge pull request #602 from mschuwalow/update/flyway-core-11.9.0
  • change: Merge pull request #603 from mschuwalow/update/sbt-1.11.1
  • change: Merge pull request #604 from mschuwalow/update/flyway-core-11.9.1
  • change: Merge pull request #605 from mschuwalow/update/sbt-1.11.2
  • change: Merge pull request #606 from mschuwalow/update/circe-core-0.14.14
  • change: Merge pull request #607 from mschuwalow/update/log4j-core-2.25.0
  • change: Merge pull request #608 from mschuwalow/update/flyway-core-11.9.2
  • change: Merge pull request #609 from mschuwalow/update/sbt-dynver-5.1.1
  • …and 280 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

mschuwalow/zio-todo-backend 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 20 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 1ac74093a0fa6cfac6769464bd51d20bca014d4e — 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-b51f968c9b10.