Skip to content
CAI
Software that uses CAICheck a score

mishka-group/mishka_chelekom

39.4

Weak · 3 October 2026

192.4k

lines of production code

Elixir

with JavaScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a reusable Elixir component library that provides a comprehensive suite of headless and styled UI elements for Phoenix LiveView applications. It extends beyond the web by supporting native mobile development through a Mob framework that compiles components to Android and iOS. The library also integrates with AI coding assistants via a Model Context Protocol (MCP) server, allowing tools to browse and generate code from the component catalog.

How it got here

2024 — Library conversion and MCP integration

10 changes.

The project was refactored from a standalone Phoenix application into a reusable library, stripping out web scaffolding, asset pipelines, and database dependencies. This transition enabled the addition of 17 new headless UI components and the integration of a Model Context Protocol (MCP) server to support AI-driven code generation and component browsing.

2025–2026 — Headless UI Kit and Mob Mobile Framework

24 changes.

This period focused on establishing a comprehensive headless UI component library for Phoenix LiveView, featuring a new CSS architecture and a Kit DSL for customization. Simultaneously, the project initiated the MishkaMob mobile framework, scaffolding native Android and iOS applications to port these components to mobile platforms using a BEAM runtime bridge.

Features

Add Kit DSL for customizing existing Mishka Chelekom components

Developers can now reuse and restyle existing Mishka Chelekom components (both styled and headless) without modifying the original source files. A new \MishkaChelekom.Kit\ module provides a Spark DSL that allows you to define \customize\ blocks to add new colors, variants, sizes, or style specific parts of headless components. The system generates thin wrapper components at compile-time that delegate to the real components, applying your custom classes verbatim so Tailwind picks them up automatically. It includes compile-time verification to catch typos in component names or rule configurations before runtime.

_lib/mishka\chelekom/mcp · high confidence

Added database migrations for rounds and screen state persistence

The application now includes database schema definitions to support core game logic and state management. A new 'rounds' table stores game outcomes, including user and computer choices and the resulting winner. Additionally, a 'mob\_screen\_states' table has been introduced to persist application screen states, using a composite key structure to track versioned binary data and update timestamps.

development/mob/priv · high confidence

Initial Android app scaffolding for MishkaMob

This change introduces the foundational Android application structure for the MishkaMob project. It includes the AndroidManifest.xml defining core permissions (network, microphone, USB host, notifications) and app components, alongside the MainActivity.kt which initializes the BEAM runtime, manages network connectivity callbacks, and handles UI state. The entry also adds the native build configuration (CMakeLists.txt and build.zig) to compile the shared library and JNI bridge code (beam\_jni.c) that connects Android UI events to the BEAM, and sets up the application resources including the new Mishka launcher icon and network security configuration.

development/mob/android/app/src/main · high confidence

Initial Android bridge and node model for the Mob UI framework

This change introduces the foundational Android-side components for the Mob UI framework, adding the \MobNode\ data class to parse the JSON component tree from the BEAM runtime and the \MobBridge\ Kotlin file to handle Android platform integrations (such as sensors, camera, audio, and notifications) and render the UI using Jetpack Compose.

app · high confidence

Introduce entry-level headless UI components for Phoenix LiveView

The \priv/components\ directory now includes a comprehensive suite of new, customizable UI components (such as accordion, alert, avatar, badge, banner, blockquote, and breadcrumb) designed for Phoenix LiveView. Each component is provided as a pair of files: a HEEx template (\.eex\) defining the markup and attributes, and a configuration file (\.exs\) specifying available variants, colors, sizes, and helper functions. These components are styled using Tailwind CSS classes and support features like icons, dismiss actions, and responsive sizing, offering a foundational set of UI elements for application development.

priv/components · high confidence

Introduce headless component library with Mantine parity

