sbine/route-viewer
A Laravel package that adds a browsable web UI for your application's registered routes, similar to artisan route:list but in the browser. Quickly inspect route methods, URIs, names, controller actions, and middleware without leaving your app.
php artisan route:list is near zero, which is precisely what makes saying yes low-risk.0.1.0 hard-requires Laravel 11+, PHP 8.2+, and Nova 5+, so adoption is contingent on your Nova 5 timeline. Teams on Nova 4 are blocked, not deferred — they'd pin to the unmaintained 0.0.x branch./route-viewer panel answers "which endpoints exist?", "why is auth missing here?", and "why is this 404?" for QA, support, junior devs, and contractors who cannot shell in to run artisan route:list. That reframes a developer-experience nicety as support-cost reduction with a measurable proxy — time-to-diagnose routing incidents — which survives a budget review far better than "DX."_debug, _ignition, Telescope/Horizon, or deprecated admin endpoints are exposed in staging or production. This is a real decision input — but only if access is enforced by policy (canSee plus endpoint middleware), never by "the tool isn't linked in the nav."Adopt when all of the following hold:
0.0.x, now effectively an unmaintained branch; budget the platform upgrade first or don't adopt.Route::getRoutes() and renders what the router already knows.0.1.0 is a genuine maturity signal, but it is a build/smoke check — not a community backstop or evidence of scale-tested use.0.1.0 is a compatibility reset, not an API-stability promise; pin an exact version (0.1.0, not ^0.1.0) and treat every release note as potentially breaking.canSee + middleware, or registered only in non-production. The failure mode is drifting between the two, so the gate silently disappears in production.Look elsewhere when:
For executives / sponsors (30 seconds): "A one-line, MIT-licensed, read-only panel that shows every registered route in our admin console — no custom build, no maintenance burden. It removes a routine engineering interruption: today anyone who needs to know what endpoints exist has to find an engineer with server access. It also gives us a cheap pre-release check that we haven't shipped a debug or admin route by accident. Cost is effectively zero and we can remove it in minutes if it doesn't earn its place. The one caveat is that we need to be on the current Laravel/Nova generation (Laravel 11+, PHP 8.2+, Nova 5+) — so this rides the upgrade that's already on the roadmap, it doesn't create a new one."
For engineering: "Install, register the tool in NovaServiceProvider::tools(), ship. No migrations, no asset pipeline changes, no request-path overhead — it reads the router's registered collection. Two things are non-negotiable before it goes anywhere near production: (1) a canSee override plus the config's access middleware, because route inventory is information disclosure — controller namespaces and middleware names leak our auth strategy and architecture; and (2) pin the exact version, because ^0.0.11 will never float to 0.1.0 and 0.1.0 reads like a minor bump but drops Nova 4, Laravel ≤10, and PHP <8.2 outright. Keep php artisan route:list documented as the escape hatch. One operational nuance worth internalizing: what the panel shows is the cached route table, so it's excellent for confirming a stale deploy cache during an incident — and misleading if you forget to route:clear first."
The framing that lands: it's not a developer toy, it's a support-cost reduction and a release-gate check that happens to cost one line and one dependency. The risk is bounded and reversible; the value is decoupling a routine question from shell access.
How can I help you explore Laravel packages today?