peltonsolutions/filament-common
Shared utilities and reusable components for Filament admin panels, offering common helpers, form and table conveniences, and small building blocks that keep your Filament projects consistent and reduce duplicated code.
Architecture fit. peltonsolutions/filament-common occupies a narrow but legitimate layer: it is convention glue that sits above Laravel and Filament and below application code. From a TPM's seat that framing matters, because it determines what the package can and cannot be used to justify. It is not a platform investment, not a domain dependency, and not an architectural decision — it is a way to stop copy-pasting form fields, table columns, actions, filters, and navigation conventions across admin panels. The value proposition is entirely contingent on portfolio shape: the package pays for itself only when an org maintains two or more Filament admin surfaces and is already absorbing real cost from cross-panel drift. On a single panel it is overhead with a vendor namespace attached. The self-described scope — "common enhancements used throughout peltonsolutions packages" — signals that the abstraction boundary is vendor-private, which makes it a poor fit outside that family and a conditional fit even inside it.
Integration feasibility. Mechanically this is a low-friction install: Composer require, Laravel package auto-discovery, and likely a single line in a PanelProvider if it registers as a plugin. The genuine feasibility question is characterization, not installation. With zero stars, zero dependents, no documentation site, and a single visible release (v1.0.1, which only relaxes minimum-stability), there is no external integration evidence to lean on. The source is the specification. Feasibility is therefore gated on a time-boxed spike that reads composer.json for Filament/Laravel/PHP/Livewire/Tailwind constraints, the service provider for what macros, Blade components, and traits actually get registered, and the directory layout for base resources, pages, widgets, and actions. Two items must be resolved before any commitment: the license and commercial-use terms, and the release metadata — a 2026-05-24 date is anomalous relative to a normal review window and should be reconciled against actual tag history rather than trusted at face value.
Technical risk. The dominant risks are ownership risks, not code risks. (1) Bus factor of one — no contributor base, no issue history, no dependents, so support is a maintainer relationship rather than a community. (2) Undocumented surface area — "common enhancements" is unbounded; the true API footprint is unknown until read line by line. (3) Version coupling — Filament moves quickly, and a package with no compatibility statement will break on a major bump, potentially taking every panel with it. (4) Private-convention coupling — helpers may assume sibling peltonsolutions packages, naming, or config we don't have. (5) Invisible quality signal — no observable tests, CI, or static analysis, so we inherit whatever quality exists. None of these are unusual for an internal utility package; all of them are disqualifying for a foundational dependency on a business-critical surface. The score (12.2) against opportunity (56.1) captures exactly this tension: real reuse upside, weak validation.
Key questions. What does the package actually expose — macros, Blade components, traits, base resources/pages, widgets, actions, navigation, or panel plugin config? Which Filament major (v3 vs v4) and which Laravel/PHP/Livewire/Tailwind versions are supported, and is that stated or inferred? Is it licensed for commercial use, and are there contribution or support terms? Who maintains it, at what cadence, and are we expected to be a downstream consumer or a de facto co-maintainer? Does it depend on other peltonsolutions packages or private conventions we'd have to adopt to get value? Can components be adopted piecemeal, or is it all-or-nothing? What is the vulnerability-reporting posture? And why zero dependents despite public availability — genuinely pre-adoption, or only ever consumed inside the vendor org? A TPM should not authorize a pilot until the surface-area, compatibility, and coupling questions have concrete answers.
Stack fit. Adopt only where the product is already on Laravel + Filament and where the package's helpers map onto planned admin requirements. Never introduce Filament — or a second admin stack — to justify this package. Best-fit contexts are internal operations tooling, back-office panels, and shared scaffolding across a family of admin surfaces. Worst-fit contexts are customer-facing UI, anything where admin downtime carries revenue or compliance impact, and any codebase outside the peltonsolutions orbit. If the roadmap contains exactly one admin panel, the correct integration approach is to decline and inline the helpers, revisiting only when a second surface appears.
Migration path. Treat this as an accelerator evaluated behind a flag, not a replacement for existing code. Sequence: install an exact version on a disposable branch and inventory the public surface; wrap anything adopted in thin local adapters (e.g., app/Filament/Support/*) so the application depends on our interface rather than the vendor namespace; pilot on one low-risk admin screen that is not on the critical path and is not already well abstracted; compare the pilot against the hand-rolled equivalent on maintainability, not lines of code; only then decide whether to expand. Pre-approving the fork path up front is part of the plan, not an emergency contingency.
Compatibility. Pin the exact version and validate against a CI matrix covering current PHP, Laravel, Filament, Livewire, and the asset build (Tailwind/Alpine). Explicitly test asset publishing, Livewire component interactions, navigation registration, namespace collisions with existing Filament plugins, and behavior under the next Filament major if it is on the roadmap. Because there is no upstream compatibility statement, that matrix is ours to own and should be budgeted as a real cost rather than a checkbox.
Sequencing. Five gates, with TPM ownership at three. (1) Inventory — enumerate package components against roadmap needs (engineering). (2) Due diligence — license, security posture, maintainer intent, release-tag sanity (TPM gate: go/no-go). (3) Sandbox spike — install, read source, run the compatibility matrix (engineering). (4) Pilot — one non-critical admin surface behind a feature flag, wrapped in adapters (TPM gate: go/no-go, weighed on observed maintenance burden). (5) Rollout or exit — expand with version pinning, monitoring, and a documented rollback, or fork/replace (TPM gate: confirm the ongoing ownership and support model before broader rollout). The discipline that matters: "it works in the spike" is a technical signal, not a product decision. Gates 2 and 4 are where cost of ownership gets weighed against realized benefit.
Maintenance. Assume we become the de facto maintainer. Zero dependents and a single maintainer mean upgrades, bug fixes, and Filament compatibility work land on our team once adopted. Practically: pin versions, track upstream releases, run dependency and vulnerability scanning, and pre-approve a fork under an internal namespace so divergence is a planned move rather than a scramble. Budget recurring time for Filament major-version upgrades — the most likely recurring maintenance event and the one most likely to force a fork decision.
Support. Community support is effectively absent. Escalation routes through the maintainer relationship or internal expertise, and both need a named owner before adoption. Avoid the package on any workflow where admin downtime has material business impact unless a fallback exists — a feature flag that turns it off, or a local implementation that can be swapped in. A TPM should confirm that "we can support this ourselves" is a genuine commitment from the team, not an assumption voiced in a planning meeting.
Scaling. Admin panels are typically low-concurrency relative to customer-facing APIs, so the package itself is unlikely to be the scaling bottleneck. The realistic risk is hidden behavior: package-supplied table columns, filters, or widgets that introduce N+1 queries, eager-loading surprises, or heavy asset loads at real data volumes. Mitigate by adopting only the components actually needed and profiling one or two representative admin screens against production-shaped data rather than synthetic fixtures. Organizational scaling is the sharper concern — every additional panel that consumes the package increases the blast radius of an upstream break, so the version-pinning and adapter strategy should be treated as load-bearing infrastructure rather than hygiene.
Failure modes. The plausible failure modes are predictable and worth naming explicitly: an upstream Filament major bump with no compatible release; an abandoned package with a security advisory and no patch path; a helper that silently changes behavior across a minor version; a namespace or asset collision with another plugin; and maintainer unavailability at a moment of need. Each has a cheap pre-commitment — pinned versions, a tested fork, adapter isolation, an asset/namespace conflict check in CI, and a documented rollback — and each is expensive to discover late.
Ramp-up. Learning cost is low in code and high in ownership. Engineers can read a thin Filament utility package in an afternoon; what takes longer is building the internal knowledge of which conventions we have adopted, why, and how to replace them. Mitigate with a short internal decision record covering the adopted surface, the adapter boundary, the pinned version, and the fork procedure — so the next engineer inherits a decision rather than an archaeology project.
How can I help you explore Laravel packages today?