The \priv/headless\ directory now contains a comprehensive set of unstyled, accessible UI components (such as Accordion, Alert, Avatar, Autocomplete, and various sliders) that implement WAI-ARIA patterns and mirror the API of Mantine. These components are designed to be styled by the consumer via CSS classes and data attributes, providing a headless foundation for the application's UI while ensuring accessibility and semantic correctness.

priv/headless · high confidence

Introduce native anchored overlays for floating panels

Adds a new \:anchored\ node type to the Mob layer, enabling components like Popover, Tooltip, and Preview Card to render as true floating overlays that sit on top of the page content rather than pushing siblings down in the layout flow. This implementation uses native platform popups (Android \Popup\, iOS fallback) to achieve \position: fixed\-like behavior, resolving previous issues where panels were clipped by scroll containers or incorrectly consumed layout space.

development/mob · high confidence

Mishka Chelekom 0.0.10 release: CMS bundle improvements, 17 new headless components, and MCP server integration

This release introduces a comprehensive set of features and improvements. The CMS bundle now carries each attribute's own option list and component documentation URLs, enabling consumers to build accurate pickers without lossy recovery. Seventeen new headless components are added (alert, breadcrumb, button, calendar, card, carousel, countdown, dock, fab, file\_input, pagination, rating, stepper, table, text\_input, textarea, theme\_controller), bringing the total to 92. The daisyUI gallery now paints all headless components with Tailwind classes directly in the markup, allowing copy-paste examples without external stylesheets. A new MCP server allows AI tools like Claude Code and Cursor to browse components and generate code via HTTP or stdio transport. Additional features include npm dependency support for headless components, a new \Chart\ component with swappable engines (ECharts, Chart.js, billboard.js), a \Sparkline\ component, and Mob native component generation for Android/iOS. Bug fixes include making \id\ required on the headless \avatar\, fixing the \radio\_group\ orientation attribute, and correcting guarded helper clause discriminators in the CMS bundle.

(repo-wide) · high confidence

New CLI tasks for MCP server setup, asset dependency management, and CSS configuration

This release introduces several new Mix tasks to streamline development workflows. The \mishka.mcp.setup\ and \mishka.mcp.server\ tasks allow developers to configure and run a Model Context Protocol (MCP) server, enabling AI tools like Claude Code and Cursor to interact with the component library via HTTP or stdio transports. Asset management is improved with \mishka.assets.deps\ for installing/removing JavaScript dependencies and \mishka.assets.install\ for running package manager commands. Additionally, \mishka.ui.css.config\ provides a dedicated interface for initializing, validating, and regenerating CSS configuration files, while \mishka.mob.sync\ assists library maintainers in synchronizing Mob component templates.

lib/mix · high confidence

New component documentation and demo pages for Accordion, Alert, Avatar, and Badge

The priv/demos area now includes dedicated LiveView documentation pages for the Accordion, Alert, Avatar, and Badge components. These new pages provide interactive examples, usage guides, and code snippets for various component variants, colors, and configurations, allowing users to easily explore and integrate these UI elements into their Phoenix applications.

priv/demos · high confidence

New headless UI components and charting engines

This update introduces a suite of new headless UI components and interactive elements to the JavaScript asset library, including AngleSlider, Autosize, Avatar, Calendar, Carousel, CheckboxGroup, Clipboard, and Collapsible. It also adds three interchangeable charting engines (ECharts, Chart.js, and billboard.js) that share a unified hook and configuration interface, allowing developers to switch backends without changing markup. These additions provide new interactive controls for forms, data visualization, and content layout while maintaining a consistent, server-driven architecture.

priv/assets/js · high confidence

New native Mob component library for Accordion, Action Icon, AlertDialog, Alpha Slider, Angle Slider, and Autocomplete

