luminix/frontend
Luminix Frontend gives Laravel apps a structured, component-driven frontend layer, pairing conventions and tooling that simplify view rendering, asset handling, and client-side integration so teams can build and maintain modern interfaces with less boilerplate.
What the package actually is. The product is three things: src/, config/frontend.php, and views/embed.blade.php. It is not a frontend framework — it is a server-side contract layer. ManifestService introspects Eloquent models through Spatie\ModelInfo\ModelInfo and resolves them via Luminix\Backend\Facades\Finder, then hands that manifest to a Blade embed view. Everything else in the repository is tests, packaging, and documentation.
Architecture fit. Good if, and only if, you are already on luminix/backend. The core dependency is transitive by design: neither spatie/laravel-model-info nor Luminix\Backend is required here, and the development notes explicitly warn that loosening the constraint "breaks the manifest, not just the models it describes." Treat luminix/backend as a hard peer requirement, not a Composer suggestion. For a greenfield Laravel service with no CMS backend, fit is poor — you would adopt an entire ecosystem to obtain one manifest endpoint and one Blade view.
Integration feasibility. Mechanically easy: one Composer install, one config publish, one view. The friction is epistemic. The public contract lives in skill/SKILL.md rather than in types or a versioned schema, and it is defined by what a consuming app can observe: payload keys, manifest fields, config keys, reducer names, artisan flags. That is a contract, but not a typed one. You will need to author the contract tests yourself.
Technical risk.
(MAJOR), (MINOR), absence → patch). A mislabeled subject ships a breaking change as a patch release.composer lint is declared but unusable — phpstan/phpstan is absent from require-dev and no config exists. Static analysis is your responsibility.Luminix\Frontend\Tests\ → tests/ autoload-dev entry is dead, indicating drift between packaging metadata and reality.runningInConsole() is true — correct for CLI ergonomics, but it means the package's own tests need a simulateHttpContext() shim, and any consumer command, queue worker, or scheduled job that emits a manifest may expose fields you assumed were filtered.Key questions to resolve in the spike.
skill/SKILL.md the only specification?luminix/backend in turn pull luminix/core or a JavaScript counterpart?v1.x the only supported branch?Stack fit. Laravel 11–13 on PHP 8.2+, distributed via Composer/Packagist. Blade rendering means it slots into any Blade, Livewire, or Inertia host. But "frontend" in this name means server-rendered embed bootstrapping a JS app — confirm what the embed actually mounts before designing around it. On an API-only or CDN-hosted SPA, the Blade view is dead weight and you would consume only the manifest service.
Migration feasibility. Low-to-moderate. No data migration is implied: the package reads models, it does not own tables. The migration is a contract migration — replacing whatever hand-rolled schema endpoint or shared-props builder you have today with a manifest produced by ManifestService. Budget for a parallel-run period and a diff harness that compares old versus new payloads model by model.
Compatibility. Two axes with very different guarantees. The Laravel/PHP matrix is broad and CI-enforced. The luminix/backend pairing is narrow and not enforced by this repository. Pin exact versions of both; do not use ^ on luminix/backend.
Sequencing.
Finder + ModelInfo path works without luminix/backend being explicitly required.simulateHttpContext()) and console, then diffed. That diff is your security baseline.ManifestService so an upstream rename is a one-file change in your codebase.vendor:publish --tag=luminix-skill, commit the published copy, and add a CI job that re-publishes with --force into a temp directory and fails on diff. That is your only early warning that the observable contract moved.Maintenance. Small code surface, but you inherit the upgrade treadmill of a transitive chain you do not control. Two recurring chores: re-publishing the skill on every bump (otherwise the agent-facing documentation drifts and your AI tooling starts generating code against a contract that no longer exists), and re-baselining snapshots. Upstream discipline is visibly uneven — dead autoload entry, non-functional lint script, Portuguese-only commit conventions — so assume you are the QA function.
Support. Zero stars and zero dependents means no community, no Stack Overflow surface, no third-party write-ups. Support is the maintainer's GitHub issues, in whatever language they respond in. Plan for an internal owner with read access to src/ and a standing willingness to fork. Forking is cheap here (three files) and, given the commit-subject-driven semver scheme, arguably the safer default for anything revenue-critical.
Scaling. ModelInfo introspection plus Finder resolution is per-request work unless cached; across dozens of models it will show up in p95. Cache the manifest keyed on both an app-level model-registry version and the authenticated user's visibility scope — the guest filter must be part of the cache key, or you will serve a privileged manifest to an anonymous request. Watch memory on wide schemas: introspecting every model on every boot does not scale linearly in practice.
Failure modes.
runningInConsole() suppresses guest filtering, so any queue worker, scheduled job, or artisan command that emits a manifest skips the visibility layer entirely.--force publish clobbering locally patched skill files in consuming apps. This will happen, and it will present as a documentation regression rather than a packaging one.Ramp-up. Half a day to read src/, the config, and the embed view. Two to three days to be genuinely productive, because the real onboarding is the luminix/backend Finder contract and the skill-publishing convention — neither of which is in the Portuguese README. The English skill/SKILL.md is the only reliable map. Record a "why we pinned / why we may fork" note in the repo before the first integrator rotates off.
Verdict. Adopt only as an internal component of a Luminix-based stack — pinned, adapter-wrapped, and fork-ready. Do not adopt as a general-purpose frontend manifest library. The score (19.1 overall, 41.1 opportunity, zero dependents) describes a package that is early, single-maintainer, and coupled by design; the opportunity signal is real, but it is an opportunity for the maintainer, not yet a safe bet for a dependent.
How can I help you explore Laravel packages today?