Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Admin One Laravel Dashboard Laravel Package

vikdiesel/admin-one-laravel-dashboard

Admin One Laravel Dashboard is a free, open-source admin panel starter kit for Laravel built on the Admin One template with Vue.js and Tailwind CSS. It ships with authentication, user management, and a responsive dashboard UI to speed up backend development.

View on GitHub
Deep Wiki
Context7

Getting Started

This is a starter kit delivered as a Laravel preset, not a runtime library you use in classes. Treat it as a scaffold you install once, then own the files it publishes.

  1. Start from a fresh Laravel 9.x app (the composer.json constraints are pinned to that line). Do not bolt it onto an existing app until you have read what it overwrites.
  2. Pull it in via Composer and run the bundled installer command (see the README for the exact signature — it publishes views, routes, Vue pages, and Sass; typically php artisan admin-one:install). Commit immediately after so the published diff is reviewable.
  3. npm install && npm run dev (this era of the package leans on Laravel Mix/webpack, not Vite — check webpack.mix.js before assuming otherwise).
  4. First place to look: resources/js/Pages/Dashboard.vue and the layout components under resources/js/components / Layouts. That is where the sidebar, navbar, and theme wiring live.
  5. First use case: replace the sample dashboard cards with real metrics from a controller using Inertia::render('Dashboard', [...]), and wire one CRUD screen (list + form) end-to-end so you learn the props/page convention before scaling out.

The install is essentially a one-shot; after that your leverage is in the generated Vue/Blade/Sass tree, and the package itself is mostly inert.

Implementation Patterns

Page-based routing. All screens are Inertia pages. Add a route in routes/web.php, return Inertia::render('YourPage', $props), and drop resources/js/Pages/YourPage.vue. No separate API layer is needed for the admin — props are the contract.

Layout composition. Wrap pages in the generated Authenticated/Guest layouts. For persistent chrome (sidebar state, breadcrumbs), pass shared props via HandleInertiaRequests::share() rather than prop-drilling through every page.

Auth and profile. Jetstream (Inertia stack) provides the auth scaffolding; keep its routes and Fortify actions intact and layer your admin routes behind the same auth/verified middleware groups. Customize profile/team screens by overriding Jetstream's published components rather than editing vendor files.

CRUD screen recipe.

  • Controller method → Inertia::render('Users/Index', ['users' => UserResource::collection(...)])
  • Index page uses Buefy's b-table with paginated for client-side paging, or server-side paging via a ?page= prop if the dataset grows.
  • Forms submit with Inertia.post/put, handle errors prop, and use useForm from @inertiajs/inertia-vue for dirty-state and progress.
  • Flash messages: share a flash object in HandleInertiaRequests and render it in the layout as b-notification/toast.

Theming. Colors and spacing are Sass variables under resources/sass. Change the brand color once in the variables file rather than sprinkling Buefy type="is-primary" overrides. Dark-mode toggling in this template is typically a body class — verify the exact class name in the layout before wiring a toggle.

Extension points.

  • Sidebar/nav definitions: usually a JS array or config object in the layout — edit there, not in each page.
  • Server-driven config: check for config/admin-one.php for app name, logo, or route prefixes; anything else you need should be added to your own config file, not the package's.
  • Swap the sample Vue pages for your domain pages incrementally; leave the layout and auth screens untouched as long as possible.

Gotchas and Tips

  • Vue 2.x and Buefy are end-of-life. Buefy only supports Vue 2. You cannot upgrade to Vue 3 without replacing the entire component layer. Plan the component inventory accordingly — anything you build here is effectively frozen.
  • Last release is Feb 2021. It targets Laravel 9.x specifically; expect friction on Laravel 10/11 (middleware signatures, @vite vs Mix, Sanctum changes). Pin your Laravel minor and lock the lockfile.
  • Mix vs Vite mismatch. Laravel 9 defaults to Vite; this package predates that. If the published assets reference mix(), either keep using Mix (and remove Vite scaffolding) or port the entry points manually. Don't mix both — you will get stale-manifest errors that look like 404s but are asset resolution failures.
  • Sass compile failures. Old node-sass/dart-sass combinations break on modern Node. Prefer a recent sass (Dart) and Node 16/18 LTS; check package.json engines before upgrading Node.
  • Installer overwrites. Re-running the publish/install command will clobber your edited files. Keep an untouched git commit right after the first install so you can diff and recover anything the command stomps on.
  • Don't edit vendor/. If you need to change something the package owns, publish it (or fork the repo — 140 stars and a 2021 release means upstream fixes are unlikely) and manage it in your own tree.
  • Config caching. After changing anything in config/ or route definitions, run php artisan config:clear && php artisan route:clear. Inertia props that "disappear" after caching are usually shared props resolved from a cached config value.
  • Debugging Inertia props. Use the Inertia devtools extension and inspect the data-page attribute on the root div; when a prop arrives as undefined on the Vue side, the cause is almost always a serialization issue (Resource vs array, or Inertia::render receiving an Eloquent collection without a resource wrapper).
  • CSRF and Sanctum. If you add any axios or fetch calls outside Inertia (e.g., for autocomplete), the XSRF cookie must be present — the Jetstream middleware handles it, but plain routes/api.php calls will 419 without withCredentials.
  • Auth screen overrides. Jetstream publishes its components only when explicitly requested; if a login/profile screen "won't change," you are editing the package copy instead of the published one. Re-publish with the jetstream tag and --force.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle