mishka-group/mishka_chelekom
39.4
Weak · 3 October 2026
192.4k
lines of production code
Elixir
with JavaScript
2
measurements over time
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.