jeffersongoncalves/laravel-service-desk
Laravel Service Desk adds a ready-to-use helpdesk and ticketing layer to Laravel apps. Manage support tickets with categories, priorities, statuses, assigned agents, and customer conversations using included models, migrations, and workflow tools.
ApiTicketTransport, resource-keyed-by-UUID responses, discovery endpoints). Three explicit ticket-sharing strategies — database, api, and now shared-connection — map cleanly onto the three realistic org shapes: single monolith, central service-desk service with satellite apps, and a family of apps co-located on one database. That is a credible fit for an internal service desk or a platform team offering ticketing-as-a-service to other Laravel apps. It remains a poor fit for stakeholders expecting a turnkey helpdesk: there is still no admin UX, reporting, or notification layer owned by the package.GET departments and GET departments/{id}/categories remove a real class of integration bug (hardcoded foreign keys that silently rot when the service desk reconfigures its catalog). POST tickets/{uuid}/comments via ApiTicketTransport::addComment() means satellite apps can participate in the conversation loop without reaching for the database — and the "internal notes unreachable by construction" constraint is a good default that puts the security boundary in the transport rather than in caller discipline. The UsesServiceDeskConnection trait is opt-in and no-op unless configured, which is the right blast-radius posture, but it is also the highest-risk addition: it converts a network contract into a schema contract.$connection override? What happens on partial rollout — one app migrated, another not — when both write to the same tables? How is comment author identity established server-side, and can a satellite spoof a commenter? Are uuid backfills handled for existing TicketComment rows, or does the migration assume a greenfield table?api transport as the default integration path and require a written justification before any team adopts the shared-connection mode.TicketComment.uuid must be populated during import rather than left to the package's creation path.service-desk.connection key is absent or inert in every environment where it is not intended (a misconfiguration here writes to the wrong database rather than failing loudly); confirm the trait composes correctly with any global scopes or tenant resolvers in the host app; confirm the uuid migration is reversible and safe on a populated ticket_comments table; confirm satellite apps behind the signed-request middleware have working clock sync and key management.connection value produces silent data corruption rather than an error.uuid backfill gaps breaking API resource lookups on historical comments; and behavioral divergence between the database, API, and shared-connection transports over time as features land on only one path.How can I help you explore Laravel packages today?