saivra/meui-theme
MEUI Theme is a Laravel package that adds a ready-to-use MEUI admin interface theme to PHP applications. It provides Blade views, assets, and configurable layout components to quickly style dashboards and back-office panels.
Architecture fit. MeUI (saivra/meui-theme) is not a general Laravel package β it is a Filament 5 panel theme plus an optional appearance-preferences subsystem. That constrains where it fits: it is appropriate for administrative/back-office panels built on Filament, and irrelevant to public-facing, API, or Blade-rendered surfaces. v0.2.0 moves the package from "static theme" to "theme + user-scoped preferences store," which introduces a small persistence and authorization layer that must be evaluated like application code, not like CSS.
Integration feasibility. High for a Filament shop, in the straightforward case.
composer require saivra/meui-theme + php artisan filament:assets is a two-step, no-migration path for theme-only adoption β very low integration cost.meui-migrations β migrate β register MeUiPlugin::make()->customizer()). Disabled by default is the correct default posture.Technical risk.
| Risk | Severity | Notes |
|---|---|---|
Pre-1.0 versioning (0.2.0) |
Medium | Public API, plugin options, and config shape may shift; customizer surface is brand new in this release. |
| Single-vendor community theme | Medium | Independent project by Saivra Technologies; no commercial SLA, unclear bus factor. MIT gives an exit hatch (fork). |
| Coupling to Filament internals | Medium | Themes override Filament CSS/markup; Filament minor releases can break visual regressions that unit tests will not catch. |
| New persistence + authorization code path | Medium | Authorization closure misconfiguration is the highest-impact failure: it could expose appearance controls (low blast radius) but also touches user-scoped writes. |
| Untested DB/platform combinations | LowβMedium | MySQL/MariaDB and Laravel 11 / Filament 4 are not in the matrix. |
| Asset staleness on upgrade | Low | filament:assets must be in the deploy pipeline or the theme silently regresses. |
Key questions for the maintainers / before adoption.
0.x and 1.0, specifically for customizerOptions(), authorization closures, and persistence callbacks?loginUsing, or queued/scheduled context where no guard is active?Assessment: adopt for a Filament 5 pilot panel; defer broad rollout until the API-stability and support-window questions are answered.
Stack fit. Requires Laravel 12 or 13 and Filament 5. Confirm the estate's actual versions before committing β if any panels are still on Filament 4 or Laravel 11, this package is out of scope for them until upstream support exists (it is not listed in the matrix, so treat it as unsupported rather than assumed-working). Database support is validated on SQLite and PostgreSQL; MySQL/MariaDB teams should run the migration and customizer flow themselves in staging before trusting it.
Migration path. Two distinct tracks, and they should be sequenced rather than done together:
meui-migrations, migrate, register ->customizer(). This is additive and idempotent, but it creates a table that will hold user data β treat it as a one-way door for that table's schema and confirm a down-migration exists before production.Pin an explicit version constraint (0.2.* or a locked tag) rather than floating, given the pre-1.0 API surface. Prefer the persistence callbacks to bridge into any existing user-settings store rather than running two stores in parallel.
Compatibility. Green on Laravel 12/13 + Filament 5 min/current + SQLite/PostgreSQL. Amber on:
filament views β expect specificity conflicts; audit existing custom stylesheets first.Sequencing.
customizerOptions() allowlist.php artisan filament:assets to every deploy step, including rollbacks, and add a visual smoke check to CI/release QA.Maintenance. The dominant long-term cost is not the package, it is the CSS/markup coupling to Filament. Every Filament minor upgrade is a potential visual regression that automated tests will not catch; budget a manual visual pass per Filament upgrade, on both light and dark modes. Pre-1.0 versioning means reading release notes before bumping β v0.2.0 itself is additive and non-breaking for theme-only installs, which is a good sign, but that pattern is not guaranteed. MIT licensing provides a credible fallback: if the project stalls, the theme can be forked and maintained in-house, so the vendor risk is bounded but not zero.
Support. Community-supported via GitHub issues; no SLA, no commercial escalation path, single-vendor ownership. For an internal admin tool this is usually acceptable; for anything customer-facing or regulated, plan internal ownership of the theme layer from day one rather than relying on upstream responsiveness.
Scaling. Low risk. The customizer adds one preference read per authenticated panel request β cache it per user/panel/guard and the cost is negligible. The preferences table grows one row per user per panel (plus any variant rows, depending on schema), so it is trivially small. The customizer UI adds a small JS/CSS payload to authenticated pages only; it is disabled by default and scoped to signed-in users, so public and auth-page performance is unaffected. The only scaling concern worth measuring is per-request preference lookups on high-traffic admin panels with many concurrent operators.
Failure modes to design against.
filament:assets in the pipeline plus a post-deploy visual smoke test.customizerOptions() initially.Ramp-up. For end users: effectively zero β a "Customize theme" profile action with immediate apply and reset. For engineers: low-to-moderate. The README and gallery are substantially expanded and cover real sign-in, registration, recovery, Studio, customization, wizard, and product screens, plus a dedicated customization guide, which is above average documentation quality for a 0.x community theme. The real learning curve is Filament theming conventions (panel provider registration, asset publishing, view/CSS override precedence), not this package specifically. A team already shipping Filament panels can absorb this in days; a team new to Filament should not adopt the customizer in the same cycle as its first panel.
How can I help you explore Laravel packages today?