This release introduces the first batch of native Mob ports for the headless component library, adding Elixir modules and configuration files for the Accordion, Action Icon, AlertDialog, Alpha Slider, Angle Slider, and Autocomplete components. These components are implemented as Mob.Composite tags that expand into native Mob widgets (such as Box, Column, Text, and Canvas) at render time, ensuring they ship without native Swift or Kotlin dependencies. The implementation mirrors the headless library's behavior—handling state transitions, event routing, and props—while adapting to mobile constraints by removing web-only features like CSS classes, keyboard navigation, and accessibility attributes. Users can now integrate these UI elements into their mobile applications using the same tag-based syntax as the web version, with specific mobile affordances like canvas-based drawing for sliders and explicit tap handling for interactive elements.

priv/mob · high confidence

New web development harness for component showcase

A new Phoenix 1.8 / LiveView 1.2 application has been added to \development/web\ to serve as an interactive showcase and development harness for the \mishka\_chelekom\ component library. This harness consumes the library as a path dependency, rendering every component in a live gallery with an interactive prop explorer and copy-paste HEEx snippets. It is configured with Tailwind CSS v4 (using the new CSS-first import syntax and no config file), Bun for asset management, and a comprehensive precommit quality gate that includes compilation, formatting, dependency auditing, and security checks.

development/web · high confidence

Scaffold the MishkaMob iOS showcase app

The iOS project for the MishkaMob showcase app has been initialized with a complete native build pipeline and application entry point. The new \AppDelegate\ boots the Mob BEAM runtime on a background thread, registers SwiftUI plugin views, and handles push notification tokens. The app bundle is configured with the identifier \com.example.mishka\_mob\ and name \MishkaMob\, featuring a new app icon set and microphone usage permissions. Native compilation is orchestrated by new \build.zig\ (for the iOS simulator) and \build\_device.zig\ (for physical devices) scripts, which handle C, Objective-C, and Swift source compilation and linking.

development/mob/ios · high confidence

Removals

Removed default Phoenix application scaffolding

The default Phoenix application scaffolding has been removed from the \mishka\_chelekom\_web\ library. This includes the deletion of core UI components (modals, flash notices, forms), layout templates (root and app layouts), the page controller, and the main router configuration. This change reflects the project's conversion into a library, stripping out the opinionated starter application structure to provide a cleaner base for consumers.

_lib/mishka\_chelekom\web · high confidence

Behavioural changes

CMS bundle now includes editor hints, discriminators, and curated examples for components

The CMS bundle export now provides richer metadata for components to improve the editing experience. Editor hints are added to attributes to explicitly specify the control type (e.g., icon picker, text, media library) rather than relying on name-based guessing. Discriminators are generated from source code to allow the CMS to narrow component installations to specific variants (e.g., base-only) without breaking examples. Additionally, the bundle now includes curated examples harvested from documentation and hand-authored showcase files, ensuring that minimal installs still have relevant, working examples by tagging them with their required options.

_lib/mishka\_chelekom/cms\bundle · high confidence

Generated Mob components are now usable as composite tags

The Mob generator now registers generated components in a central registry and updates Mob's compile-time tag whitelist, allowing components to be used as composite tags (e.g., \\<Drawer\>\) in \\~MOB\ markup instead of only as function calls. This change ensures that tag names resolve correctly at compile time, preventing silent rendering failures and compilation errors when using \--warnings-as-errors\. The registry is rebuilt idempotently from existing component files to avoid duplicates and stale entries.

_lib/mishka\chelekom/generators/mob · high confidence

Mishka Chelekom restructured as a library with configurable MCP transport and component theming

The library has been refactored from a standalone application into a reusable library, removing the internal Repo and Mailer and replacing the default OTP supervision tree with a configurable MCP server process that supports HTTP or stdio transports. For component development, a new CmsBundleExporter converts source files into CMS installer parameters, while a new Overrides system allows projects to define theme presets and component-level class overrides without editing generated code. Additionally, a CSS utility module provides a swappable class-merging seam for Tailwind conflict resolution, and a DemoAssignsExtractor safely extracts initial render data for component demos.

_lib/mishka\chelekom · high confidence

New CSS architecture for Mishka Chelekom UI Kit

