Skip to content
CAI
Software that uses CAICheck a score

kittoframework/kitto

36.2

Weak · 23 September 2026

1.9k

lines of production code

Elixir

with JavaScript

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Kitto is a framework for building real-time dashboards, providing a complete scaffolding system for generating dashboard applications with background job execution. It supports defining and scheduling recurring tasks via a dedicated DSL, while offering a suite of pre-built React widgets for visualizing data. The system includes a hot-reloading code reloader, token-based authentication, and Mix tasks for generating and managing dashboard components.

Features

Add Image widget to core widgets

A new Image widget has been added to the core widgets, allowing users to display images using a background image style with a default placeholder. The widget is implemented as a React component that renders a div with background styling, and includes a corresponding SCSS file to handle background positioning and sizing.

installer/templates/new/widgets/image · high confidence

Add Number widget template for the installer

The installer now includes a new Number widget template, providing a component that displays a numeric value with an optional change rate indicator. The widget renders a title, the current value (with optional prefix/suffix), and a percentage difference from the previous value, styled with a teal background and white text.

installer/templates/new/widgets/graph, installer/templates/new/widgets/number, installer/templates/new/widgets/text · medium confidence

Add authentication plug for securing routes

A new authentication plug has been added to Kitto, enabling token-based authentication for protected routes. Users can now secure specific routes by setting the \authenticated\ key in the route's private config and providing an \auth\_token\ in the application configuration. Requests to authenticated routes must include an \Authentication\ header with the format \Token \<token\>\, otherwise a 401 Unauthorized response is returned.

lib/kitto/plugs · high confidence

Add clock and meter widget templates

The installer now includes new template files for the clock and meter widgets. The clock widget displays the current date and time with a large font size, while the meter widget displays a value using a knob-style input. Both widgets are styled with specific background colors and typography to match the kitto library's generated output.

installer/templates/new/widgets/clock · high confidence

Add default dashboard templates and error page

The installer now includes a set of default dashboard templates for new projects. This includes a sample dashboard (sample.html.eex) featuring widgets for phrases, synergy, buzzwords, valuation, and convergence graphs, as well as a jobs dashboard (jobs.html.eex) displaying job metrics. A rotator template (rotator.html.eex) is added to cycle between dashboards, and a basic error page (error.html.eex) is provided. The layout template (layout.html.eex) is also included to wrap these views.

installer/templates/new/dashboards · high confidence

Add styling for the time-taken widget

