patchlevel/event-sourcing-dashboard-bundle
A Symfony dashboard bundle for patchlevel/event-sourcing that adds a web UI for inspecting stored events, aggregates, and projections. Browse message metadata, trace event flows, and debug event-sourced applications faster from one place.
This is a Symfony bundle, not a Laravel package. It replaces patchlevel/event-sourcing-admin-bundle and provides a browser UI for apps built on patchlevel/event-sourcing. A Laravel developer cannot composer require it into a Laravel app and expect service-provider auto-discovery, Laravel routes, config publishing, or Blade views.
Practical entry points:
patchlevel/event-sourcing directly: stand up a small Symfony “inspector” app that points at the same event store database. Use the dashboard there, not inside Laravel.patchlevel_event_sourcing_dashboard.enabled: true plus importing the bundle routes under a prefix.Minimal Symfony sidecar setup:
composer require patchlevel/event-sourcing-dashboard-bundle
# remove patchlevel/event-sourcing-admin-bundle if present
# config/packages/patchlevel_event_sourcing_dashboard.yaml
patchlevel_event_sourcing_dashboard:
enabled: true
# config/routes.yaml
patchlevel_event_sourcing_dashboard:
resource: '@PatchlevelEventSourcingDashboardBundle/config/routes.yaml'
prefix: /_event-dashboard
Then install assets:
php bin/console assets:install public
# or use Symfony asset mapper
Configure patchlevel/event-sourcing-bundle in the sidecar to use the same event store as your Laravel app. First use case: open /_event-dashboard/store, filter by aggregate ID from a Laravel log entry, then open Inspection to view the aggregate’s events, serialized state, snapshot, and time-travel state.
infra/event-dashboard or a separate repo. Point it at the same MySQL/Postgres event store used by Laravel. Run it locally via Docker Compose alongside Laravel, and in staging behind Symfony security.#[Inspect] to event classes in your shared domain package to improve dashboard rendering with a description, icon, color, and size. This is a PHP attribute, so it can live in code also used by Laravel, but only the dashboard renders it. Keep the domain package free of Symfony dependencies.assets:install or the Symfony asset mapper; otherwise the UI will load without styling.config/patchlevel_event_sourcing_dashboard.php, no Blade views, and no Laravel route registration. Adding it to a Laravel app’s composer.json will not make the dashboard work.patchlevel_event_sourcing_dashboard, and re-import the new routes file.patchlevel_event_sourcing_dashboard.enabled is true and that the routes import exists. When disabled, no controllers, routes, or services are registered.patchlevel/event-sourcing ^3.8, patchlevel/event-sourcing-bundle ^3.7, Symfony 5.4/6.4/7/8, and Twig ^3.20. Mismatches usually surface as container compilation errors or missing services.php bin/console debug:router, debug:container, and check the patchlevel_event_sourcing_dashboard config tree. A missing route import or disabled config is the most common cause of a blank/failed dashboard.#[Inspect] is presentation-only: It customizes description, icon, color, and size in the UI; it does not change event behavior. Keep values simple and validate custom icon/color choices visually.#[Inspect] attribute over patching controllers or overriding Twig templates. Templates and controller internals are explicitly outside the BC promise.How can I help you explore Laravel packages today?