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

Laraadmin Laravel Package

dwij/laraadmin

LaraAdmin is a Laravel admin panel and CRUD generator for building backends fast. Create modules, manage users and roles, generate forms and data tables, and customize a clean Bootstrap-based admin interface with minimal setup.

View on GitHub
Deep Wiki
Context7

Getting Started

  1. Check version compatibility first. LaraAdmin is a Laravel admin-panel/CMS boilerplate whose composer constraints target the Laravel 5.x line (and PHP 7.x). Before installing, inspect the package's composer.json against your app's laravel/framework and php versions. If you're on Laravel 9/10/11, this is realistically a fork-and-port job rather than a composer require.
  2. Install into a fresh or compatible Laravel app:
    composer require dwij/laraadmin
    php artisan vendor:publish --provider="Dwij\Laraadmin\LaraadminServiceProvider"
    php artisan migrate
    
    LaraAdmin ships migrations for its own la_* tables (modules, fields, roles, privileges, media, menus) plus seed data for a default admin user.
  3. Log in. The admin panel is mounted under a configurable route prefix (typically /admin). The seeded credentials are documented in the package README — change them immediately on any non-local install.
  4. Look here first:
    • config/laraadmin.php — route prefix, middleware, upload paths, auth guard.
    • app/Http/Controllers/Admin/ — generated module controllers.
    • resources/views/admin/ — generated CRUD blade views.
    • The la_modules and la_module_fields tables — this is the source of truth the Module Manager reads.
  5. First use case: open Module Manager → Add Module, create something trivial like Products with a name (string), price (decimal), and photo (image). Saving generates the migration, model, controller, routes, views, and menu entry in one pass. That's the canonical LaraAdmin workflow — you'll judge whether it fits your project within the first hour.

Implementation Patterns

  • Module Manager as the primary CRUD scaffold. Define a module and fields through the UI; LaraAdmin writes the migration, Eloquent model, controller, Blade views, route registration, and privilege rows. Treat the generator as a scaffolder — use it to bootstrap, then own the files.
  • Generated-file boundaries. Keep your business logic out of the generated controller methods and views where possible. The common pattern is to let the generator create the skeleton, then immediately move custom logic into services, form requests, or a repository so that a regeneration (which overwrites) doesn't erase it.
  • Role/privilege based access. Every module gets View / Add / Edit / Delete privileges tied to roles (la_roles, la_privileges). Wire the admin UI around this rather than building your own gate system — but be aware it's a parallel authorization layer to Laravel's native Gate/Policy; you'll likely bridge them if you have a public app sharing users.
  • Media Manager for uploads. Image/file field types store references to media-manager assets rather than raw paths. Use the package's helper to resolve URLs in your views/API responses instead of hardcoding public/uploads/....
  • Menu Manager for navigation. Modules don't automatically appear in the sidebar in every configuration — register them via Menu Manager or the la_menus table so the admin shell shows them.
  • Backups. LaraAdmin wraps spatie/laravel-backup. Configure the disk and schedule backup:run in app/Console/Kernel.php; don't rely on a manual button in the UI for production safety.
  • Frontend split. The idiomatic deployment is LaraAdmin as an internal backend only. Expose data to a separate frontend (Vue/React/Blade) via your own API routes hitting the generated Eloquent models — don't try to make LaraAdmin's Blade views public-facing.
  • Custom field types. Add new field types by extending the type registry (config-driven) plus a matching Blade partial for form rendering. This is the cleanest extension point in the package.

Gotchas and Tips

  • The maintenance signal is the headline. 1,583 stars but effectively no recent activity and a 2023 release that is largely metadata. Treat this as a starter kit you fork and own, not a dependency you upgrade. Budget for pinning Laravel/PHP versions or porting.
  • Regeneration overwrites. Editing a module in Module Manager and re-saving can clobber controller/view customizations. Version-control aggressively and diff before re-saving modules.
  • Migration collisions. Repeated module creation generates timestamped migrations; deleting a module doesn't always reverse the schema. Audit database/migrations/ and la_modules for drift between the DB and the module registry.
  • Auth guard confusion. LaraAdmin has its own user/role tables that may not be the same as your app's users table. Check config/auth.php and config/laraadmin.php for the guard it uses; mixing guards produces silent 302 redirects instead of 403s.
  • Assets won't render. If the admin UI loads unstyled, you skipped asset publishing or the public symlink. Re-run vendor:publish and check public/ for the LaraAdmin asset directory.
  • Route prefix and middleware live in config/laraadmin.php. In production, wrap the admin prefix in your own auth + IP-allowlist middleware — the default guard is not enough for a public internet deployment.
  • Debugging order: storage/logs/laravel.log → the la_module_fields rows for the module in question → whether the generated route is registered (php artisan route:list | grep <module>) → asset publishing. Most "it doesn't work" reports are field-type/registry mismatches or missing routes.
  • Extension points to prefer: config file, custom field-type registration, overriding the published Blade views under resources/views/admin/, and service-provider bindings. Avoid editing files inside vendor/.
  • Don't ship the seeded admin credentials. The default admin user is a known value; rotate it in the first migration/seed you control.
  • Backup disk config is a trap. The backup feature inherits spatie/laravel-backup's disk config; if the disk isn't writable or is local inside the app directory, backups silently fail. Verify with a manual backup:run and inspect the log.
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.
ably/pubsub-server
mstfkhazaal/defender
mfonte/base62x
karnoweb/metapilot
tobya/bcsapiwrapper
swalker2/cpanel
vish4395/laravel-translation-manager
morningtrain/economic
teksite/systeminfo-laravel
atomcms/voting
run6/weather
siokas/laravelembeddirectives
adamlien/pkuuids
gilsonsouza/lara-doc-generator
manelgavalda/enrollment_mobile
unabomber/timezone
delatbabel/contacts
astritzeqiri/g-recaptcha
kevinongko/laravel-genode
developeruz/laravel-analytics