The time-taken widget now includes a new CSS class that applies a purple background color (\#9c4274) to the widget list, visually distinguishing this specific widget in the dashboard interface.

_installer/templates/new/widgets/time\took · high confidence

Added generators for dashboards, jobs, and widgets

New Mix tasks are now available to scaffold project components: \mix kitto.gen.dashboard\ creates an empty dashboard template, \mix kitto.gen.job\ generates a background job, and \mix kitto.gen.widget\ scaffolds a widget with corresponding JavaScript and SCSS files. These additions streamline the creation of core Kitto building blocks directly from the command line.

lib/mix/tasks/generators · high confidence

Added project configuration and documentation files

The repository now includes several new configuration and documentation files to support development and community guidelines. A \.credo.exs\ file has been added to configure the Credo static code analysis tool, and a \.ebert.yml\ file configures automated code reviews. The project also introduces a \.gitignore\ file to exclude build artifacts and dependencies, and a \.travis.yml\ file to define the CI/CD build matrix for Elixir and OTP versions. Additionally, the repository now contains a \Dockerfile\ for containerized development, a \dockingfile\ for building the application, a \CHANGELOG.md\ for tracking version history, a \CODE\_OF\_CONDUCT.md\ to establish community standards, a \CONTRIBUTING.md\ with guidelines for contributors, an \ISSUE\_TEMPLATE.md\ for bug reports, and a \LICENSE.txt\ file. The \README.md\ has also been significantly updated with installation instructions, feature descriptions, and links to demos.

(repo-wide) · high confidence

Initial Kitto project template with Docker, Heroku, and Webpack asset pipeline

The installer template for new Kitto projects has been initialized with a complete deployment and asset pipeline. This includes a Dockerfile for containerized deployment, a Procfile for Heroku deployment, and a Webpack configuration that compiles and serves static assets. The setup also provides build scripts for production, including asset compression and minification, alongside configuration files for Elixir and Node.js dependencies.

installer/templates/new · medium confidence

Initialize Kitto installer with comprehensive project scaffolding

The Kitto installer has been initialized, providing a complete scaffolding mechanism for generating new Kitto dashboard applications. This includes generating configuration files (config.exs, dev.exs, prod.exs), deployment templates (Dockerfile, .dockerignore, Procfile, elixir\_buildpack.config), and various dashboard widgets (clock, graph, image, list, number, meter, text, time\_took) with their respective JavaScript and SCSS assets. The installer also sets up sample jobs (phrases, convergence, buzzwords, random, stats), error pages, and handles dependency installation via Mix and npm. It supports options for using the master branch (--edge), a local development copy (--dev), or specifying a custom application name (--app).

installer/lib · medium confidence

Initialize installer JavaScript bundle

The installer now includes a new JavaScript entry point (application.js) that loads the application's stylesheets and initializes the Kitto framework, making the installer's frontend assets available for use.

installer/templates/new/assets/javascripts · high confidence

Introduce DSL and validation for defining jobs

Users can now define jobs using a dedicated DSL in \lib/kitto/job/dsl.ex\, supporting both Elixir code blocks and external shell commands. The framework also includes a validator (\lib/kitto/job/validator.ex\) to check job files for syntax errors before execution, and an error module (\lib/kitto/job/error.ex\) to provide detailed failure reports. Additionally, \lib/kitto/job/workspace.ex\ provides a mechanism to load and evaluate job files with the runner's process ID.

lib/kitto/job · high confidence

Introduce background job execution, hot-reloading, and real-time updates

Kitto now supports running background jobs via the new \Kitto.Job\ and \Kitto.Runner\ modules, allowing users to schedule and manage recurring tasks. A \CodeReloader\ enables hot-reloading of job files in development, while the \Notifier\ and \StatsServer\ provide real-time event broadcasting and job statistics. Additionally, a \BackoffServer\ manages retry backoffs for failed jobs, and the router now exposes a JSON API for cached widget data and supports a dashboard rotator view.

lib/kitto · high confidence

New Mix tasks for asset watching and community widget installation

Users can now run \mix kitto.server\ to start the application with an optional asset watcher (Webpack) that compiles assets in the background, and \mix kitto.install\ to download community widgets or jobs from GitHub Gists, automatically placing \.ex\ files in \lib/\, \.exs\ files in \jobs/\, and other files in \widgets/\.

lib/mix/tasks · high confidence

New list widget template for the installer

The installer now includes a new 'list' widget template, providing a pre-built React component that renders items with configurable label and value lengths. This addition allows users to generate list-style widgets with specific styling and truncation logic for labels and values, enhancing the available widget options in the installer.

installer/templates/new/widgets/list · high confidence

Behavioural changes

Add Kitto.Runner.JobSupervisor for job process supervision

A new JobSupervisor module has been added to manage the lifecycle of job processes. This supervisor dynamically starts and manages child processes for each job, utilizing a one-for-one restart strategy with a configurable maximum restart limit. This change introduces the infrastructure for supervising individual job executions within the Kitto runner.

lib/kitto/runner · medium confidence

Added Distillery release configuration and asset compilation task

The release build process now includes a Distillery configuration file (config.exs) that defines dev and prod environments and specifies the release profile. A new plugin, Kitto.CompileAssetsTask, has been added to automatically run 'npm run build' before assembling the release, ensuring frontend assets are compiled. Additionally, the release overlay configuration has been updated to copy the 'priv', 'dashboards', and 'jobs' directories into the final release structure.

installer/templates/new/rel · high confidence

Configurable default dashboard and template directory

The Kitto application now supports configuring the default dashboard and template directory via the :kitto application environment. Users can set the default dashboard (e.g., 'sample') and the templates directory (e.g., 'dashboards') in config/config.exs. Additionally, the configuration now imports environment-specific settings (e.g., config/test.exs) if they exist, allowing for environment-specific overrides such as setting the logger level to :warn in test environments.

config · high confidence

Configurable server binding and port with environment variable support

The Kitto server's binding IP and port are now configurable via the \:ip\ and \:port\ application settings, with support for environment variables to override them at runtime. Additionally, the asset server host and port can be configured via \:assets\_host\ and \:assets\_port\ settings. The application now logs the server address on startup and validates the \:root\ configuration, exiting if it is nil.

lib · high confidence

Configurable server, assets, and environment-specific settings

The installer now generates environment-specific configuration files (dev.exs, prod.exs) that control code reloading, asset watching, and static asset serving. Users can configure the server port and binding IP via environment variables (KITTO\_PORT, KITTO\_IP), set the assets path, enable static asset serving, and specify a default dashboard. Authentication for widget endpoints is also configurable via a token.

installer/templates/new/config · medium confidence

Introduces core JavaScript libraries as modular components

The core JavaScript library has been refactored into separate, importable modules: a helpers utility for formatting dates and numbers, a Widget base class for rendering React components with server-sent events, and a Kitto orchestrator that initializes the dashboard grid, auto-rotating dashboards, and full-screen controls. Users will now benefit from a more structured frontend architecture that supports dynamic dashboard rotation and real-time updates via EventSource.

priv · high confidence

New installer template with full-page dashboard styling

The installer now includes a new template at installer/templates/new/assets/stylesheets/application.scss that provides the visual foundation for the installer's UI. This stylesheet defines base typography, layout rules, and specific widget styles for status indicators (warning and danger states) that will be used by the installer's dashboard components.

installer/templates/new/assets/stylesheets · medium confidence

Updated job templates to .exs format with renamed and new examples

The generated job templates in the installer now use the .exs extension instead of .ex, reflecting a shift to script-style files. The 'buzzwords' job has been renamed to 'phrases' to better reflect its content, and the 'random' job template has been removed entirely. New job examples for 'convergence' and 'stats' have been added, providing updated patterns for building background jobs.

installer/templates/new/jobs · high confidence

Test coverage

Add tests for job DSL and validation; Add tests for the authentication plug; Added comprehensive test coverage for Kitto core components; Added test coverage for Kitto Mix tasks; Added test support modules for file and generator assertions.

Dependencies

Update Elixir and dependency versions for compatibility

The project now requires Elixir 1.4 or higher, up from 1.2/1.3. Several Elixir and JavaScript dependencies have been updated to newer versions: Plug to 1.3.2, Poison to 3.0, fs to 2.12.0, and httpoison to 0.11.1. Additionally, dev dependencies such as ex\_doc, dialyxir, credo, and excoveralls have been added or updated to specific versions to support documentation, static analysis, linting, and test coverage.

(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

Score

  • CAI 39 → 36 (-3.2)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 50 → 44 (-5.8)
  • Architecture 100 → 95 (-4.6)
  • Maturity 50 → 50 (+0.0)
  • Readiness 16 → 17 (+1.1)
  • Security 92 → 78 (-14.4)
  • Accessibility 58 (new)

Resolved (17)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • Low IaC: DS-0005 (installer/templates/new/Dockerfile)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Medium CVE: [GHSA redacted] (mix.lock)
  • Medium IaC: CKV_DOCKER_3 (Dockerfile)
  • Medium IaC: CKV_DOCKER_4 (installer/templates/new/Dockerfile)
  • Medium IaC: CKV_DOCKER_4 (installer/templates/new/Dockerfile)
  • Medium IaC: CKV_DOCKER_4 (installer/templates/new/Dockerfile)
  • Medium IaC: CKV_DOCKER_4 (installer/templates/new/Dockerfile)
  • Medium IaC: CKV_DOCKER_6 (Dockerfile)
  • Medium IaC: CKV_DOCKER_7 (installer/templates/new/Dockerfile)
  • No exposed public API
  • Test reliability not included
  • dormant codebase — no living knowledge left to concentrate

New (18)

  • Coverage not measured — no coverage collector is wired up
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • Low IaC: DS-0005 (installer/templates/new/Dockerfile)
  • Low IaC: DS-0005 (installer/templates/new/Dockerfile)
  • Low IaC: DS-0005 (installer/templates/new/Dockerfile)
  • Low IaC: DS-0005 (installer/templates/new/Dockerfile)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Medium CVE: [GHSA redacted] (mix.lock)
  • Medium IaC: WD-DOCKER-0003 (Dockerfile)
  • No ADRs found
  • No SBOM
  • No artifact signing
  • No build provenance
  • No dependency advisory monitoring
  • Outdated: ex_doc
  • Outdated: excoveralls
  • Outdated: mock

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

kittoframework/kitto 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 23 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 86ccf90e99c2d3da4246fbd4732917462ca7f42b — 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-955b9cee9818.