lara-zeus/inline-chart
Lara Zeus Inline Chart renders compact charts inline in Laravel and Filament interfaces—ideal for sparklines, trends, and at-a-glance metrics inside tables or text. Lightweight, simple to configure, and Blade-friendly, it keeps key numbers visible without bulky dashboards.
Architecture fit. This is a Filament column plugin, not a charting library. Its entire surface is a single chainable column class that renders a sparkline inside a table cell, resource column, or widget. There is no migration, no persistence, no schema, and no server-side rendering cost beyond the data query you supply. That makes it architecturally clean for exactly one job: presenting an already-computed series next to a value in the admin panel. It is a poor fit the moment the requirement becomes exploration — drill-down, cross-filtering, axes, tooltips, exports, or anything customer-facing or contractual. Scope discipline is the architectural decision, not a stylistic preference.
Integration feasibility. High and cheap. One Composer line, one import, fluent configuration (chartType, color, height, data accepting an array, model attribute, or closure). The real integration work is not installing the package — it is ensuring the series is a projection, not a computation. A closure like fn ($record) => Order::where(...)->pluck('total') silently converts a 25-row table into 25 extra queries per page load. That design decision belongs to the TPM, not to whoever writes the column.
Technical risk.
2.0.4...3.0.0 diff is read. API method names are the thing a major bump can silently change.Key questions to close before adoption.
src/ — do chartType, color, height, data exist as named?Stack fit. Laravel + Filament admin panel only. Confirm the PHP, Laravel, and Filament floors from composer.json rather than the README. Nothing here touches the application domain layer — the dependency is confined to the admin surface, which is why the blast radius is small.
Version matrix and migration path. Pin by Filament major, never by "latest":
| Filament | Package | Action |
|---|---|---|
| 5 | ^3.0 |
Adopt; verify the diff first |
| 3 / 4 | ^2.0.4 |
Do not install 3.x |
The product decision is not "do we adopt this package." It is "does inline charting survive the panel migration, or do we rebuild or drop it?" Release 3.0.0 says survive — so fold it into the Filament 5 migration epic as a work item, not a standalone initiative.
Compatibility is a programme problem, not a package problem. The real scheduling constraint is every other Filament plugin in the admin also declaring Filament 5 support. One holdout converts a per-package bump into a blocked programme. Sequence and staff at the programme level; a 23-star package is almost certainly not the long pole.
Sequencing.
2.0.4...3.0.0 diff, confirm method names against src/, confirm asset provenance.TrendColumn::make($name, $label, $color)). This is both a DRY win and the migration seam.Rollback. Removing the package means reimplementing TrendColumn::make() against a hand-rolled Chart.js column — a contained, known-cost task. That cheap exit is precisely why buying is correct here.
Maintenance. Pin the major and treat every release as "trust but verify": read the diff and do a manual visual pass, because a one-line changelog carries no signal. Budget a standing review point aligned to Filament's major cadence — that is the only cadence that matters for this package.
Support. Single maintainer, zero dependents, no community to lean on. Mitigation is cheap and should be done on day one: keep the wrapper, treat the package as swappable, and retain fork/vendor as the documented fallback. Do not escalate this into an analytics surface, because support burden scales with scope and the maintainer's capacity does not.
Scaling. All cost is client-side and multiplies per row and per page. Operating rules: keep series to 7–30 points, downsample anything longer, prefer precomputed/denormalised series, and ban per-row aggregation closures on wide tables. These are design constraints the TPM should set up front — retrofitting after a table gets slow is much harder to diagnose.
Failure modes and their signatures.
| Symptom | Likely cause | First action |
|---|---|---|
| Blank or unstyled chart after upgrade | Unpublished/stale asset after Filament 5 theming change | Re-publish, clear view cache, hard refresh |
| Entire table fails to render | JS exception in one chart cell | Disable chart columns one at a time |
| Empty cell for some rows | 0-point or 1-point series | Explicit empty-state decision + factory test |
| Slow table | Per-row aggregation closure (N+1) | Move to JSON column or cached accessor |
| No render in strict-CSP / air-gapped admin | Chart.js from CDN | Bundle or vendor the asset |
| Comma-separated integers in CSV/XLSX | Export includes the raw array | Exclude column or add formatted fallback |
Ramp-up. Near zero for engineers: the README plus src/ is the entire API surface, and the Blade template in resources/views/ is how you debug markup and CSS. Call it one developer-day to a working, verified column. The recurring cost is not learning — it is the per-release verification discipline. Testing is presence-only (assertTableColumnExists plus a successful render); shape is a manual QA concern.
Bottom line for the TPM. Buy, keep the scope presentational, pin ^3.0 on Filament 5, and sequence it inside the panel-migration epic. Use it as the cheapest possible experiment to learn whether operators actually consume in-context trends before funding a BI tool — if they do, invest further; if they don't, you spent days instead of a quarter to learn the same thing. The risk register entry stands, but the exit is a two-day rebuild, which is exactly the asymmetry that makes adoption rational.
How can I help you explore Laravel packages today?