takielias/tablar
Tablar is a Laravel admin dashboard preset built on Tabler, featuring dark mode, dynamic menu generation, and a clean responsive UI for building backends quickly.
Architecture fit. Tablar is a presentation-layer preset, not a domain library. It ships Blade layouts, Tabler (Bootstrap 5) assets, a tablar.php config, and an install command that publishes views and scaffolds optional auth. Coupling to application logic is therefore shallow and mostly one-directional: your controllers and routes stay yours, while layout, dark mode, and menu rendering come from the package. Dynamic menu generation is config-driven, which is the main architectural decision point — navigation becomes declarative configuration rather than per-view markup. That is a genuine win for multi-module admin panels, but it also means menu structure and route names must stay in sync, and no compile-time check enforces that.
Integration feasibility. High for greenfield Laravel 11/12/13 with Blade. composer require plus php artisan tablar:install is a short path to a working shell. The --with-auth flag is the friction point: it publishes migrations and a Breeze-inspired auth scaffolding, which will collide conceptually with Breeze, Fortify, Jetstream, or an existing custom auth stack. For any team with established auth, install without the flag and keep Tablar purely as a layout.
Technical risk.
@tabler/core version bumps (1.0.0, 1.4.0) and by fixes to regressions — sticky control, nav icons, CSRF token, condensed layout, dropdown persistence. That pattern implies visual and behavioral drift on upgrade.Key questions.
--with-auth.Stack fit. Laravel 11/12/13, Blade, Bootstrap 5 via Tabler, Vite for assets. Livewire is supported per the 11.2 release. It is a poor fit for Inertia+React/Vue apps where the frontend is a separate SPA, unless Blade is retained only for the auth and error-page shell.
Migration path. Treat this as a brownfield layout swap, not a rewrite:
--with-auth) so existing auth, middleware, and route names are untouched.tablar.php incrementally, one module at a time.views_path overrides for any bespoke pages.Compatibility. Confirm the CI matrix covers the exact Laravel minor we run. Verify Node/Vite versions in the build pipeline before committing — this is the most common install failure. Check that our auth routes do not duplicate anything the installer appends to routes/web.php (a known idempotency bug, fixed in 13.8.0, so pin at or above that release if using auth export). Validate @tabler/core version alignment between the package and any assets we maintain ourselves.
Sequencing. Pin an exact version in composer.json and commit the lock file. Land the toolchain upgrade (PHP 8.3, Node 20.19+) as a separate, earlier change so a build failure is never ambiguous. Do the layout swap before the menu refactor — bundling them makes regressions hard to attribute. Defer --with-auth, custom views_path, and layout-per-view selection until the base shell is stable.
Maintenance. Post-install, published Blade views are application code and fall under our review, lint, and test obligations. Budget recurring effort for upstream diffing on each release, particularly around Tabler core bumps. Keep the package pinned and upgrade deliberately rather than tracking latest; a UI preset is not worth continuous-upgrade risk on a stable admin surface.
Support. MIT license with no commercial backing. Support is GitHub issues plus maintainer responsiveness, and documentation lives on a demo domain with per-version branches rather than the main README — a docs-drift risk. Escalation path for a blocking bug is effectively "patch it ourselves or fork." Plan for that: fork under our org, keep the diff small, and mirror releases.
Scaling. Runtime cost is negligible — this is HTML/CSS/JS delivery, not a request-path service. Two scaling-adjacent concerns: menu configuration evaluated per request should be cached if it becomes non-trivial, and asset bundle size affects admin page load on slow connections. Dark mode and layout preferences stored client-side need a documented default for first render to avoid flash.
Failure modes.
routes/web.php after any auth-related command.Ramp-up. Low. A Blade-fluent developer is productive in a day; the installer and demo project (tablar-demo-project) plus the live demo and video shorten onboarding further. The non-obvious learning is the config-driven menu model and the view-override precedence via views_path — document both internally, since neither is prominent in the main README. Frontend engineers need context on Tabler/Bootstrap conventions if the team is Bootstrap-5-native rather than Tailwind-native (a Laravel-default shop will be the latter, and that mismatch is the most likely source of design friction).
How can I help you explore Laravel packages today?