Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Reporter Laravel Package

laravel-admin-ext/reporter

Reporter is a laravel-admin extension for building SQL-based data reports inside the admin panel. Define queries, configure columns and filters, preview results, and export report data for dashboards and backend analytics without custom report pages.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is not a general-purpose Laravel library: it is a laravel-admin extension. It assumes encore/laravel-admin is installed, bootstrapped, and serving as your back-office. If your application does not already run laravel-admin, adopting this package means adopting an entire admin panel — an architectural decision far larger than "store exceptions in the DB."
  • Functionally it occupies the same slot as Laravel's exception handler pipeline plus a persistence layer: it hooks the handler, writes a row per exception (class, message, file/line, trace, request context), and exposes an admin CRUD screen for browsing/filtering. That is a legitimate, low-ceremony pattern for small teams that want exception visibility inside an existing admin surface rather than a third-party SaaS.
  • It competes with Laravel Telescope (dev-only introspection), Sentry/Flare/Bugsnag (production-grade aggregation, alerting, dedupe), and "just grep the log." Its differentiator is only convenience: exceptions visible in the same UI your ops staff already use.

Integration feasibility

  • Mechanically simple: composer require, publish config + migrations, run migrations, clear caches. No SDK, no external network egress, no credentials — a genuine advantage in air-gapped or data-residency-constrained environments.
  • Real friction is version compatibility. Last release was 2022-01-25; the package's composer.json constraints will target older Laravel/laravel-admin majors. Verify against your locked PHP and Laravel versions before committing; expect to either pin an old stack or fork and patch.
  • 59 stars and 0 dependents is a thin adoption signal. There is essentially no community corpus of "how we fixed X" to lean on.

Technical risk

  • Abandonment risk: high. No release in ~3 years in an ecosystem (laravel-admin) that is itself in maintenance/sunset territory relative to Filament/Nova. Assume you own the code.
  • Security exposure: material. Exception rows capture traces, request payloads, headers, and sometimes SQL with bound values — i.e., credentials, tokens, and PII written to a queryable table. The viewing surface inherits laravel-admin's auth, so a misconfigured admin guard or a broadly-permissioned operator becomes a data-leak path. There is no evidence of redaction, field masking, or retention controls.
  • Reliability risk: persistence happens inside the exception path. A DB outage, an oversized payload, or a missing table can cascade into a secondary failure while you are already degraded.
  • Opportunity score of 11.02 reinforces that this is not a package with upward momentum; treat any investment as a fork-and-maintain decision, not a dependency decision.

Key questions

  1. Do we already run laravel-admin, and is it strategic beyond the next 12–18 months?
  2. What is our actual requirement — alerting on incidents or browsable history? Only the second is served here.
  3. Are we prepared to fork, own, and patch this package, including a redaction layer, if we adopt it?
  4. Does storing request payloads and stack traces in our primary DB satisfy our data-handling and retention obligations?
  5. Is the exception-write path isolated from the primary DB connection (separate connection/queue) so it cannot amplify an outage?

Integration Approach

Stack fit

  • Best fit: a Laravel monolith on PHP 7.4–8.x with laravel-admin 1.8.x already in production, a small platform team, and no budget or appetite for an external error SaaS.
  • Poor fit: API-only services, multi-tenant SaaS with strict data partitioning, or any team on Filament/Nova/Livewire-based admin — the UI layer is unusable and only the persistence hook is salvageable.

Migration path

  • There is no migration path to this package from Sentry/Telescope that preserves value; it is additive history, not a replacement for alerting.
  • The realistic path is the reverse: adopt it as a stopgap, then migrate off to an APM/error SaaS by keeping the table as a historical archive and disabling the handler hook. Design the schema review accordingly so the data remains queryable post-removal.
  • If laravel-admin is not in place, do not stand up laravel-admin solely for this. Build a ~150-line custom exception recorder (handler hook + Eloquent model + a Filament/Nova resource) instead; that is cheaper than adopting an abandoned extension chain.

Compatibility

  • Pin and test: PHP version, Laravel major, laravel-admin major, and the package's own released tag. Check the migration files for column types that may break on MySQL 8 strict mode or on Postgres (long TEXT traces, JSON columns).
  • Verify the exception handler binding actually wins over your application's existing Handler::report() customizations; a silent no-op is the most likely integration failure and the hardest to notice.
  • Confirm the admin route is registered under your intended guard and prefix, not a default that collides with existing routes.

Sequencing

  1. Spike (1–2 days): install in a scratch branch, force a synthetic exception, confirm persistence and UI rendering, and record the exact version matrix that works.
  2. Schema review: add indexes on created_at, exception class, and a hash of message+file+line for grouping; decide on a retention window and a pruning job before the table grows.
  3. Redaction: wrap the recorder to strip authorization headers, cookies, passwords, and known PII keys before insert. Treat this as a blocker, not a follow-up.
  4. Isolation: route writes to a dedicated connection or a queued job so exception recording cannot take down the primary path.
  5. Access control: scope the admin route to a specific role; audit who can view it.
  6. Rollout: enable in staging, then production behind a config flag with a sampling or rate cap.

Operational Impact

Maintenance

  • Budget for fork ownership: vendoring the package into the repo (or a private VCS path) is the prudent move, given the last release date. Expect to patch for future PHP/Laravel majors yourself.
  • Ongoing cost is low in steady state (a small config, a table, a scheduled prune) but non-zero: schema drift, admin UI regressions on laravel-admin upgrades, and occasional PII cleanup requests.

Support

  • Zero vendor support; no SLA; no security advisory channel. Your on-call runbook must document that this component is internally owned.
  • Internally, support load concentrates on two questions: "why isn't my exception showing up?" (handler binding, sampling, config) and "who can see this data?" (guard configuration).

Scaling

  • The table grows with error volume, which is non-linear and spiky — a single bad deploy can insert tens of thousands of rows in minutes. Without a rate cap and retention job this becomes a top-5 table by size within months, and a full-table-scan risk on the admin listing page.
  • The admin list view is unpaginated-by-default in many laravel-admin grids; verify pagination and add server-side filters before production traffic hits it.
  • Reads are low-QPS (engineers during incidents), so scaling pressure is on writes and storage, not concurrency.

Failure modes

  • Recursive failure: DB unreachable → recorder throws → new exception → loop. Mitigate with try/catch-and-log-and-drop around the recorder plus a circuit breaker.
  • Payload overflow: multi-megabyte traces or serialized objects exceeding column limits, silently truncating or hard-failing inserts.
  • Data leak: sensitive request data queryable by an over-privileged admin user; no masking by default.
  • Silent disablement: an application-level report() override or a Laravel upgrade changes handler behavior and recording quietly stops — you discover it only when you need the data and it isn't there. Add a health check that asserts a row was written in the last 24h.
  • Stale UI: laravel-admin upgrade breaks the extension's views, leaving you with data but no interface.

Ramp-up

  • Developer ramp-up is minimal (hours) if the team already knows laravel-admin; the mental model is "one more admin menu item."
  • Platform/ops ramp-up is the real cost: someone must own redaction policy, retention, access control, and the fork. Estimate half an engineer-day per month of standing ownership, plus 2–4 days of initial hardening.
  • Decision recommendation: viable as a low-cost, internally-owned stopgap for a laravel-admin shop with no error-tracking budget; not recommended as a greenfield choice, and strongly discouraged anywhere sensitive request data is captured without adding redaction first.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin