vanilo/master-product
Vanilo Master Product adds master/variant product support to Laravel e-commerce catalogs, letting you group product variants under a single master product with shared attributes, pricing, and media.
Architecture fit. vanilo/master-product is not a standalone library; it is a module inside the Vanilo e-commerce suite for Laravel, built on the Concorde module system (contracts + service providers + registerable morph maps). It implements the "configurable/master product" pattern: a parent record owns shared merchandising data (name, description, media, properties) while child products represent the purchasable SKUs that inherit and selectively override those values. If our storefront requires size/color/configurable variants, this is exactly the domain model we would otherwise design from scratch. The catch is that it only makes sense on top of vanilo/product, vanilo/channel, vanilo/pricing, and the media/property modules — it is an additive layer, not an independent capability. Architecture fit is therefore high only if we are willing to adopt Vanilo's product data model wholesale; it is near-zero as a bolt-on to a bespoke catalog schema.
Integration feasibility. Composer-installable, MIT-licensed, no proprietary gating. The mechanics are straightforward: require the package, register the Concorde module, run migrations (expect a master-product table plus a foreign key from the variants/products table), and swap the bound product contract for Vanilo's. The real effort is not installation — it is retrofitting our existing catalog into Vanilo's product/channel/pricing abstractions, and then expressing variant inheritance on top. For a greenfield Laravel build this is a few days of work; for an existing production catalog it is a data-migration and model-reconciliation project.
Technical risk.
vanilo/framework, not this repo. But the same fact means this repo generates little independent issue traffic, so defect discovery will surface in the parent project.Key questions.
vanilo/framework?Stack fit. Native fit for a Laravel monolith or modular monolith already comfortable with service providers and contract binding. The package assumes Eloquent, Laravel migrations, and the Concorde module registry; there is no framework-agnostic path. Adjacent concerns — cart, checkout, orders, admin — are separate Vanilo modules, so a full commerce build implies adopting the suite rather than this package alone.
Migration path. Treat this as a catalog re-platform, not a package install:
vanilo/framework + vanilo/product + vanilo/channel and confirm the base product lifecycle works against a staging catalog.master-product, run migrations, and model a representative product family (e.g., a 2-axis variant matrix) end to end.If the catalog is small or the variant requirement is shallow (single-axis, price-identical), the honest recommendation is to model variants directly on the existing product table and skip Vanilo entirely — the module's value scales with variant complexity.
Compatibility. Verify the Composer constraint matrix up front (vanilo/master-product ↔ vanilo/product ↔ vanilo/framework ↔ laravel/framework ↔ PHP). Because these are lockstep-versioned, pin the whole Vanilo set to a single release train and upgrade them together; partial upgrades will not resolve. Also confirm compatibility with any existing packages that decorate the Product model — morph maps and contract overrides are the usual collision point.
Sequencing. Foundation modules → master-product → admin/UI tooling → storefront variant resolution → cart/checkout integration. Do not parallelize catalog migration with checkout work; the variant identity contract (which SKU enters the cart) must be settled before checkout is touched.
Maintenance. Low day-to-day surface if we stay on the paved path — the module is thin and the codebase is small enough to audit fully. The recurring cost is upgrade coordination: we inherit Vanilo's release cadence and cannot upgrade Laravel independently of it. Budget for a paired-upgrade ritual each Laravel minor. Vendor-maintenance risk is real but mitigated by MIT licensing and the small, readable codebase — a fork-and-own exit is credible.
Support. No commercial SLA implied by the package. Support flows through the Vanilo GitHub org and documentation site, with response times typical of a small open-source project. For a revenue-bearing storefront, that means we own tier-1 and tier-2 support internally and should designate one engineer as the Vanilo owner with read access to the upstream source. Contractual support, if required, must be sourced separately from the vendor.
Scaling. Two hotspots to watch:
Read paths dominate; write paths are admin-only and will not be the constraint.
Failure modes.
Ramp-up. Expect roughly one to two weeks for a mid-level Laravel engineer to become productive: the Eloquent and service-provider patterns are familiar, but Concorde's module registry, contract-first model binding, and morph maps are project-specific knowledge. Add focused onboarding on the inheritance resolver — it is the piece most likely to be misunderstood and the piece with the worst failure characteristics. Document the variant identity rule (what constitutes a purchasable SKU) as an architectural decision record; it is the single concept every downstream team will otherwise re-litigate.
How can I help you explore Laravel packages today?