tomatophp/tomato-support
tomato-support adds a helpdesk and ticketing system to TomatoPHP admin panels built with Filament. Teams can manage customer tickets, replies, priorities, and statuses from one dashboard, keeping support requests organized in a single, easy-to-use place.
Architecture fit. The package's own metadata is internally inconsistent, and that is the first thing a TPM must resolve. The repository tagline describes a "ticketing and support system with API for tomato admin," while the shipped description.md describes something materially different: a foundational utility package — global helpers, base classes, traits, service-provider/config wiring — that other TomatoPHP packages depend on. Those are two different procurement decisions with two different estimates, two different risk profiles, and two different roadmap impacts. Until the actual composer.json, src/ tree, and migration set are inspected, any estimate is fiction. Treat the tagline as aspirational and the description as the more likely reality; a package with zero stars and zero dependents claiming to be a foundation is not a foundation.
If it is a ticketing module, the fit is good only inside a Filament/TomatoPHP admin. It inherits auth, policies, navigation, and CRUD scaffolding, so the marginal work is configuration and intake wiring rather than construction. If it is the helper package, the fit is neutral-to-negative: helper libraries are the cheapest thing to write in-house, so "borrowing" them buys you a dependency in exchange for maybe a day of saved typing — a bad trade at this maintainer profile.
Integration feasibility. MIT license removes legal friction. Zero dependents and zero stars remove the community safety net. Last release 2024-05-08 means the package predates the Filament 4 / Laravel 12 era; undeclared version constraints are the most likely failure point and should be verified in composer.json before any commitment. There is no published API documentation, no changelog content for v1.0.3 beyond a compare link, and no issue-response signal to inspect. Feasibility is therefore unknown, not low — the honest TPM stance is a timeboxed spike, not a plan.
Technical risk.
| Risk | Severity | Why it matters to a TPM |
|---|---|---|
| Identity ambiguity (ticketing vs. helpers) | High | Invalidates estimates and roadmap claims until resolved |
| Solo/small-maintainer bus factor | High | No vendor SLA, no security-review paper trail, no escalation path |
| Stale release cadence (2024-05) | Medium-High | Framework drift; likely fails composer require on current stacks |
| Empty v1.0.3 changelog | Medium | Unreviewable delta; forces manual diff on every bump |
| Undeclared Filament/Laravel constraints | Medium | Silent breakage on minor upgrades; CI must catch it |
| Data-model sprawl (if ticketing) | Low-Medium | Ticket tables need indexing/retention decisions you now own |
Key questions to answer before committing.
composer show, read src/, count migrations.php, laravel/framework, and filament/filament constraints?Stack fit. The package is only leveraged in a Laravel + Filament admin, ideally the TomatoPHP stack. Placing it in a bespoke Blade/Livewire admin forfeits most of the value — you would be adopting a dependency to get models and migrations you could author in an afternoon. A TPM should treat "we are a Filament shop" as a prerequisite, not a nice-to-have, and should confirm that before the spike begins.
Migration path. Two distinct paths, and the choice is a product decision:
SupportTicketService interface from day one. Product code calls your interface, never the vendor classes. This is the single highest-leverage TPM instruction on this package: it converts an irreversible platform bet into a reversible one, and it makes the eventual "swap to Zendesk/Freshdesk" decision a one-adapter change rather than a rewrite.Data migration is minimal in either case since there is no incumbent system, but if tickets are customer-facing you must decide retention, export, and deletion policy before the first ticket lands, not after. Self-hosting is the package's main strategic selling point — data residency and privacy posture — and that advantage evaporates if you have no retention policy or export path.
Compatibility. Pin to an exact version (1.0.3), never float on ^1.0. Add a CI smoke test covering ticket creation, reply, status transition, and permission enforcement so that an upstream break surfaces as a red build rather than a production incident. Verify Filament major-version compatibility explicitly — this is where the package is most likely to fail, and it is a hard blocker rather than a fixable nuisance.
Sequencing. A defensible order:
The package does not gate other roadmap work, so a failed spike costs two days and zero re-planning. That asymmetry is the argument for spiking rather than debating.
Maintenance. You are the maintenance plan. There is no vendor, no support contract, and no community large enough to surface bugs on your behalf (0 stars, 0 dependents). Budget an internal owner at roughly 10–15% of an engineer for the first quarter to absorb upgrade friction and edge cases, tapering to a few hours a month if the feature surface stays narrow. Pin the version and treat every bump as a mini-project with a manual diff, because the changelogs are not going to tell you what changed.
Support. No SLA, no escalation, no security disclosure process to point at during procurement or a customer security review. For internal IT/ops queues and known-customer correspondence this is acceptable. For anything a customer could escalate commercially, it is not — and a TPM should say so plainly in the stakeholder pitch rather than let silence imply guarantees.
Scaling. Fine for dozens to low thousands of tickets per month handled by a small team. The ceiling arrives as a general-purpose RDBMS problem, not a package problem: full-text search over ticket bodies, thread pagination, attachment storage, and per-tenant query filtering all become tuning work. Plan an exit ramp — the service interface from the integration section — before volume makes the swap expensive. If support volume is projected to grow faster than the team, the borrow path is a bridge, not a destination.
Failure modes to plan for.
Ramp-up. Low for engineers already fluent in Laravel and Filament — a day to read the code and configure, a week to ship the narrow v1 with tests. The real ramp-up cost is organizational: getting stakeholders to accept a deliberately limited support capability, and getting security/procurement comfortable with a self-hosted, small-maintainer dependency. Front-load both conversations; they are cheaper than a mid-project scope fight.
Bottom line for the roadmap. This package's value is leverage, not quality: it can delete a scoped, undifferentiated build from a sprint or two of the plan at near-zero license cost, provided you are on Filament and you keep the feature narrow. The score, the stars, and the stale release mean the leverage is real but conditional and capped — buy the speed, wrap the dependency, and keep the exit affordable.
How can I help you explore Laravel packages today?