laranail/db-console-webui
A thin Livewire + Flux web UI for laranail/db-console. It provides all screens with zero business logic—every action calls the audited core services and shares the same validation, keeping names, hosts, and privileges consistent across CLI, REST API, and UI.
ServerRegistry::defaultAccountHost() (% on managed MySQL) instead of a hard-coded localhost, the switcher shows the provider, and the wizard routes operators to the provider's point-in-time recovery as the restore path when a backup fails, reporting BackupFailed distinctly. That is the difference between "works in a lab" and "usable against RDS-style managed instances" — treat first-class managed support as shipped and scope the remaining providers explicitly.password.confirm route when it exists — the WebUI never authenticates, it points at the host. Combined with the new live CI job that exercises the wizard and account manager against real MySQL 8.4 and PostgreSQL 18 as a restricted admin (db-console's minimal grant with sql_require_primary_key=ON; a non-superuser CREATEDB CREATEROLE role on Postgres), and LiveAdminGrantTest keeping the CI grant equal to MinimalAdminGrant, you can hand a security reviewer a least-privilege story rather than a promise.laranail-db-console-webui.* forms, with bare names kept working behind a one-time deprecation warning and removal signposted as "no earlier than the next minor after 0.1." This is a schedulable migration, not a surprise break — but it does need a ticket, and your own docs/saved links/routeIs() checks are the exposure.illuminate/console, illuminate/http and illuminate/routing are now declared at ^13.0. Any roadmap item that assumes this UI runs on your current Laravel version needs checking against that floor before it is committed.Adopt when most of the following hold:
CREATE DATABASE / CREATE USER work. The tested minimal grant is documented and CI-enforced; if your platform team will not grant anything near it, the product collapses to a read-only browser.laranail/db-console ^0.1.1 (hard requirement: existing-resource policy and operator assurance live there) and laranail/package-tools ^0.1.3 (now a direct dependency, not transitive).Look elsewhere when:
To executives: This is the internal database console we would otherwise build. The v0.1.1 release closes the gaps that blocked production use: operators can now drop accounts, not just create them; the UI understands managed databases (correct account hosts, provider visibility, and backup-failure/PITR guidance instead of misleading generic errors); and existing accounts or databases are surfaced as an explicit adopt-or-abort decision with the risk of each choice spelled out, never a silent "success." It also hands security a concrete answer: authentication stays with our host app via password.confirm, and the package's integration tests run against real MySQL 8.4 and PostgreSQL 18 under db-console's documented minimal admin grant, with a test that fails if CI's grant drifts from it. Cost and risk: the package is pre-1.0 and now requires Laravel 13 and laranail/db-console ^0.1.1, so this is a scoped adoption with pinned versions and a scheduled upgrade ticket — not a drop-in.
To engineering: v0.1.1 is a stabilisation release you should take as a unit. It fixes two real defects — published translation overrides were never read (the package translated through the hyphen namespace while vendor:publish wrote to the slash one; it now translates canonically and still honours hyphen overrides, canonical winning), and BareRouteNameResolver could raise a TypeError under strict_types when a previously-installed resolver returned a non-string. It also fixes a test that left published views in the Testbench skeleton vendor/ and shadowed the package's own views on every later local run — which is why changed views "didn't show." Naming is now centralised in Support\RouteNames, LivewireNames, BrowserEvents and Translations, with NamingConventionTest reading the live router, rate limiter, Artisan and middleware registries and failing on any bare name the package owns. Bare route names, the bare install command, the bare Livewire names, the db-console:server-changed event and Routing\BareRouteNameResolver are all deprecated with a one-time warning and a removal floor of "the next minor after 0.1"; bare route() names still resolve, but Route::has() and routeIs() see only scoped names — so grep for those. Dependencies are now declared rather than inherited: illuminate/* at ^13.0, laranail/db-console ^0.1.1, package-tools ^0.1.3. Note the middleware and README now check db-console's scoped abilities (laranail-db-console.database.view, laranail-db-console.server.view); the old db-console.* names still work as deprecated aliases, so existing host policies keep functioning — update them on your own schedule, not in this upgrade.
How can I help you explore Laravel packages today?