jeffersongoncalves/filament-service-desk
A Filament plugin for laravel-service-desk that adds Admin, Agent, and User panels for full service desk management—departments, tickets, SLA policies, email channels, knowledge base, and a service catalog.
Architecture fit
This package is a presentation layer, not a platform. It is a Filament panel plugin that binds to jeffersongoncalves/laravel-service-desk, which owns the domain model (tickets, SLAs, departments, KB, service catalog). That split is architecturally sound and is the single most important fact for a TPM: adopting this package means adopting two packages with one maintainer, and the core package carries all the business logic risk while this one carries only UI risk.
The three-panel model (Admin / Agent / User) is a genuine structural match for the service-desk domain and is the package's strongest selling point. It maps cleanly onto the standard three-persona operating model and, in Filament terms, onto three panel providers with distinct access scopes, navigation, and dashboards. Resource coverage is unusually complete for a package this young: departments, categories, tags, canned responses, tickets (with comments, attachments, history, watchers), SLA policies with targets and escalation rules, business hours with slots and holidays, email channels, KB articles with versioning and feedback, and a service catalog with dynamic form fields. The User-panel service request wizard backed by form_data key-value storage is the piece that typically takes the longest to build bespoke, so its presence is real leverage.
The configuration surface is designed for product scoping rather than just wiring. Fluent feature toggles (knowledgeBase, sla, emailChannels, serviceCatalog) and per-panel widget arrays that can be set to [] let a TPM phase capability rollout without forking code. That is the correct shape for an MVP-to-GA progression.
Integration feasibility
Integration is low-ceremony and entirely conventional: composer require, optional config publish, translations publish, and three plugin registrations in panel providers. There is no service container surgery, no custom middleware, no event bus to learn. A competent Laravel team can have a working three-panel skeleton in a day.
The real feasibility question is version alignment, not effort. The compatibility matrix is aggressive:
| Version | Filament | PHP | Laravel | Tailwind |
|---|---|---|---|---|
| 1.x | ^3.0 | ^8.1 | ^10.0 | 3.x |
| 2.x | ^4.0 | ^8.2 | ^11.0 | 4.x |
| 3.x | ^5.0 | ^8.2 | ^11.28+ | 4.x |
Adopting 3.x pins you to Filament 5 / Livewire 4 — the newest major — and Laravel 11.28+. If the surrounding product is on Filament 3 or 4, you either adopt the older branch (and inherit an older feature set) or absorb a framework upgrade as a prerequisite to adopting a ticket UI. That dependency inversion is the primary feasibility constraint. Conversely, if the roadmap already includes Filament 5, this package is nearly free to trial.
Technical risk
ServiceDeskPlugin → ServiceDeskAdminPlugin rename, the plugin-ID change, and the config restructure from feature-scoped to panel-scoped keys shipped as breaking changes in 1.2.0, 2.2.0, and 3.2.0 — the same break backported across three branches. Credit for consistency; concern for upgrade cost. Every one of those requires editing panel providers and republishing config. Any team that pinned loosely will have absorbed at least one silent config-shape mismatch.allowed_extensions resolves to MIME types via Symfony MimeTypes, with a max_file_size in KB and a disk defaulting to local. There is no evidence of virus scanning, no mention of private-disk enforcement or signed URL delivery, and no tenant-scoped path isolation. In a real service desk, user-uploaded attachments are the highest-risk input in the system. Treat this as build-on-top, not configure-and-forget.Key questions
laravel-service-desk (the core) support multi-tenancy, or will tenant isolation require forking the core — which is a completely different cost profile?Stack fit
Fit is binary and easily assessed. If the product is Laravel + Filament + Livewire with role-separated panels, this package slots in with near-zero architectural friction — it is the stack, not an adapter to it. If the product is API-first, SPA-fronted, or serves a non-Filament admin, this package delivers value only for the internal back office, and the customer-facing User panel would need to be rebuilt as an API anyway.
The decisive stack questions are: (a) Filament major version, (b) whether three distinct Filament panels with distinct auth guards is acceptable, and (c) whether Tailwind 4 is already in the build pipeline. Any "no" converts a cheap integration into a framework migration.
Migration path
There is no meaningful migration from anything — this is greenfield adoption. The migration burden is internal to the package's own history, and the 3.2.0 / 2.2.0 / 1.2.0 notes give a clear preview of what upgrades cost:
ServiceDeskPlugin → ServiceDeskAdminPlugin in every panel provider.filament-service-desk → filament-service-desk-admin — this affects any menu registration, navigation ordering, or code that keys off the plugin ID.navigation.admin|agent|user) → panel-scoped (admin.*, agent.*, user.*). Any published config must be deleted and republished, and any local customization to that config must be manually re-applied.For a TPM, the operational rule is: do not customize the published config file. Override at the panel-provider level via the fluent toggles instead. Config-file customization is the thing that breaks on every upgrade.
Compatibility
Pin explicitly and narrowly ("^3.0", not "*"), and treat Filament and Livewire versions as locked alongside it — this package's compatibility band is narrower than the framework's, so composer will resolve to the intersection and can silently hold the whole app back. Add a CI job that runs composer update --dry-run against the plugin to surface upstream breakage before it lands in a feature branch.
Tailwind 4 is a build-pipeline consideration, not a runtime one, but it is a real gate for teams still on Tailwind 3: 2.x and 3.x both require Tailwind 4. Verify the asset registration path (the 2.0.0 note about registering CSS via FilamentAsset plus a PostCSS build pipeline) works in the existing Vite setup before committing to a milestone.
Sequencing
laravel-service-desk directly — schema, SLA escalation execution model, email ingestion, multi-tenancy. This package's README cannot answer those questions. Decision gate: accept, wrap, or fork.local disk to a private, tenant-scoped disk; add content scanning; tighten allowed_extensions from the permissive default set (which includes zip, rar, doc, xls) to an explicit allowlist; enforce size caps at the web server as well as the app.sla, emailChannels, and serviceCatalog until the escalation scheduler and email pipeline are validated. Keep widget arrays curated or empty until dashboards are meaningful.knowledgeBase first (low risk, high deflection value), then the service catalog wizard, then self-service ticket creation. This ordering front-loads the value that reduces inbound ticket volume before opening the inbound tap.Maintenance
Ongoing maintenance is dominated by upgrade cadence, not bug fixing. The maintainer tracks Filament majors promptly and backports breaking changes across all active branches — good discipline, but it means a break lands on your branch on the maintainer's schedule. Budget roughly one to two days per Filament major and a few hours per minor, plus config republish and re-verification of panel providers.
The bus-factor-one reality means the team must be prepared to read and patch both packages. Practically: maintain a thin internal fork (or a vendored patch set) from day one, keep a changelog of local patches, and ensure at least two engineers can navigate the plugin's src/ layout. The Laravel Boost guidelines and skill bundled with the package are a genuine mitigation here — they give AI-assisted tooling correct context on the renamed classes and panel-scoped config, which shortens the ramp for anyone unfamiliar with the codebase.
Localization is a low-cost win and a low-cost maintenance item: 19 locales shipped (en, pt_BR plus ar, az, de, es, fa, fr, hi, it, ja, nl, pl, pt, ru, tr, uk, uz, zh_CN). If localization matters, publish and vendor the translation files rather than relying on upstream updates, since translation PRs may lag feature additions.
Support
There is no commercial support, no SLA, and no vendor relationship — the "support contract" is GitHub issues. For a TPM this means the internal team is tier 2 and tier 3. Escalation paths must be internal only.
Set expectations accordingly: this package is appropriate where the service desk is a supporting capability, not a revenue-critical system of record. If the service desk is customer-facing and contractual, the support model is a serious objection that must be answered with internal ownership, not with hope.
Documentation is adequate for installation and configuration and thin for everything else — no guidance on multi-tenancy, scaling, email provider integration, or escalation semantics. Plan to write the internal runbook; upstream won't provide it.
Scaling
Scaling risk concentrates in three places, none of them the UI layer:
local disk does not scale horizontally past a single node and complicates backup/restore. Move to object storage (S3-compatible) with a private ACL and signed URL delivery before user volume grows.The good news is that the UI layer is stateless Livewire and scales horizontally with the app. No separate scaling story is required for the plugin itself.
Failure modes
filament-service-desk-admin. Code or menu configuration keyed to the old ID fails quietly. Mitigation: grep for the ID string on upgrade.zip/rar/doc/xls, plus a local disk, is an exfiltration and malware-delivery surface. This is the highest-severity failure mode and the easiest to fix early.Ramp-up
Ramp is genuinely short — the package is conventional Filament, so anyone who knows Filament panels already knows 80% of it. Realistic effort for a mid-level Laravel engineer:
The ramp risk is not the plugin — it is the core package's undocumented internals. Allocate senior engineering time for that review specifically, and treat a clean answer on SLA execution and email ingestion as the precondition for enabling those two feature toggles in production.
Overall TPM recommendation
Given 18 stars, 0 dependents, a single maintainer, and an aggressive Filament-5 requirement, the opportunity score of 24 is directionally right: this is not a turnkey service desk, and shouldn't be sold internally as one. It is a high-quality accelerator for the three-panel UI and admin surface — a genuine weeks-to-days saving on the part of the build that is tedious rather than hard.
Leverage it as: adopt for the Agent and Admin panels early if the stack is already Filament 5; use the User-panel wizard and feature toggles to phase rollout; and assume from day one that you own a fork, own attachment security, and own the runbook. Keep the SLA and email-channel toggles off until the core package's internals have been reviewed by a senior engineer — those two features are where an unexamined dependency becomes an operational incident.
How can I help you explore Laravel packages today?