The UI kit's styling has been restructured into three distinct layers: a base theme file defining semantic color and shadow variables, a Tailwind CSS v4 \@theme\ block that exposes these variables as utility classes, and a new headless CSS file that provides only functional layout and accessibility primitives (such as positioning and visibility states) without opinionated styling. This separation allows consumers to easily override the theme while ensuring headless components behave correctly across different environments.

priv/assets/css · high confidence

Project restructured as a library with removal of application scaffolding

The project has been converted from an application into a library, resulting in the removal of default scaffolding files that are no longer needed. Specifically, the gettext translation files (errors.pot and errors.po) and the database seeding script (seeds.exs) have been deleted, and the main module's documentation has been simplified to reflect its new role as a library component rather than a standalone application.

lib, priv/gettext, priv/repo · high confidence

Refactored generator architecture with dedicated asset, NPM, and Mob modules

The generator logic in \lib/mishka\_chelekom/generators\ has been restructured into specialized modules to improve maintainability and support new capabilities. \MishkaChelekom.Generators.Assets\ now handles the wiring of component JS engines, npm package installation, and CSS imports, including logic to safely prune unused engine dependencies and manage \.gitignore\ entries for \node\_modules\. \MishkaChelekom.Generators.Npm\ centralizes package manager detection (preferring Bun) and \package.json\ manipulation. \MishkaChelekom.Generators.Mob\ introduces support for generating native Mob components by deriving templates from a source application, handling namespace aliasing and sibling component dependencies. \MishkaChelekom.Generators.ImportMacro\ manages the creation and global wiring of the \MishkaComponents\ import macro for styled components.

_lib/mishka\chelekom/generators · high confidence

Removed application asset pipeline and configuration files

The project has removed its frontend asset pipeline and application configuration files, including \assets/css/app.css\, \assets/js/app.js\, \config/config.exs\, and \config/test.exs\. This change eliminates the built-in support for Tailwind CSS, esbuild, Phoenix LiveView, and standard application endpoints, indicating a shift away from a self-contained web application structure towards a library or backend-only component that no longer manages its own static assets or web server configuration.

assets, config · high confidence

Test coverage

Added integration tests for usage\_rules.sync and adjusted test timeouts; Added runtime test harness for validating CMS component bundles; Added test coverage for Mishka mix tasks; Added tests for CMS bundle editor hints, discriminators, icons, and showcase coverage; Added tests for Mishka Chelekom MCP tools, resources, and server configuration; Added tests for component generators and asset wiring; Added unit tests for MishkaMob components; Expanded Android device test coverage for UI components; Expanded test coverage for CMS bundle exporter, catalog integrity, and kit customization; Refactor test support helpers; Removed test coverage for error HTML and page controller.

Dependencies

Initial scaffolding of development web and mobile applications

This change introduces the foundational project structures for the development web and mobile (Mob) applications. The web app is scaffolded with Phoenix 1.8.9, Phoenix LiveView 1.2.7, and Ecto 3.14.1, configured to consume the local Mishka Chelekom library for showcase demos. The mobile app is scaffolded with Elixir 1.18, the Mob framework 0.7, and Android dependencies including CameraX 1.4.2 and Jetpack Compose, enabling native device capability demonstrations such as camera, location, and biometric authentication.

