dskripchenko/laravel-admin
A Laravel admin-panel constructor inspired by Orchid, with a Vue 3 SPA frontend.
Live demo: laravel-admin.dskripchenko.space — a shop and a blog with a few thousand records, a showcase where every field, layout and action shows its own source, and this documentation inside the panel. No sign-up: pick Administrator, Editor or Viewer on the login page; the data resets every hour.
Admin::resources([UserResource::class, ArticleResource::class]);
Admin::screen([ContactScreen::class, SystemStatusScreen::class]);
Admin::menu()->add(
MenuNode::make('content', 'Content')->icon('book')->children([
MenuNode::resource('articles'),
MenuNode::dashboard('analytics'),
]),
);
What's inside
- CRUD pipeline — declare an Eloquent model as a
Resource, get list/create/edit/view screens for free. - Custom Screens — non-CRUD pages (forms, dashboards, reports) with
Admin::screen(). Handles state, layout, command-bar, validation, permissions. - Hierarchical menu — fluent
Admin::menu()->add(MenuNode::...), any depth, auto-resolveresource()/screen()/dashboard(). - 30+ field types — Input/Number/Select/Combobox/DatePicker/ ColorPicker/FileUpload/Wysiwyg/Markdown/TranslatableInput/Repeater/ RelationSelect/Cascader/TreeSelect/Slug/KeyValue/TagsInput/...
- 15+ layouts — Rows/Columns/Tabs/Wizard+Step/Block/Modal/Drawer/ Wrapper/Infolist/Dashboard/Accordion/View/...
- Tables — sortable columns, presets, filters (input/date/switcher/ options/select-from-model), inline-edit, summary, saved views, group-by, polling, exports (CSV/XLSX/PDF).
- Dashboard — 8 widget types (Stats/Chart/RecentList/Markdown/ Iframe/Table/Heatmap/Gauge), per-user layout overrides, drag/resize, polling.
- Auth & RBAC — multi-guard; a separate
admin_userstable or your existing users (shared strategy), roles, 2FA TOTP, profile, impersonation, password reset, email verification. - Audit — append-only log of admin actions (
AuditLog+Loggabletrait). - Settings — singleton-style configuration screens.
- Notifications — bell badge + drawer (Database notifications).
- API tokens — Sanctum integration in Profile (conditional).
- Theming — light/dark + per-user preference,
@dskripchenko/uidesign tokens. - i18n — locale resolver (6-step priority),
TranslatableFieldbridge fordskripchenko/laravel-translatable. - Tenancy —
TenantResolver/TenantContext/TenantScopedtrait. Strategy is host-side; we provide the contract. - Plugins —
AdminPlugininterface; sister-packs use the same hook. - Testing —
AdminTestCase,ActsAsAdminandInteractsWithAdminResourcestraits. - OpenAPI 3.0 — generated from docblock
@input/@outputtags.
Install
composer require dskripchenko/laravel-admin
php artisan admin:install
That's it — the admin SPA ships prebuilt, no Node needed. Visit
/admin/login. Getting started walks through
the first resource and the custom-build mode for your own Vue components.
Adding it to an application that already has users, its own API or a proxy?
Read Adding the admin to an existing application —
including admin:install --shared, which lets your existing users sign in.
Documentation
- Getting started
- Adding the admin to an existing application
- Architecture
- Concepts: Resources · Screens · Widgets & Dashboards · Menu · Actions · Permissions · i18n · Tenancy
- Fields reference
- Layouts reference
- API reference
- Frontend extension
- Testing
- Migration guide
- Glossary
Stack
- PHP ^8.2
- Laravel 11 / 12 / 13
- Vue ^3.4 + TypeScript + Pinia + Vue Router
- Frontend — prebuilt SPA ~350 KB gz JS + ~35 KB gz CSS; the npm library entry for custom builds ~260 KB gz (Vue, Pinia and the UI kit external)
- WYSIWYG —
@dskripchenko/wysiwygby default; Quill and TinyMCE adapters ship in the npm package (/quill,/tinymce)
Sister-packs
Optional extensions, install only what you need:
| Package | Purpose |
|---|---|
dskripchenko/laravel-admin-starter | User, Role and Audit Log resources |
dskripchenko/laravel-admin-media | Media library (no Spatie/medialibrary dependency) |
dskripchenko/laravel-admin-health | Health checks (no Spatie/laravel-health dependency) |
dskripchenko/laravel-admin-pulse | Telemetry sampler (no laravel/pulse dependency) |
dskripchenko/laravel-admin-jobs | Failed jobs / batches viewer |
Contributing
See CONTRIBUTING.md. PRs welcome.
License
MIT © Denis Skripchenko