lara-zeus/zeus
Zeus is a Laravel package for quickly building admin panels and internal tools. It offers reusable components and a clean structure for CRUD screens, dashboards, and management workflows, helping PHP developers ship back-office interfaces faster with less boilerplate.
Clone it, don't require it. lara-zeus/zeus is a standalone application skeleton — a starter kit that pre-wires the Zeus family (core, admin panel, forms, tables, and the Bolt CMS/blog module) on Laravel + Livewire + Tailwind. The value is the pre-wiring, so the install path is: copy/clone the repo into a working directory, composer install, npm install, copy .env.example → .env, php artisan key:generate, point at a database, php artisan migrate --seed, then create/log in a user and land in the panel. Budget an afternoon, not a sprint.
Three files to read before you write anything:
composer.json — your actual contract. Confirm the Laravel constraint (v4.0.0 is a Laravel 13.x shift), minimum PHP, Livewire major, whether Filament is present and which major, and the pinned Zeus package versions. Write this matrix down; every upgrade decision hangs off it.app/Providers/*PanelProvider.php or equivalent) — where the panel path, branding, navigation groups, pages, and resources are registered. Nearly everything you add day-to-day gets wired here, so this is the file you'll open most..env + config/ — panel path, auth guard, and any Bolt/content toggles. Settle these before you build screens so you're not building in the wrong place.First use case: one real screen, end to end. Pick a boring internal entity — Client is the classic — and take it all the way: migration → model → table definition → create/edit form → navigation registration → asset build → verify in the browser. Time-box to a day. That single loop exercises everything the kit claims to save you and reveals in hours whether the conventions fit your team. Kill criteria: the asset build fights your pipeline, or the form/table API makes you fight the framework instead of using it.
If you don't need a blog, strip Bolt on day one — dependency, migrations, and its nav entries. Carrying a dead CMS module through your first major upgrade is pure cost.
Model-first, screen-second — this is the daily loop. Migration + model, then a table class (columns, filters, search/sort, row and bulk actions), then a form schema (fields, validation, relation handling), then register the page in the panel provider. Keep table and form in separate classes so editing one never touches the other. This is the shape the kit is designed for; deviating from it is where the friction starts.
Keep domain logic out of the UI layer. Zeus is excellent at view plumbing and weak as a domain layer. Put business rules in models/actions/services so a table cell calls $record->recalculateTotal() rather than inlining arithmetic. This is also your exit ramp: the output stays standard Blade/Livewire, so any screen can be reimplemented by hand or in Filament without rewriting domain code. Enforce this in review — it's the single highest-leverage habit here.
Publish-then-override, and keep the override list short. Need a view change? Publish the vendor view, edit the published copy, never the vendor file. Then maintain an OVERRIDES.md listing every published file you've modified with a one-line reason. On the next major that file is your migration checklist — and because this package's cadence tracks Laravel majors, you will be doing that upgrade.
Register navigation and pages centrally. Add pages/resources in the panel provider next to the built-ins rather than inventing a parallel menu. One file stays the source of truth for "what exists in the admin," and grouping/ordering stays consistent with upstream decisions.
Seed real-shaped demo data. A DemoSeeder with 20–50 realistic rows per entity is what makes pagination, filtering, empty states, and relation dropdowns actually testable. With three rows every table looks fine; at fifty you find the truncation, the N+1, and the broken filter.
Read Bolt as documentation before you write your first relational screen. Its posts/categories/tags pages are the intended reference implementation for list + form + relation handling — worth reading even if you delete it.
For custom screens, compose rather than fork. Reuse the kit's form and table builders for bespoke pages, and layer your own Blade components beside Zeus ones rather than subclassing its internals. Check php artisan list for the zeus namespace before hand-writing boilerplate — the scaffolding commands are where the time savings actually live.
Brownfield: port patterns, don't install. The kit wants to own layout, assets, and routing. Copying its table/form class structure and panel-provider wiring into an existing app is reasonable; installing the starter kit into a live application is a framework migration wearing a package-install costume.
npm run build and serve the compiled output, not the Vite dev server."lara-zeus/zeus": "4.0.x", not ^4.0. With a single credited maintainer and low adoption, put an explicit fallback in the README now ("hand-roll these screens" / "move to Filament") so the decision is already made if the project stalls.composer.json and the panel setup before you size anything — it changes both your mental model and your upgrade train (Laravel + Livewire + Filament + Tailwind + Vite is more moving parts than one changelog suggests).How can I help you explore Laravel packages today?