(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

Score

  • CAI 41 → 39 (-1.6)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 48 → 45 (-3.6)
  • Architecture 78 → 74 (-3.3)
  • Maturity 56 → 56 (+0.0)
  • Readiness 35 → 31 (-4.2)
  • Security 75 → 78 (+3.1)
  • Accessibility 35 → 35 (+0.0)
  • Performance 100 (new)

Resolved (58)

  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (104 lines × 16) (development/web/lib/development_web/live/showcase/examples/banner.ex)
  • Duplicated block (109 lines × 20) (development/web/lib/development_web/live/showcase/examples/accordion.ex)
  • Duplicated block (11–22 lines × 10) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (15 lines × 4) (development/web/lib/development_web/live/showcase/headless_baseui_examples.ex)
  • Duplicated block (156 lines × 4) (development/web/lib/development_web/live/showcase/examples/avatar.ex)
  • Duplicated block (16 lines × 6) (development/mob/lib/mishka_mob/showcase/components/alert_dialog.ex)
  • Duplicated block (16–22 lines × 7) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (18–23 lines × 3) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (23–45 lines × 2) (development/mob/lib/mishka_mob/showcase/components/checkbox_group.ex)
  • Duplicated block (27–32 lines × 2) (development/mob/lib/mishka_mob/showcase/components/nav_link.ex)
  • Duplicated block (33–45 lines × 5) (development/mob/lib/mishka_mob/showcase/components/floating_window.ex)
  • Duplicated block (33–59 lines × 4) (development/mob/lib/mishka_mob/showcase/components/highlight.ex)
  • Duplicated block (36–59 lines × 4) (development/mob/lib/mishka_mob/showcase/components/highlight.ex)
  • Duplicated block (37–60 lines × 2) (development/mob/lib/mishka_mob/showcase/components/toast.ex)
  • Duplicated block (39–60 lines × 3) (development/mob/lib/mishka_mob/showcase/components/highlight.ex)
  • Duplicated block (41 lines × 3) (development/mob/lib/mishka_mob/showcase/components/color_input.ex)
  • Duplicated block (41–53 lines × 4) (development/mob/lib/mishka_mob/showcase/components/nav_link.ex)
  • …and 38 more

New (76)

  • Duplicated block (10 lines × 16) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (10–90 lines × 14) (development/mob/lib/mishka_mob/showcase/components/accordion.ex)
  • Duplicated block (11 lines × 2) (development/mob/lib/mishka_mob/dice_screen.ex)
  • Duplicated block (12 lines × 3) (development/mob/lib/mishka_mob/dice_screen.ex)
  • Duplicated block (14 lines × 52) (development/mob/lib/mishka_mob/showcase/components/accordion.ex)
  • Duplicated block (15–16 lines × 5) (development/web/lib/development_web/live/showcase/headless_baseui_examples.ex)
  • Duplicated block (18 lines × 6) (development/mob/lib/mishka_mob/showcase/components/autocomplete.ex)
  • Duplicated block (18–22 lines × 4) (development/web/lib/development_web/live/showcase/headless_baseui_examples.ex)
  • Duplicated block (19–21 lines × 8) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (19–25 lines × 7) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (19–48 lines × 9) (development/mob/lib/mishka_mob/showcase/components/checkbox.ex)
  • Duplicated block (20 lines × 2) (development/mob/lib/mishka_mob/showcase/components/alert_dialog.ex)
  • Duplicated block (21–22 lines × 3) (development/mob/lib/mishka_mob/showcase/components/alert_dialog.ex)
  • Duplicated block (22 lines × 10) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (22 lines × 7) (development/mob/lib/mishka_mob/showcase/components/action_icon.ex)
  • Duplicated block (23 lines × 3) (development/mob/lib/mishka_mob/showcase/components/color_input.ex)
  • Duplicated block (24–45 lines × 2) (development/mob/lib/mishka_mob/showcase/components/checkbox_group.ex)
  • Duplicated block (28 lines × 6) (development/mob/lib/mishka_mob/showcase/components/alert_dialog.ex)
  • Duplicated block (29 lines × 2) (development/mob/lib/mishka_mob/showcase/components/checkbox_group.ex)
  • Duplicated block (33 lines × 6) (development/mob/lib/mishka_mob/showcase/components/alert_dialog.ex)
  • …and 56 more

Architecture

  • Unchanged — 0 containers · 1 contexts · 0 edges

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

Survey your own repository

mishka-group/mishka_chelekom 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 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 726611c3d54b166585806fa22a7cceb77fa08276 — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-8fe32cd45d00.