a2insights/filament-saas
Filament SaaS provides scaffolding for building SaaS admin panels with Filament, including publishable migrations, config, and views to get subscription and team management wired into your app quickly. Install via Composer, publish assets, migrate, and extend from there.
What this actually is. Despite the Composer packaging, this is a SaaS starter kit / application skeleton, not a consumable library. The README is the unedited Spatie package template — the description literally reads "This is where your description should go," usage is TODO, the published config is an empty return [];, and the credits still point at Spatie and their postcard wall. The real content is an opinionated Filament admin stack: roles/permissions (filament-shield), exception tracking, activity logging, command palette, banner, picker, phone input, rich text editor, date-range filters, translations, a settings/features abstraction, a WhatsApp widget, and an OpenAI integration implied by openai-php/laravel.
Architecture fit. Poor-to-moderate as a dependency, moderate as a reference implementation. Two structural mismatches:
composer require. Installing skeleton code into vendor/ means you own published migrations/views that will drift from upstream, while the parts you'd actually want to override (panels, resources, policies) live in a package you can't cleanly subclass. There are no documented contracts, service-provider extension points, or config knobs to justify vendor isolation.Change all namespace (v1.9.0) and Change namespace case (v1.10.0) as shipping releases. That's a class of change that invalidates published views, cached config, and any app code referencing these classes — and it happened twice inside a beta line.Integration feasibility. Mechanically trivial (three vendor:publish tags and migrate), operationally blind: no configuration surface, no tenancy documentation, no upgrade guide. The "settings and features epic" and tenant work are announced in release titles only. One release note (v1.7.0-beta, "Fix tenant things and names") links to octo-core, a different repository — a provenance and traceability gap worth noting when assessing how the code is actually maintained.
Technical risk.
v1.19.0-beta. Filament 4 was adopted in v1.15.0-beta with no compat shim for Filament 3. Beta-forever means no semver guarantee, and the version you pin is the version you support.a21ns1g4ts); no commercial support, no SLA, sparse security policy (README links the template boilerplate).kenepa/banner ^0.1.0, icetalker/filament-picker ^0.5.0, z3d0x/filament-logger ^0.8). Every Filament major forces a coordinated multi-package upgrade, and any one abandoned plugin can block a framework security patch. The release history is dominated by Dependabot bumps, which tells you where maintenance effort goes.Key questions to resolve before any commitment.
tenant_id scoping, or database-per-tenant — and where is it enforced?Verdict: evaluate as a design reference, not as a dependency. The value is in someone else's opinions about a Filament SaaS admin; the risk is inheriting an unmaintained, beta, single-maintainer skeleton with an undocumented tenancy core.
Stack fit. Only viable if the organization is already committed to Laravel + Filament v4 for admin surfaces (Livewire/Tailwind front end). It is a non-starter for API-first, Inertia/Vue, or Nova-backed teams — there is nothing to extract. Assume PHP 8.2+, Filament 4.x, Livewire 3.
Recommended migration path — fork and prune, not composer require.
Fallback path — Composer install into greenfield (only if the team insists on dependency-style upgrades): pin an exact version, commit the lockfile, publish all three tags, review migrations for tenant columns and FK ordering before running, and schema-dump immediately after. Accept that published views and migrations become app-owned and will conflict on future publishes.
Compatibility checks before anything else.
composer why-not against any existing panel if retrofitting rather than greenfield.spatie/laravel-data ^4 and symfony/intl ^7 align with the rest of the platform.Sequencing.
composer show --tree; flag every pre-1.0 package and every package with no release in the trailing twelve months. Decide keep/drop per plugin against the roadmap.Maintenance. You inherit the entire plugin graph, not just this package. Every Filament major (v3→v4 already happened mid-beta here) is a coordinated upgrade across roughly fifteen packages you don't control — budget a recurring upgrade sprint per Filament major, plus monthly Dependabot triage. Because published views and migrations become app-owned, expect recurring merge friction on any attempt to track upstream; the practical posture is a hard fork with periodic manual diff review. Namespace churn in the beta line means composer update is a deployable incident until you stop tracking upstream.
Support. No commercial support, one maintainer, all-betas, no SLA, no documented security response. Assign an explicit internal code owner for the panel and for tenancy — assume you fix your own breakage and that upstream issue turnaround is best-effort. Write a runbook during the spike; it is the only documentation that will exist.
Scaling. Panel-side scaling is conventional Laravel: queue workers for exports and notifications, Redis for sessions/cache, read replicas for reporting. Watch these specifically:
If multi-tenancy is in scope, decide single-DB tenant_id scoping versus database-per-tenant now; retrofitting after feature work is a multi-sprint project, and Filament's tenancy configuration is opinionated enough that switching later means rewriting resources.
Failure modes to instrument for.
| Failure | Symptom | Detection |
|---|---|---|
| Class rename between betas | White screen / class-not-found after composer update |
Pin + isolation suite in CI |
| Plugin conflict blocks Filament security patch | Stuck on vulnerable framework version | composer why-not in CI, monthly audit |
| Missing tenant scope or policy | Cross-tenant data exposure | Explicit isolation tests; this is the one that won't page you |
| Published migration drift | Fresh installs differ from existing environments | Migration dry-run in CI |
| Unpinned beta in CI | Untested schema change reaches production | Lockfile-diff gate |
| Unconfigured OpenAI/WhatsApp | Widget errors or silent feature loss | Boot smoke test with empty credentials |
| Plugin abandonment | You inherit the fork | Track last-release dates quarterly |
Ramp-up. Days for a developer already fluent in Filament v4; one to two weeks to first productive feature for a mid-level Laravel developer without Filament exposure. The tax is not the framework — it's that there is no usage documentation whatsoever, so every convention (settings/features abstraction, tenancy wiring, Shield policy mapping) must be reverse-engineered from source and then written down. Plan the spike to produce three artifacts that don't exist upstream: an ADR recording why this was chosen over a clean Filament panel, a tenancy/isolation test suite, and a one-page operator runbook. If those artifacts can't be produced in the spike, that is itself the answer.
How can I help you explore Laravel packages today?