tomatophp/tomato-pos-module
Point-of-Sale module for TomatoPHP and Laravel that adds a cashier-friendly POS screen, quick product search, cart and checkout flow, receipts, and payment handling, letting you ring up in-store sales directly from your existing Laravel admin panel.
Architecture fit. tomatophp/tomato-pos-module is a modular Laravel package from the TomatoPHP ecosystem. It is designed to drop into a Laravel application that already uses TomatoPHP's admin stack (typically FilamentPHP plus Tomato core modules) and adds point-of-sale domain capability — registers/tills, sessions, and related transaction flows. Fit is strong only if the host application is already on that stack; for a vanilla Laravel or non-Filament admin, the package brings transitive coupling to Tomato conventions (user model assumptions, panel registration, permission handling) that will need adaptation.
Integration feasibility. Standard Composer install with Laravel package auto-discovery, followed by publishing config and migrations and running php artisan migrate. v1.0.1 adds a register-generation Artisan command (PR #1), which materially improves first-run feasibility: registers can be provisioned reproducibly via CLI rather than hand-seeded rows. This is a small but genuinely useful onboarding change — it reduces the manual step that most commonly blocks a POS pilot.
Technical risk. The release is patch-level and additive, so upgrade risk from v1.0.0 is low. The larger risks are package-level, not release-level:
Key questions.
composer.json constraints on Laravel, PHP, Filament, and Tomato core?Stack fit. Target Laravel 10/11 on PHP 8.1+, MySQL or PostgreSQL, with Filament 3 and the TomatoPHP admin panel already installed. If the organization is standardizing on TomatoPHP for back-office modules, this is a natural fit and avoids bespoke POS plumbing. If not, treat it as a reference implementation to fork rather than a dependency to adopt.
Migration path. Two viable paths:
Compatibility. Pin exact versions of the module, Filament, and Tomato core in composer.json, and record the tested combination in the repo. Because v1.0.1 is additive, upgrading from v1.0.0 should be a no-op apart from the new command; verify no service-provider or migration changes were bundled in the PR diff before merging.
Sequencing.
Maintenance. Low effort per release (v1.0.1 is a single small PR), but high monitoring effort: an early-stage package with one active maintainer means the team should be prepared to vendor/fork. Budget for periodic rebases against Filament and Tomato core upgrades.
Support. Community/GitHub-issues support only — no vendor SLA. Internal ownership must be assigned explicitly; otherwise POS breakage has no escalation path. The arrival of a first external contributor is a mildly positive signal for community health but not yet a support guarantee.
Scaling. POS workloads are write-heavy and latency-sensitive at the till. Registers and sessions are naturally low-cardinality, so row volume is not the concern; concurrency on session close, inventory decrement, and payment recording is. Validate under concurrent terminals before multi-store rollout, and confirm the module's DB transactions and locking behavior.
Failure modes.
Ramp-up. A Laravel developer familiar with Filament can be productive in roughly a day for install and basic configuration. Cashier and store-manager training is separate and domain-driven (session open/close, cash handling, reconciliation) and should not be underestimated. Allocate a half-day for the team to read the module's source before the pilot, since documentation for v1.0.x is likely thin.
How can I help you explore Laravel packages today?