mustafakhaleddev/nova-rtl-support
Adds right-to-left support to Laravel Nova, automatically flipping layouts, menus, forms, and UI components for Arabic, Hebrew, and other RTL languages. Lightweight setup aligns Nova styling so dashboards read naturally in RTL locales.
Architecture fit. This is a Nova-only add-on, not a general Laravel package. It sits in the admin panel layer: a service provider that publishes/serves a stylesheet (and possibly view overrides) to flip Nova's chrome to RTL for locales like Arabic, Hebrew, Persian, and Urdu. It does nothing for the customer-facing application. Fit is therefore conditional on two things being true at once: Nova is our admin surface, and an RTL locale is a first-class requirement for the people who use that surface. If either is false, the package has no addressable value regardless of its score.
Integration feasibility. Mechanically easy — Composer install, service provider auto-discovery, vendor:publish for assets. The difficulty is temporal, not mechanical: the last release is May 2019, which puts it in the Nova 1.x/2.x era, while current Nova is 4.x/5.x. Nova is closed-source and commercial, so its internal asset pipeline, Blade views, and CSS class contracts are not something we can inspect or pin against upstream. There is no upgrade guarantee and no one to ask.
Technical risk — high. Concretely:
Key questions.
composer.json constraint actually allow, and what is our pinned Nova version?app()->getLocale(), or is it a manual config flag? Automatic is table stakes.Stack fit. Laravel + Nova, nothing more. It solves the admin slice of an RTL requirement and should be scoped as such. If RTL is required for the customer-facing app, that is a separate workstream (locale routing, front-end direction handling, logical CSS properties) and this package contributes nothing to it. Framing it as "our RTL solution" is the most likely way this goes wrong politically.
Migration path. Do not consume it as a live dependency. Fork it, vendor the source into our repo, pin the commit, and treat the CSS as first-class internal code with an owner. Given the age and size, the realistic comparison is fork-versus-rewrite: the delta is likely a few hundred lines of override CSS, and rewriting against our exact Nova version may cost less than reconciling a six-year-old sheet. Run that comparison during the spike, before committing to either.
Compatibility. Verify PHP and Laravel constraints, the nova constraint, auto-discovery behaviour, and publish tags. Then check for collision: any other Nova package overriding the same views or injecting competing styles is an immediate conflict candidate. Confirm whether assets are published to public/vendor (deploy-pipeline concern) or served from the package.
Sequencing.
Maintenance. Zero upstream maintenance — the archive status means we absorb 100% of it. Budget explicitly for one maintenance task per Nova major upgrade, and a verification pass on every Nova minor. That recurring cost is the real price of the package, not the install.
Support. None available. No issue triage, no maintainer, no documentation depth, and with 7 stars and 0 dependents there is no community corpus to search. Internal documentation and a named owner are mandatory, not optional.
Scaling. Runtime cost is negligible — static CSS, no query or request-path impact. Technical scaling is a non-issue. Organizational scaling is the actual constraint: every new Nova tool, card, or filter added to the admin becomes a new RTL verification obligation, and that obligation grows with the admin surface, permanently.
Failure modes.
public/vendor on deploy.Ramp-up. Low for a competent Laravel developer to install — under a day. Medium-to-high to maintain: debugging specificity against Nova's compiled CSS is a narrow skill, and it must be paired with a native RTL reader for QA. Plan for that pair, not just the developer.
How can I help you explore Laravel packages today?