- What is tomatophp/tomato-pos-module used for?
- It is a point-of-sale module for the TomatoPHP ecosystem that adds a cashier-friendly POS screen to an existing Laravel admin panel. It covers quick product search, a cart and checkout flow, receipts, payment handling, and register/till sessions so you can ring up in-store sales without building separate POS plumbing. It is intended for applications already running the TomatoPHP admin stack rather than vanilla Laravel apps.
- How do I install tomatophp/tomato-pos-module in Laravel?
- Install it with Composer using composer require tomatophp/tomato-pos-module, which registers through Laravel package auto-discovery. Then publish the config and migrations, run php artisan migrate, and provision your first register. On v1.0.1 and above you can use the bundled register-generation Artisan command instead of hand-seeding register rows, which makes first-run setup far more reproducible.
- Does this POS module require Filament and TomatoPHP core modules?
- Yes, in practice it is designed to drop into an admin panel built on FilamentPHP plus TomatoPHP core modules, and it assumes Tomato conventions such as the user model, panel registration, and permission handling. If your application is vanilla Laravel or uses a different admin stack, expect transitive coupling that requires adaptation. In that case it is often cheaper to treat the package as a reference implementation to fork rather than a dependency to adopt.
- Which Laravel and PHP versions does this POS module support?
- The documented integration target is Laravel 10 or 11 on PHP 8.1+ with Filament 3 and the TomatoPHP admin panel already installed, backed by MySQL or PostgreSQL. The exact composer.json constraints on Laravel, PHP, Filament, and Tomato core are not spelled out in the release notes, so verify them before committing. Pin exact versions of the module, Filament, and Tomato core in your composer.json and record the tested combination in your repository.
- How does the register generation Artisan command work in v1.0.1?
- Version 1.0.1 added a register-generation Artisan command that lets you provision POS registers reproducibly from the CLI instead of inserting rows manually. The release note is intentionally terse, so the semantics are underspecified: it is unclear whether it creates register records, scaffolds resources, or both, and whether it is idempotent or tenant-scoped. Run it twice in a disposable environment to confirm duplicate prevention before using it in production.
- Does tomatophp/tomato-pos-module support multi-tenancy or multiple branches?
- Multi-tenancy is not documented, so per-branch or per-store register isolation should be treated as unproven until you review the code and schema. If you need tenant scoping, check how the register and session models resolve the current store or branch and whether queries are scoped globally. For retrofit scenarios, expect to map the module's register and session entities onto your existing store, branch, and terminal records, which is usually the bulk of the integration effort.
- How are register sessions and cash drawer reconciliation handled?
- The module models registers, tills, and related transaction flows, and includes an open/close session lifecycle you should validate end to end. Whether cash drawer reconciliation, concurrent tills, and money/tax/inventory decrements are handled transactionally is not evidenced by the release notes. Review the code for database transactions and locking, then load test concurrent checkouts on the same register before going live.
- Is this POS package production ready and actively maintained?
- It is at v1.0.x with a single-organization maintainer and its first external contributor, so bus factor and long-term maintenance are unproven. The v1.0.1 release is patch-level and additive, meaning upgrade risk from v1.0.0 is low, but package-level maturity is the larger concern. Pilot it behind a feature flag with one store or terminal and monitor upstream activity before wider rollout.
- Are the migrations reversible and is there any test coverage?
- Migration reversibility and CI/test coverage are not described in the release notes, so inspect the repository and the migration down methods directly. Run the migrations against a clone of your production schema and confirm a clean rollback before deploying. If there is no test suite, budget for your own smoke tests covering register creation, session open, sale processing, and close/reconcile.
- What are the alternatives if I am not using TomatoPHP or Filament?
- If you are on a different admin stack, adopting this module brings coupling to Tomato conventions that usually outweighs the convenience. Common alternatives are forking the package as a reference implementation, using a standalone Laravel POS package, or building a thin register, session, and receipt layer on your existing order and inventory tables. Choose this module primarily when your organization is already standardizing on TomatoPHP for back-office tooling.