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

Filament Service Desk Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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

  • Bus factor of one. 18 stars, 0 dependents, single maintainer across both the UI and the core domain package. There is no ecosystem cushion: no third-party tutorials, no Stack Overflow corpus, no community forks to lean on when something breaks.
  • Version churn with repeated breaking changes. The 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.
  • Bleeding-edge framework coupling. Requiring Filament 5 means the plugin's own bug surface overlaps with a very young upstream major. Failures will be hard to attribute between plugin, Filament, and Livewire.
  • Multi-panel routing fragility. Version 1.0.1 was a fix for duplicate URL slugs caused by folder structure under multi-panel. That is a known-fragile area and a likely regression site as panels are customized or slugs are renamed.
  • Attachment handling is configuration-only. 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.
  • Zero production signal. No dependents and minimal stars means no evidence of behavior under load, at scale, or under adversarial input. Everything in the README is a claim, not an observation.

Key questions

  1. Which Filament major is the target product on, and is a Filament 5 upgrade already on the roadmap? If no, this package is a 2.x decision with a 3.x migration debt attached.
  2. Does laravel-service-desk (the core) support multi-tenancy, or will tenant isolation require forking the core — which is a completely different cost profile?
  3. What is the inbound email ingestion path behind "email channels," and does it require an external provider, a queue worker, and a scheduled poller? That is infrastructure spend and ops surface invisible in this README.
  4. Are SLA escalation rules executed by a scheduler, a queue worker, or on-request? The answer determines whether SLA breach detection is real-time or best-effort, and whether the SLA Compliance widget is trustworthy enough to put in front of customers.
  5. Does the User panel support external/unauthenticated submitters, or does it assume authenticated users within the same app? Guest ticket submission changes the auth and abuse-prevention design.
  6. What is the actual test coverage of the core package, not this one? The UI package ships Pest infrastructure; the domain package's coverage is the thing that matters.
  7. Is the service catalog's dynamic form builder expressive enough for the target request types, or will it be replaced within two quarters?
  8. Is forking acceptable? With one maintainer and a MIT license, a private fork with an internal patch queue is the realistic long-term operating model and should be priced in from day one.

Integration Approach

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:

  • Class rename: ServiceDeskPlugin → ServiceDeskAdminPlugin in every panel provider.
  • Plugin ID change: filament-service-desk → filament-service-desk-admin — this affects any menu registration, navigation ordering, or code that keys off the plugin ID.
  • Config reshape: feature-scoped (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

  1. Spike (1 week). Install 3.x in a throwaway branch against the target Filament version. Stand up all three panels, register plugins, publish config and translations, create one ticket end-to-end. Validate that no existing panel breaks. Decision gate: proceed or defer pending Filament upgrade.
  2. Core package hardening review (before any feature work). Read 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.
  3. Security and attachment baseline. Before any external user touches the User panel: move attachments off the default 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.
  4. Phase 1 — Agent panel only. Lowest risk, highest immediate value, fully internal. Ship ticket handling, canned responses, queue claiming, agent dashboard. No external exposure.
  5. Phase 2 — Admin panel. Enable management surfaces selectively via the fluent toggles. Start with departments, categories, tags, canned responses and tickets; defer sla, emailChannels, and serviceCatalog until the escalation scheduler and email pipeline are validated. Keep widget arrays curated or empty until dashboards are meaningful.
  6. Phase 3 — User panel. Enable 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.
  7. Phase 4 — SLA and email channels. Last, because they carry the scheduler, queue, and external-provider dependencies. Confirm escalation timing under load before publishing SLA compliance numbers to stakeholders.

Operational Impact

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:

  • Attachment storage. Default 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.
  • SLA computation. SLA compliance and breach widgets are dashboard queries over ticket and SLA target tables. These are the classic N+1 and full-scan hazards. The widget arrays are configurable, which gives a cheap mitigation lever — start with fewer widgets, add them back after indexing and query review. Index on ticket status, assignee, department, created_at, and SLA due timestamps before enabling the compliance chart in front of stakeholders.
  • Three panels, one database. Admin, Agent, and User workloads hit the same tables with different query shapes. Watch the User-panel KB search and service-catalog wizard under load; they are search-heavy and rarely indexed by default.

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

  • Config-shape drift after upgrade. The most likely failure. Published config in the old feature-scoped shape silently fails to apply panel-scoped settings, producing panels with wrong navigation or missing resources. Mitigation: don't customize published config; assert on panel behavior in a smoke test.
  • Plugin-ID collision. The ID changed to filament-service-desk-admin. Code or menu configuration keyed to the old ID fails quietly. Mitigation: grep for the ID string on upgrade.
  • Duplicate URL slugs across panels. Precedent exists (1.0.1). Re-verify routes after any slug or folder customization.
  • Attachment abuse. Permissive default extension list including 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.
  • Silent SLA failure. If escalation depends on a scheduler or queue worker that stops, tickets age without breach alerts and dashboards show green. This is a trust failure, not just a technical one. Mitigation: alert on scheduler heartbeat and on "tickets past SLA with no escalation event," independent of the widget.
  • Email channel silent drop. If inbound ingestion breaks, users believe they submitted tickets that never existed. Mitigation: dead-letter visibility and a reconciliation count comparing inbound messages to created tickets.
  • Upstream abandonment. If the maintainer stops, the app keeps running but every Filament upgrade becomes a manual patch exercise. Mitigation: fork readiness, not fork avoidance.

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:

  • Day 1: three panels running, one ticket created and commented end-to-end.
  • Week 1: admin resources enabled and configured to the target taxonomy; feature toggles set per panel; widgets curated.
  • Week 2–3: attachment hardening, private disk migration, extension allowlist, scanning hook.
  • Week 3–4: read the core package's SLA and email internals; validate escalation execution and inbound pipeline; write the internal runbook.

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.

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.
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo
stevenay/myanfont
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc