beyondcode/nova-tinker-tool
Nova Tinker Tool adds an interactive Artisan Tinker console to Laravel Nova, letting admins run PHP and tinker commands directly from the dashboard without opening a terminal. It speeds up debugging, quick data checks, and experimentation in a familiar Nova interface.
Architecture fit. Nova Tinker Tool is a Laravel Nova tool — a dashboard panel mounted inside the Nova admin UI. It sits at the seam of three layers: the paid Nova platform (route registration, Vue component, authorization gate), Laravel's container (the Tinker/PsySH runtime), and the application's own models and services. That triple coupling is the defining characteristic: the package is not a library your code calls, it is a web-facing entry point that executes arbitrary PHP with full application credentials. For a TPM, the framing is that this is a capability with a blast radius, not a dependency with a version number.
Integration feasibility. Installation is trivial — composer require plus registration in NovaServiceProvider::tools(). No migrations, no schema, no meaningful config surface. The effort is entirely in governance: environment scoping, gate/allowlist restriction, audit logging, and ownership. Two non-trivial externals complicate it: Nova is a commercial product on its own release cadence, and Tinker's major versions now track Laravel's, not the package's.
Technical risk. High, concentrated in two places.
Key questions.
Artisan::call('tinker', ['--execute' => ...]))?Decision this informs. The real call is "adopt vs. reimplement the pattern," not "which version" — because the archive means long-term ownership lands on us either way. Value here is informational: it tells us how cheap the build is and how much governance it requires. It is undifferentiated internal tooling and should fold into an existing DX/maintenance epic, never a standalone initiative.
Stack fit. Appropriate only inside an internal operations surface — a Nova dashboard that engineers and senior support already use, on a Laravel + Nova stack you own end to end. It does not fit customer-facing, partner-accessible, or multi-tenant Nova installs, and it does not fit any posture where Nova access is granted broadly.
Migration path. Given the archive status, plan to vendor the package: fork into an internal repo, pin against your Nova major, and own it. The migration is mechanical — read the service provider, confirm tool registration, patch the Nova component API, and verify the Tinker invocation path against your installed Tinker major. Do not composer require from Packagist and assume forward compatibility.
Compatibility. The hard boundaries are Nova major and Tinker major; PHP follows from Tinker (2.x implies PHP 8.2+). Build a small compatibility matrix for the exact Laravel/Nova/PHP combination you run and test against only that — nothing else will be patched.
Sequencing.
Maintenance. Effectively total, because the package is archived. Budget a named owner and a small annual allowance to keep the fork aligned with Nova releases — and compare that against roughly one day of engineering to build a guarded internal wrapper around tinker --execute. That comparison is the honest business case, and it usually favours the internal build.
Support. No upstream obligation exists. Internal support falls to whoever owns the fork. Expect a steady trickle of "why doesn't the tool appear" (Nova registration/discovery) and "it throws after the Nova upgrade" tickets — both symptoms of the archive status rather than defects.
Scaling. Not a throughput concern; it is a low-concurrency admin tool. The scaling risk is blast radius: an unguarded REPL lets an engineer run an unbounded query or a destructive statement against whatever database the environment points at. Concurrency is irrelevant; the environment boundary is everything.
Failure modes, ranked by severity:
Ramp-up. Engineers who already use Tinker operate the UI in minutes; the REPL is familiar. The real ramp-up is behavioural — understanding that snippets run with application credentials, reachable over the web, with no undo for destructive statements. Treat it as requiring a short written policy and a sign-off rather than a tutorial. Budget half a day of governance and about an hour of onboarding per engineer, and revisit the decision at the next Nova major upgrade — the natural point to either re-fork or retire the tool in favour of a narrower internal replacement.
How can I help you explore Laravel packages today?