Skip to content
CAI
Software that uses CAICheck a score

m-2k/erlach

33.2

Weak · 21 September 2026

5.4k

lines of production code

Erlang

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Erlach is an anonymous imageboard and comments service built on the Erlang ecosystem. It provides core imageboard functionality including user authentication, post management, and a single-page application interface. The system also integrates a full-text search engine with BM25 scoring and tools for converting video screenshots into optimized image formats.

Features

Added full-text search engine and screenshot conversion utilities

Introduced a new full-text search application for Erlang, including the core engine, BM25 scoring, database schema, and Porter stemmer for text processing. Additionally, added a shell script to convert MOV files to optimized GIFs and PNGs to AVIFs, along with a .gitignore for the screenshots directory.

_apps/fulltext\search, screenshots · high confidence

Initial release of Erlach, an anonymous imageboard and comments service

The repository is initialized with the core configuration and build infrastructure for Erlach, a single-page application imageboard. This includes the Erlang dependency manifest (rebar.config) specifying libraries such as N2O, Cowboy, and Mnesia, alongside build scripts (Makefile, otp.mk) and configuration files (sys.config, vm.args) that define the application's runtime environment, ports, and cookie settings.

(repo-wide) · high confidence

Introduce Rebar3 build configuration for the apps directory

A new Rebar3 configuration file (rebar.config) has been added to the apps directory. This file defines the subdirectories to be included in the build (eauth, ecod, erlach, erlach\_db, fulltext\_search, kvs\_feeds, and spa), sets the library directory to the parent apps folder, and specifies the dependencies directory. This change establishes the build structure for these specific applications within the larger project.

apps · high confidence

Introduce eauth authorization library and erlach imageboard application

Added the eauth library, a simple email-based authorization system for web applications, providing sign-in, activation, join, and password reset functionality with configurable SMTP and hashing settings. Simultaneously, added the erlach imageboard application, including its core headers, utility modules, and static assets (CSS, JavaScript, HTML templates, and SVG icons) to support the user interface and client-side logic.

apps/erlach · 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

Score

  • CAI 32 → 33 (+1.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 90 → 93 (+2.9)
  • Architecture 100 → 100 (+0.0)
  • Maturity 36 → 43 (+6.6)
  • Readiness 15 → 17 (+1.9)
  • Security 100 → 89 (-11.4)
  • Event Sourcing 100 → 100 (+0.0)
  • Accessibility 21 → 21 (-0.4)

Resolved (7)

  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • LLM evaluation failed
  • No exposed public API
  • complexity unreadable for .erl, .hrl — churn × complexity hotspots could not be measured
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness
  • git history depth insufficient

New (29)

  • Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
  • Duplicated block (5 lines × 2) (apps/eauth/src/eauth_event.erl)
  • Duplicated block (6 lines × 2) (apps/eauth/src/eauth_event.erl)
  • Floating source dependency: ranch
  • Hotspot: apps/spa/src/spa_event.erl (apps/spa/src/spa_event.erl)
  • No dependency lockfile committed (apps/ecod/rebar.config)
  • No dependency lockfile committed (apps/erlach/rebar.config)
  • No dependency lockfile committed (rebar.config)
  • TodoComment (apps/erlach/include/erlach.hrl)
  • TodoComment (apps/erlach/src/erlach_ban.erl)
  • TodoComment (apps/erlach/src/erlach_image.erl)
  • TodoComment (apps/erlach/src/erlach_markup.erl)
  • TodoComment (apps/erlach/src/erlach_subscription.erl)
  • TodoComment (apps/erlach/src/erlach_subscription.erl)
  • TodoComment (apps/erlach/src/erlach_subscription.erl)
  • TodoComment (apps/erlach/src/renders/erlach_thread.erl)
  • TodoComment (apps/erlach/src/renders/erlach_thread.erl)
  • TodoComment (apps/spa/include/spa.hrl)
  • TodoComment (apps/spa/src/spa.erl)
  • TodoComment (apps/spa/src/spa_event.erl)
  • …and 9 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

m-2k/erlach 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 f0488069cc31e0bdbee07726b3de32d802fbc8dd — 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.