alex-kudrya / adminix
Fast deployment, easy configurable admin panel for Laravel apps
Requires
- php: >=8.2
- ext-mbstring: *
- ext-pdo: *
- ext-simplexml: *
- illuminate/contracts: ^12.0|^13.0
- illuminate/http: ^12.0|^13.0
- illuminate/support: ^12.0|^13.0
- laravel/framework: ^12.0|^13.0
- nesbot/carbon: ^2.67|^3.0
- symfony/http-foundation: ^6.3|^7.0|^8.0
Requires (Dev)
- ext-pdo_sqlite: *
- laravel/pint: ^1.13
- orchestra/testbench: ^10.0|^11.0
- phpunit/phpunit: ^10.5|^11.0
Suggests
- ext-mongodb: Required only for optional MongoDB support; tested with 2.3.3.
- mongodb/laravel-mongodb: Required only for Level 1 MongoDB Eloquent model data sources; tested with 5.8.2.
This package is auto-updated.
Last update: 2026-07-30 08:03:12 UTC
README

Adminix is a Laravel package for building admin panels from PHP configuration. Pages, menus, lists, resources, modals, widgets, and actions are described in classes and rendered dynamically at runtime.
Highlights
- PHP-first page providers. Pages are normal PHP classes that return
AdminixPageobjects. - Runtime modules for lists, resources, details, modal CRUD, dashboards, panels, text, charts, counters, metrics, progress bars, imports, media, tenant switchers, maintenance banners, health status cards, notifications, and callback/webhook actions.
- Operational tables with search, filters, quick filters, saved table views, column ordering/widths, pinned columns, summaries, grouping, row details, row reorder, clone actions, soft deletes, and bulk actions.
- Page headers, breadcrumbs, menu links, command palette navigation, and global search are declared server-side.
- Datasources, writable fields, route params, tenant context, actions, imports, media writes, and notification state are resolved on the server.
- Multi-panel support with isolated paths, guards, middleware, menus, themes, and tenant context providers.
- Adminix Doctor checks common package setup and safety risks, including tenant-scoped datasources without server-owned tenant criteria.
- Extension APIs for custom module types, data providers, Blade components, page-scoped assets, generators, and panel-aware route hooks.
- Optional local asset mode for CDN-free installations, plus lazy CKEditor loading only on pages that need the editor.
Mental Model
- Register Adminix in a Laravel app.
- Add page providers to
config/adminix.phpor to one or moreAdminixPanelobjects. - Build each page from modules such as lists, resources, dashboards, imports, and media browsers.
- Keep permissions, tenant scope, writable fields, and route parameters server-owned.
- Run
adminix:doctor, package tests, and live browser checks for UI-facing changes.
Requirements
- Laravel 12 requires PHP
>=8.2 - Laravel 13 requires PHP
>=8.3 - PHP extensions: PDO, mbstring, SimpleXML
Installation
composer require alex-kudrya/adminix
php artisan adminix:install
Optional example pages:
php artisan adminix:install --examples
Check the installed configuration:
php artisan adminix:doctor
Security rule of thumb: browser validation is never enough. Use HTML constraints and JavaScript feedback for UX, but keep Laravel/backend validation, server-side module configuration, upload format checks, and max-size limits as the authoritative security boundary.
If the consuming Laravel application uses Laravel Boost, let Boost discover Adminix's package guidance after installing or updating Adminix:
php artisan boost:install
php artisan boost:update --discover
Adminix ships a compact Boost guideline file and an Adminix development skill at resources/boost/guidelines/core.blade.php and resources/boost/skills/adminix-development/SKILL.md.
These resources help agents follow the package's PHP-first module architecture, layered validation rules, safety rules, Doctor checks, documentation expectations, and live browser verification workflow while working in a parent Laravel project.
CDN-free installations can use the bundled local vendor assets:
ADMINIX_ASSET_MODE=local
php artisan vendor:publish --provider="AlexKudrya\Adminix\Providers\AdminixServiceProvider" --tag=laravel-assets --force
php artisan adminix:doctor --strict
Generate starter classes:
php artisan make:adminix_page OrdersPage --tests --dry-run
php artisan make:adminix_page OrdersPage --tests
php artisan make:adminix_resource ProductsPage
php artisan make:adminix_action ArchiveOrdersAction --tests
php artisan make:adminix_module AcmeCard --tests
A minimal page provider returns an AdminixPage and attaches one or more modules:
use AlexKudrya\Adminix\AdminixPage;
use AlexKudrya\Adminix\Modules\Module;
use App\Models\Order;
return AdminixPage::uri('orders')
->name('orders')
->title('Orders')
->addModule(
Module::list()
->name('orders')
->dataSource(Order::class)
->primaryKey('id')
);
Package visual QA stand
Package contributors can run the Testbench workbench and open a manual visual QA stand that covers Adminix modules, fields, lists, actions, layout surfaces, and focused edge-case pages.
./vendor/bin/testbench serve --host=127.0.0.1 --port=8097
Open http://127.0.0.1:8097/adminix/showcase/9 and click through the sidebar or the showcase map.
For a focused automated smoke check against the same rendered pages, run:
npm run e2e:showcase
Run the complete browser suite serially because the Testbench fixture intentionally shares SQLite and browser preference state across scenarios:
npm run e2e
Package database matrix
Package contributors can run the same Testbench suite against SQLite, MySQL 8.4, MariaDB 10.11.18, and PostgreSQL 18:
composer test:databases:start
composer test:databases
composer test:databases:stop
The Docker services are local test databases only. Do not reuse these commands with an application or shared database.
MongoDB Level 1 compatibility
MongoDB Level 1 supports an explicit MongoDB\Laravel\Eloquent\Model datasource while the application's default connection, authentication, package migrations, and standard Adminix storage remain SQL.
SQL-only applications do not install a MongoDB dependency.
The verified matrix uses PHP 8.2.32/8.3.32, Laravel 12.0.0/12.64.0 and 13.0.0/13.22.0, mongodb/laravel-mongodb 5.8.2, ext-mongodb 2.3.3, and MongoDB Server 8.0.28.
Laravel 12.0.0 is installed and runtime-loaded; focused Testbench SQL regressions use Laravel 12.0.1 because Testbench 10.0 starts at that patch.
MongoDB as the default Laravel connection, bare collection-string datasources, raw list/global/async search, metric/line SQL expressions, embedded relations, smart schema, built-in clone, and built-in reorder remain unsupported.
Use application handlers/providers for custom-only paths such as imports, tenant/audit storage, and MongoDB reorder through reorderUsing().
See the MongoDB Level 1 guide for installation, ObjectId/BSON behavior, the complete capability matrix, Doctor codes, replica-set requirements, upgrade checks, and rollback.
Documentation
- Documentation
- Installation
- MongoDB Level 1
- Configuration
- Global Search
- Command Palette
- Pages
- Modules
- Maintenance Banner module
- Health Status module
- Import module
- Media Browser
- Tenant Switcher
- Dashboard module
- Progress Bar module
- Panel module
- Text module
- List module
- Resource module
- Console commands
- Security
- Extension API
- Changelog