Skip to content
CAI
Software that uses CAICheck a score

alanvardy/exzeitable

53.8

Adequate · 18 September 2026

2.5k

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is the Exzeitable library, an Elixir tool for generating configurable data tables within Phoenix LiveView applications. It provides features for sorting, pagination, filtering, and custom field formatting, supported by a test application that demonstrates its integration with Ecto and PostgreSQL. The codebase includes comprehensive test coverage, including end-to-end Cypress tests, to ensure the reliability of the table rendering and query handling logic.

How it got here

2019 — Phoenix 1.8 upgrade and library refactoring

11 changes.

The project underwent a major dependency upgrade to Phoenix 1.8 and LiveView 1.0, accompanied by a significant refactoring of the Exzeitable library to use a centralized Params struct and support modern Elixir standards. This period also established the foundational application structure, including database schemas, configuration management, frontend assets, and comprehensive test suites for both unit and end-to-end verification.

2020–2022 — HTML refactoring and test scaffolding

8 changes.

The project refactored the HTML rendering logic into modular components to support custom actions and field formatting, while introducing a new Mix task for PostgreSQL trigram migrations. Concurrently, a comprehensive test web application was scaffolded to demonstrate library features, accompanied by extensive unit and property tests for both the core library and the web layer.

Features

Added default Ecto validation error translations

