tomatophp/tomato-contracts
Core interfaces and contracts for the TomatoPHP ecosystem. Defines shared abstractions that keep TomatoPHP modules consistent, decoupled, and interoperable, helping developers build Laravel applications and packages against standardized contracts.
tomato-contracts is a contracts-only package (PHP interfaces and abstract definitions) rather than a feature package. Its product value is not user-facing functionality — it is the shared vocabulary that lets TomatoPHP modules, plugins, and third-party extensions interoperate. Adopting it is a bet on the TomatoPHP ecosystem as your integration substrate, not a bet on a feature.Consider it when:
Look elsewhere when:
To executives: This is a small, low-risk architectural dependency, not a feature investment. It costs essentially nothing to evaluate and gives us a defined interface boundary between our code and the vendor's — which is the thing that makes a future migration cheaper and a future integration faster. The honest caveat is maturity: it is a v0.0.1 initial release with no published changelog, so we should treat the API as unstable and avoid building load-bearing production code on it this quarter. Recommendation: approve a time-boxed spike, not a commitment.
To engineering: Treat this as the shared type surface for the TomatoPHP modules we already use. It lets us write extensions against interfaces instead of concrete classes, which means vendor upgrades touch fewer of our files and our own packages stop carrying duplicate interface definitions. Practical guidance: pin exactly, expect breaking renames before 0.1.0, wrap any usage behind our own adapter so a swap is a one-file change, and do not let it become a transitive dependency of anything customer-facing until we see a real changelog and a stable tag. If we do not get a documented release history by the next review, that is the signal to keep our own interfaces and revisit later.
To the wider business (one line): We are adopting a stable vocabulary for our integrations, deliberately kept at arm's length until the vendor demonstrates release discipline.
How can I help you explore Laravel packages today?