Skip to content
CAI
Software that uses CAICheck a score

folone/poi.scala

65.0

Adequate · 20 September 2026

2.5k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Poi Scala is a functional Scala library that provides type-safe, immutable abstractions for manipulating Excel workbooks using Apache POI. It supports synchronous and asynchronous operations with streaming capabilities, and offers integrations with the Cats and Scalaz ecosystems for pure functional programming. The system focuses on performance and memory efficiency through comprehensive benchmarking and reactive stream support.

Features

Add Cats integration for functional effects and typeclass instances

This release introduces a new \poi-scala-cats\ module that integrates the Apache POI library with the Cats ecosystem. It provides \IOOperations\ for wrapping workbook creation, saving, loading, and data processing in \cats.effect.IO\ for pure functional asynchronous programming. Additionally, it supplies Cats typeclass instances (\Eq\, \Show\, \Order\, \Semigroup\, and \Monoid\) for core POI data structures like \Cell\, \Row\, \Sheet\, and \Workbook\, enabling functional composition and law-based testing of these entities.

poi-scala-cats · high confidence

Asynchronous Excel operations with streaming and progress callbacks

The poi-scala-async module now provides non-blocking Excel file operations via the AsyncOperations object. Users can create, save, and load workbooks asynchronously, process large datasets through streaming with batch support, and build workbooks progressively with configurable progress callbacks. The module also includes reactive stream support with backpressure handling for efficient memory usage during large data processing.

poi-scala-async · high confidence

Introduce core domain model and data validation for Excel workbooks

The \poi-scala-core\ library now includes a comprehensive set of new source files defining the core domain model for Excel manipulation. This adds immutable case classes for \Cell\ types (String, Numeric, Date, Boolean, Blank, Error, Formula, and Styled), \Row\, \Sheet\, and \Workbook\, along with supporting types like \CellAddr\, \CellStyle\, and \CellRange\. It also introduces a new data validation subsystem with a fluent \DataValidationBuilder\, constraint types, and helper methods for dropdowns and ranges, as well as named range management and bulk operation utilities. These changes provide the foundational API for creating and styling Excel files, replacing or augmenting previous internal implementations with a more structured, type-safe approach.

poi-scala-core, poi-scala-scalaz · high confidence

Project initialization with modular structure and tooling

The repository has been initialized with a complete project structure for the Poi Scala library, including a modular build system (core, cats, scalaz, async), a comprehensive Makefile for development workflows, and configuration files for code formatting (scalafmt), linting (scalastyle), and static analysis (scalafix). The setup also includes a custom sbt launcher, Replit environment configuration, and an Apache 2.0 license file, establishing the foundation for building and testing the Excel manipulation library.

(repo-wide) · high confidence

Removals

Removal of legacy HSSF workbook implementation

The legacy \Workbook\ class and its associated \Sheet\, \Row\, and \Cell\ data structures, which were tightly coupled to the Apache POI HSSF API for writing \.xls\ files, have been removed from the codebase. This deletion eliminates the previous implementation that manually mapped internal data structures to HSSF objects for file output.

src/main · high confidence

Test coverage

Added JMH benchmarks for async and comprehensive workbook operations; Removed obsolete PoiSpec test file.

Dependencies

Migrate build system from Maven to sbt and update dependencies

The project has switched its build tool from Maven (pom.xml) to sbt (build.sbt), introducing a multi-module structure with core, scalaz, cats, async, and benchmark modules. This migration updates the Apache POI dependency from version 3.7 to 5.5.1, upgrades the Scala library to support versions 2.12.21, 2.13.18, and 3.9.0, and updates testing libraries including specs2-scalacheck to 4.23.0 and scalacheck to 1.20.0.

(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 65.

Lenses

  • Code Health 98
  • Architecture 100
  • Maturity 63
  • Readiness 70
  • Security 56

Changes since last survey

  • 300 commits — 289 feature/other, 11 fixes

By area

  • (root) — 146 commits
  • project/build.properties — 55 commits
  • .github/workflows — 36 commits
  • project/plugins.sbt — 30 commits
  • project/project — 10 commits
  • src/test — 6 commits
  • benchmarks/src — 5 commits
  • (repo) — 4 commits
  • src/main — 4 commits
  • poi-scala-core/src — 2 commits
  • .github/CODEOWNERS — 1 commit
  • poi-scala-cats/src — 1 commit

Notable commits

  • fix: Fix 2.13 compilation errors.
  • fix: Fix benchmark upload path
  • fix: Fix scala 3 test compilation
  • fix: Fix the tests in scala 3
  • fix: Fix up benchmark download
  • fix: Fix up benchmark results
  • fix: Hopefully final fix
  • fix: Revert "Update sbt, scripted-plugin to 1.11.0" (#314)
  • fix: Revert "Update sbt-ci-release to 1.11.0" (#313)
  • fix: Try to fix the comment publishing workflow
  • fix: fix credentials setting
  • change: .
  • change: .
  • change: Add 'Reformat with scalafmt 3.8.2' to .git-blame-ignore-revs
  • change: Add @xuwei-k to developers.
  • change: Add back release on branch push
  • change: Add telemetry
  • change: Another quickfix
  • change: Bump actions/checkout from 3 to 4
  • change: Bump actions/checkout from 4 to 5 (#347)
  • …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

folone/poi.scala 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 1b8e4a5349e1bcb4ac01f2309d60211f2e1b4489 — 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.