smpallen99/ex_admin
39.6
Weak · 23 September 2026
10k
lines of production code
Elixir
primary language
5
measurements over time
What this system is
ExAdmin is an auto-administration library for the Phoenix Framework that automatically generates CRUD interfaces for Ecto models. It provides a configurable admin panel with support for multiple UI themes, localization, and data export capabilities. The system handles standard resource management, association selection, and user session switching within a structured web layer.
How it got here
2015 — ExAdmin initial release and structure
16 changes.
This period marks the initial release and structural foundation of the ExAdmin library, introducing core features like CRUD generation, theme support, and asset management. The work focused on establishing the project's architecture, including router configuration, controller logic, and template systems, while adding comprehensive test coverage.
2016 — Admin theme refactoring and localization
21 changes.
This period focused on refactoring the AdminLTE2 and Active Admin themes to use the Xain library for HTML rendering, significantly improving code maintainability. The work also included adding comprehensive test coverage, integrating JavaScript plugins like Select2 and Bootstrap Datepicker, and implementing multi-user session switching. Additionally, the admin interface was localized with translations for French, Russian, and Ukrainian.
2017 — Localization and test coverage
4 changes.
This period focused on expanding internationalization support by adding Polish and Chinese translations for the admin interface. Concurrently, the team improved code quality by adding test coverage for the errors helper and refactoring JavaScript assets to resolve module bundling issues.
Features
Add Chinese (zh\_CN) translations for ExAdmin
Users can now see the ExAdmin interface in Simplified Chinese. This change adds a new localization file (default.po) containing translations for common admin actions such as Create, Edit, Delete, and Filter, as well as dashboard and pagination messages.
_priv/gettext/zh\CN · high confidence
Add SwitchUser plug for multi-user session switching
A new \ExAdmin.Plug.SwitchUser\ plug is introduced, enabling users to switch between different login sessions without re-entering passwords. This feature adds a dropdown menu in the page header listing all users, allowing automatic logout and login of the selected user. The plug is designed for use in development and test environments and supports customizing the user name display via configuration options.
web/plugs · high confidence
Added Bootstrap 3.3.5 CSS and Glyphicons to admin\_lte2 theme
The admin\_lte2 theme now includes the full Bootstrap 3.3.5 stylesheet and the associated SVG font files for Glyphicons, providing the underlying CSS framework and icon assets required for the theme's styling and iconography.
_web/static/vendor/themes/admin\lte2 · high confidence
Added Bootstrap Datepicker plugin and localization files to the admin template
The admin\_lte2 template now includes the bootstrap-datepicker JavaScript plugin along with its CSS styling and a comprehensive set of locale files for internationalization. This adds support for date selection in forms and interfaces within the admin panel, with translations available for numerous languages including Arabic, German, Spanish, French, and many others.
(repo-wide) · high confidence
Added French (fr\_FR) translations for the admin interface
Users can now see the admin interface in French. The update adds a new French translation file (default.po) containing translations for common admin actions such as 'Delete', 'Edit', 'Create', and 'Filter', as well as dashboard and pagination messages. The template file (default.pot) is also included to support future translations.
_priv/gettext, priv/gettext/fr\FR · high confidence
Added Polish (pl\_PL) localization
Users can now see the application interface in Polish. A new locale file for pl\_PL has been added, providing translations for key UI strings such as 'Dashboard', 'Create', 'Edit', 'Delete', and various filter and pagination labels.
_priv/gettext/pl\PL · high confidence
Added Russian (ru\_RU) localization for the admin interface
Users can now see the admin panel in Russian. A new translation file for the ru\_RU locale has been added, providing Russian translations for key interface elements such as 'Batch Actions', 'Edit', 'New', 'Delete', 'Logout', and pagination controls.
_priv/gettext/ru\RU · high confidence
Added Ukrainian (uk\_UA) localization for the admin interface
Users can now see the admin panel in Ukrainian. This change adds a new default.po file containing translations for key interface elements such as 'Delete', 'Edit', 'Create', and dashboard messages, enabling a localized experience for Ukrainian-speaking users.
_priv/gettext/uk\UA · high confidence
Added default styling for Active Admin and AdminLTE2 admin interfaces
The default CSS for the Active Admin and AdminLTE2 admin templates has been added to the application's static assets. This includes base reset styles, typography, and layout rules for the admin interface, ensuring that the admin pages render with the expected visual appearance and structure.
priv/static/css · high confidence
Added default templates for ExAdmin admin resources and dashboard
The project now includes default template files for generating an ExAdmin resource and a dashboard page. The new \admin.gen.resource\ template provides a basic module structure for admin resources, while the \admin.install.dashboard\ template defines a default dashboard page with a welcome message and an 'add' link. These templates are used to scaffold the initial admin interface structure.
priv/templates · high confidence
Added frontend vendor assets for Active Admin, BestInPlace, and jQuery
The web application now includes several new JavaScript files in the static vendor directory to support the admin interface. These include the Active Admin base script, the BestInPlace library for inline editing, the jquery-ujs adapter for remote links and forms, and jQuery v1.10.2. Additionally, an association filler options script and a BestInPlace error handler are added to support the new association selector and error display features.
web/static/vendor · high confidence
Added initial ExAdmin installation and resource generation tasks
The ExAdmin package now includes Mix tasks to simplify setup and scaffolding. The \mix admin.install\ task automates the installation process, allowing users to selectively install assets, configuration, dashboard, and route instructions via boolean flags (e.g., \--no-assets\). Additionally, the new \mix admin.gen.resource\ task generates resource files for the auto-administration feature, creating the necessary Elixir files and providing configuration instructions. A shared utility module (\Mix.ExAdmin.Utils\) supports these tasks with helper functions for path resolution and console messaging.
lib/mix · high confidence
Added new layout templates for Active Admin and AdminLTE2 themes
Introduced new EEx templates for the Active Admin and AdminLTE2 admin themes, providing the structural HTML for the application's admin interface. These templates include support for custom head templates, favicon configuration, footer content, and theme switching via JavaScript. The layouts also integrate sidebars, filters, and flash messages, establishing the visual foundation for both themes.
web/templates/layout · high confidence
Added support for checkbox-based form inputs
The form rendering logic now includes a dedicated implementation for rendering multiple-choice fields as checkboxes. This change introduces a new code path in the form fields module that generates a list of checkboxes for associations with a 'many' cardinality, allowing users to select multiple related records simultaneously rather than using a standard dropdown or single-select input.
_lib/ex\admin/form · medium confidence
AdminLTE2 theme layout templates added
Added new EEx templates for the AdminLTE2 theme, including header, title bar, and sidebar navigation. The header template now includes a theme selector dropdown, user profile/logout links, and a switch-user feature. The sidebar displays resources, actions, and scopes, with support for nested resources and configurable logos.
_web/templates/themes/admin\lte2 · medium confidence
Initial configuration setup for ExAdmin and environment-specific settings
The application now includes a base configuration file (config/config.exs) that sets up ExAdmin with default values for the repository, module, and modules list, alongside template engine registrations for Haml and EEx. Environment-specific configurations are also introduced for development, production, and testing, with the test environment pre-configured with database connection details for Postgres and specific ExAdmin modules for testing purposes.
config · high confidence
Initial release of ExAdmin library
The ExAdmin library has been added to the project, providing an auto-administration tool for the Phoenix Framework. This includes the main module (lib/ex\_admin.ex) which generates CRUD interfaces for Ecto models, supports customizing the admin interface via a DSL, and allows for custom CSS/JS in the layout head and footer.
lib · high confidence
Introduce modularized ExAdmin components
The ExAdmin library has been refactored to support a new Xain-based template system, introducing dedicated modules for core features including authentication, authorization, breadcrumbs, CSV export, filtering, forms, and index rendering. This restructuring encapsulates logic for dashboard pages, navigation, pagination, and parameter handling into separate, reusable components.
_lib/ex\admin · high confidence
New admin controllers for resource management and associations
The web/controllers directory introduces three new controllers: AdminResourceController handles standard CRUD operations (index, show, edit, new, create, update, destroy, and CSV export) for admin resources; AdminAssociationController manages association actions including updating positions, listing associations, and adding associations; and AdminController provides page rendering, theme selection, and user switching functionality.
web/controllers · high confidence
New view modules for layout, themes, and error handling
The web/views directory now includes several new view modules: ExAdmin.LayoutView, which handles the site title, logo, footer content, and a theme selector for switching between themes; ExAdmin.ErrorView, which renders 403, 404, and 500 error pages; and ExAdmin.TemplateView, which provides template-related helpers. Additionally, new layout views (ExAdmin.ActiveAdmin.LayoutView and ExAdmin.AdminLte2.LayoutView) are introduced to support different admin themes, each defining how scopes, flash messages, and menu icons are rendered for their respective themes.
web/views · high confidence
Restored Select2 plugin with full internationalization support
The Select2 plugin has been restored to the admin theme, including the main JavaScript and CSS assets. Additionally, over 20 new language files have been added to the \i18n\ directory, providing translations for the Select2 component in languages such as German, French, Spanish, and many others, enabling localized error messages and UI text for users.
_web/static/vendor/themes/admin\lte2/plugins/select2 · high confidence
Behavioural changes
Active Admin theme assets and JavaScript updated
The Active Admin theme's CSS and JavaScript assets have been updated. The CSS now includes styling for required field indicators (red text on abbr elements) and icon positioning. The JavaScript bundle has been expanded to include jQuery 1.10.2, BestInPlace for inline editing, and Active Admin's internal libraries for batch actions, checkbox toggling, and dropdown menus, enabling features like sortable tables and toggle buttons in the admin interface.
_web/static/vendor/themes/active\admin · high confidence
Active Admin theme header updated with logout and theme selector
The Active Admin theme header template was refactored to include a theme selector and a user logout link. The header now displays the site logo, navigation tabs, and a theme selector component. Additionally, the logout link was updated to use the :delete action for the session path, ensuring proper HTTP method handling for user authentication.
_web/templates/themes/active\admin · medium confidence
Active Admin theme refactored to use Xain for rendering
The Active Admin theme has been refactored to use the Xain library for rendering HTML, replacing previous template-based approaches. This change updates the rendering of forms, filters, index pages, and layouts to use Xain's declarative syntax, improving consistency and maintainability of the theme's UI components.
_lib/ex\_admin/themes/active\admin · medium confidence
Added Active Admin CSS stylesheets
The Active Admin stylesheet has been moved to the actual place, with the CSS files now located in web/static/css/active\_admin/. This includes the main active\_admin.css.scss file and various component stylesheets such as \_forms.scss, \_header.scss, \_mixins.scss, and others that define the visual appearance of the admin interface.
web/static/css · high confidence
Added potential\_associations\_query helper for association selection
A new ExAdmin.Model module was added to web/models/model.ex, providing a potential\_associations\_query function. This function retrieves the current associated records for a resource and builds a query to find related records that are not yet selected, supporting the 'associations selector without autocomplete' feature.
web/models · medium confidence
Admin resource templates and client-side interactions
Added new template files for the admin resource, including the main admin view, an index view with info and news panels, and JavaScript templates for handling destroy and toggle attribute actions. The destroy template updates the pagination UI after an entity is deleted, and the toggle template manages button states for attribute toggling.
_web/templates/admin\resource · medium confidence
Admin template migrated to EEx
The admin template has been converted from HAML to EEx, meaning the application no longer depends on the HAML template engine for this view. Users will see the same admin interface, but the underlying template syntax has changed.
web/templates/admin · low confidence
AdminLTE2 template refactored with new CSS styles
The admin\_lte2.css file was added to the project, introducing new CSS rules for various UI components including dropdown menus, status tags, form groups, and pagination. This change refactors the visual presentation of the admin interface, affecting the layout and styling of elements such as action items, filter selects, and sidebar sections.
web/static/vendor/css · medium confidence
AdminLTE2 theme refactored to use Xain for rendering
The AdminLTE2 theme has been refactored to use the Xain library for rendering HTML, replacing previous rendering mechanisms. This change updates the \fields\, \filter\, \form\, \index\, \layout\, \page\, \paginate\, and \table\ modules to generate markup via Xain's \div\, \span\, and other helper functions, ensuring consistent and safe HTML generation across the theme's UI components.
_lib/ex\_admin/themes/admin\lte2 · medium confidence
ExAdmin 0.8.2 release with Ecto 2.0 support and Brunch asset integration
This release updates ExAdmin to support Ecto 2.0 while maintaining compatibility with Ecto 1.1. It introduces Brunch-based asset management, allowing administrators to install and manage static assets (JavaScript and CSS) via the \admin.install\ mix task, with configuration defined in \brunch-config.js\. The changelog and README are updated to reflect these changes, and the project structure is standardized with new files like \.formatter.exs\ and \.gitattributes\ to improve development workflow and code formatting.
(repo-wide) · high confidence
Introduces new router and web module structure for ExAdmin
The web layer is restructured with the addition of \web/router.ex\ and \web/web.ex\. The new router defines the \/admin\ scope with routes for dashboard, pages, theme selection, user switching, and standard CRUD operations for resources and associations. The \ExAdmin.Web\ module provides shared code for controllers, views, and routers, including helper functions like \admin\_path\ and \admin\_association\_path\. This change updates how the admin interface is routed and how controllers/views are configured, affecting the overall navigation and layout of the admin panel.
web · medium confidence
Migrate Active Admin JavaScript to vendor directory
The Active Admin JavaScript files have been moved to the \web/static/vendor/active\_admin\ directory. This change includes the core application script, base configuration, and various utility libraries such as batch actions, checkbox toggling, dropdown menus, flash notifications, and sortable associations. The move is intended to remove Brunch CommonJS wrappers, ensuring these client-side components are bundled correctly without module system conflicts.
_web/static/vendor/active\admin · high confidence
Refactored ExAdmin controller logic into dedicated modules
The ExAdmin controller logic has been refactored into separate modules: ExAdmin.Controller, ExAdmin.ErrorsHelper, and ExAdmin.ResourceController. This change improves code organization and maintainability by separating concerns, with each module handling specific aspects of the admin interface such as route registration, error handling, and resource management.
_web/ex\admin · medium confidence
Refactored admin\_lte2 template and restored Select2 plugin
The admin\_lte2 template has been refactored, and the Select2 plugin has been restored to support association selectors without autocomplete, as well as implementing the first version of the association\_filler macro. Both themes are now functional.
priv/static/js · high confidence
Test coverage
Add integration tests for admin CRUD operations; Added acceptance test infrastructure for ExAdmin; Added comprehensive test coverage for ExAdmin components; Added tests for ExAdmin.ErrorsHelper; Added tests for theme filter and form rendering.
Dependencies
Initial project setup with Elixir and NPM dependencies
The project is initialized with a new \mix.exs\ file defining the Elixir/Phoenix application structure, including dependencies like Ecto, Phoenix, and ExAdmin, alongside a \mix.lock\ file pinning specific versions of all Elixir packages. Additionally, a \package.json\ file is added to manage NPM dependencies for the Brunch.js frontend build system, specifying versions for Babel, CSS, and JavaScript brunch plugins.
(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 51 → 40 (-11.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 93 → 95 (+2.3)
- Architecture 100 → 96 (-3.6)
- Maturity 47 → 47 (+0.0)
- Readiness 31 → 37 (+5.8)
- Security 89 → 76 (-13.1)
- Accessibility 25 (new)
Resolved (36)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (11 lines × 2) (lib/ex_admin/helpers.ex)
- Duplicated block (11 lines × 2) (lib/ex_admin/themes/active_admin/filter.ex)
- Duplicated block (11 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (12 lines × 2) (lib/ex_admin/themes/active_admin/form.ex)
- Duplicated block (13 lines × 2) (lib/ex_admin/themes/active_admin/form.ex)
- Duplicated block (14 lines × 2) (lib/ex_admin/themes/active_admin/filter.ex)
- Duplicated block (14 lines × 2) (lib/ex_admin/themes/active_admin/filter.ex)
- Duplicated block (15 lines × 2) (web/views/active_admin_view.ex)
- Duplicated block (16 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (18 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (19 lines × 2) (lib/ex_admin/table.ex)
- Duplicated block (19 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (20 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (5 lines × 2) (lib/mix/tasks/admin.install.ex)
- Duplicated block (6 lines × 2) (lib/ex_admin/show.ex)
- Duplicated block (7 lines × 2) (lib/ex_admin/themes/active_admin/form.ex)
- Duplicated block (7 lines × 2) (web/views/active_admin_view.ex)
- Duplicated block (8 lines × 2) (lib/ex_admin/index.ex)
- …and 16 more
New (56)
- Documentation: no usage examples (README.md)
- Duplicated block (10–13 lines × 2) (lib/ex_admin/form.ex)
- Duplicated block (13 lines × 2) (lib/ex_admin/helpers.ex)
- Duplicated block (14 lines × 2) (lib/ex_admin/themes/active_admin/filter.ex)
- Duplicated block (15 lines × 2) (lib/ex_admin/themes/active_admin/filter.ex)
- Duplicated block (16 lines × 2) (lib/ex_admin/themes/active_admin/fields.ex)
- Duplicated block (16 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (17 lines × 2) (lib/ex_admin/themes/active_admin/form.ex)
- Duplicated block (19 lines × 2) (lib/ex_admin/table.ex)
- Duplicated block (19 lines × 2) (web/views/active_admin_view.ex)
- Duplicated block (20 lines × 2) (lib/ex_admin/themes/active_admin/filter.ex)
- Duplicated block (25 lines × 2) (lib/ex_admin/themes/active_admin/form.ex)
- Duplicated block (26 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (30 lines × 2) (lib/ex_admin/themes/active_admin.ex)
- Duplicated block (31 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (37 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (47 lines × 2) (lib/ex_admin/themes/active_admin/index.ex)
- Duplicated block (5 lines × 2) (lib/ex_admin/themes/active_admin/form.ex)
- Duplicated block (6 lines × 2) (lib/ex_admin/show.ex)
- Duplicated block (6 lines × 2) (lib/ex_admin/themes/active_admin/form.ex)
- …and 36 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
smpallen99/ex_admin 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 2048340de6600ca11cd6a8ffbfb8bc30f786144b — 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.