The application now includes default English translations for common Ecto.Changeset validation messages (such as 'can't be blank', 'has already been taken', and length/number constraints) in the gettext locale files. This ensures that user-facing error messages from form validations are properly localized rather than displaying raw message IDs.

priv/gettext · high confidence

Initial database schema and seed data for users and posts

This change introduces the foundational database structure for the application by adding Ecto migrations to create \users\ and \posts\ tables, including fields for names, ages, titles, and content. It also enables PostgreSQL text search capabilities via the \pg\_trgm\ extension and provides a seed script to populate the database with sample user and post records for non-test environments.

priv/repo · high confidence

Initial test web application scaffolding for Exzeitable

This change introduces a complete Phoenix-based test application (lib/test\_web) to demonstrate and validate the Exzeitable library. It includes Ecto schemas for Users and Posts, standard CRUD controllers, and multiple LiveView table configurations showcasing Exzeitable features: a basic user table, a formatted user table with custom field formatters, a German-localized post table using a custom text behavior, and specific demo pages for disabling pagination, hiding action buttons, and disabling the hide-field functionality. The setup also includes the necessary Phoenix application supervision tree, endpoint configuration, router with live\_session support, and HEEx templates.

_lib/test\web · high confidence

New mix task to generate pg\_trgm migration

A new Mix task, \mix exzeitable.gen.migration\, has been added to the library. This task generates a database migration file that creates the \pg\_trgm\ (trigram) extension for PostgreSQL, supporting standard Ecto options like \-r\ to specify the repository and \--migrations-path\ to define the output directory.

lib/mix · high confidence

Behavioural changes

Add default Phoenix LiveView frontend assets

The application now includes the standard Phoenix LiveView frontend scaffolding, providing the base CSS styles for alerts, forms, and LiveView-specific UI states (such as loading indicators and modals) via \app.css\ and \phoenix.css\. The JavaScript entry point (\app.js\) has been updated to initialize the Phoenix Socket and LiveView connection, import the \phoenix\_html\ helper, and integrate the \topbar\ progress bar to indicate page loading and navigation states to the user.

assets · high confidence

Add project tooling and configuration files

The repository now includes configuration files for development and CI workflows, including \.check.exs\ for running the full test suite (compiler, credo, dialyzer, cypress), \.credo.exs\ with custom \BlitzCredoChecks\, \.doctor.exs\ for documentation coverage, \.dialyzer-ignore.exs\, and \.tool-versions\ specifying Elixir 1.18 and Erlang 27.2. Additionally, \.formatter.exs\ has been updated to support HEEx templates and import Phoenix/Ecto dependencies, \.gitignore\ has been expanded to cover build artifacts and Cypress outputs, and new files like \CSS.md\, \LICENSE\, \PUBLISH\_CHECKLIST.md\, \coveralls.json\, and Cypress scripts have been added.

(repo-wide) · high confidence

Improved error handling for missing or invalid parameters

The library now provides clearer, specific error messages when required parameters (such as repo, query, routes, or path) are missing or when parent/belongs\_to options are mismatched. Instead of generic exceptions, users will see descriptive messages guiding them on how to correctly configure their table setup, such as specifying the correct Repo module or query structure.

lib/exzeitable/parameters · high confidence

Migrated configuration to Phoenix 1.6 runtime config structure

The application configuration has been restructured to align with Phoenix 1.6 standards, introducing a new \config/runtime.exs\ file to handle environment-specific settings and secrets (such as \DATABASE\_URL\ and \SECRET\_KEY\_BASE\) at runtime, while \config/config.exs\ now holds only shared defaults. Environment-specific overrides for development, testing, production, and system tests are now managed through dedicated files (\dev.exs\, \test.exs\, \prod.exs\, \systemtest.exs\), replacing the previous flat configuration approach and ensuring that sensitive data is not hardcoded in version control.

config · high confidence

Placeholder for dialyzer cache directory

A .gitkeep file has been added to the dialyzer directory. This ensures the directory is tracked by version control, likely to support the proper caching of dialyzer analysis results as indicated by the commit message.

dialyzer · low confidence

Refactor internal architecture with new params struct and text behavior

The library's internal structure has been reorganized to improve maintainability and extensibility. A new \Exzeitable.Params\ struct now centralizes all configuration and state, replacing the previous loose map-based approach, while a new \Exzeitable.Text\ behavior allows for customizable interface strings via a default implementation. Several legacy modules (\Filter\, \Format\, \Validation\) have been removed or merged into these new components. Additionally, database query handling has been refined to support a \query\_modifier\ for custom query logic, ensure order is cleared before pagination, and use \coalesce\ for safer search text generation.

lib/exzeitable · high confidence

Refactored Exzeitable macro to use Params struct and updated Phoenix LiveView dependencies

The Exzeitable library has been refactored to improve code organization and compatibility with newer Phoenix LiveView versions. The macro now utilizes a dedicated \Params\ struct for handling field configuration and search string generation, replacing the previous inline logic. Additionally, the library has updated its dependencies to support Phoenix LiveView 0.6.0 and later, including imports for \Phoenix.HTML.Form\ and \PhoenixHTMLHelpers\, and introduced a \render/1\ callback requirement for modules using the library. A new \TestWeb\ module was also added to provide standard Phoenix web interface boilerplate for controllers, views, routers, and channels.

lib · high confidence

Refactored HTML rendering into modular components

The HTML generation logic for the table has been reorganized from a monolithic structure into distinct modules (Action Button, Filter, Format, Helpers, Pagination, Search, Show Button, and Table). This change introduces support for custom action buttons defined in the user's module, allows fields to be formatted using a \:formatter\ option (supporting \{mod, fun}\ or \{mod, fun, args}\ tuples), and enables hiding column toggle buttons via a \disable\_hide\ parameter. Users will see these changes as more flexible table customization options and cleaner separation of concerns in the underlying rendering code.

lib/exzeitable/html · high confidence

Test coverage

Added Cypress end-to-end test suite for acceptance testing; Added property and unit tests for HTML components; Added test coverage for web controllers, live views, and error views; Added test support infrastructure and property-based generators; Added tests for database query handling and params validation; Cleanup of obsolete test files and test configuration updates.

Dependencies

Major dependency upgrade to Phoenix 1.8 and LiveView 1.0

The project has been upgraded to require Elixir 1.12 and bumped its core dependencies to Phoenix 1.8, Phoenix LiveView 1.0, Ecto 3.13, and Postgrex 0.22. This shift introduces support for modern Phoenix features and requires users to update their runtime environment and dependencies accordingly.

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

Lenses

  • Code Health 71
  • Architecture 93
  • Maturity 51
  • Readiness 42
  • Security 80

Changes since last survey

  • 300 commits — 297 feature/other, 3 fixes

By area

  • (root) — 292 commits
  • .github/workflows — 4 commits
  • lib/exzeitable — 2 commits
  • lib/test_web — 2 commits

Notable commits

  • fix: Fix Custom Action Buttons
  • fix: Fix deprecations
  • fix: fix backtick
  • change: --- updated-dependencies: - dependency-name: ex_doc dependency-type: direct:development update-type: version-update:semver-minor ...
  • change: Add dependabot automerge
  • change: Add more classes to table elements
  • change: Add query modifier
  • change: Bump ex_doc from 0.33.0 to 0.34.0
  • change: Bump stream_data from 1.0.0 to 1.1.0
  • change: Bump swoosh from 1.16.7 to 1.16.8
  • change: Bump swoosh from 1.16.8 to 1.16.9
  • change: One file CI
  • change: Update Elixir and Erlang versions
  • change: Update Phoenix Liveview
  • change: Update README.md
  • change: Update deps
  • change: Update deps
  • change: Update deps
  • change: Update deps
  • change: change port
  • …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

alanvardy/exzeitable 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 18 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 73e7e3f1f2afddb3c969c0206b09661d969ece40 — 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-5d04157a340d.