integrated/theme-bundle
Integrated Theme Bundle provides theme management for PHP applications, letting you organize, configure, and switch between themes with integrated asset and template support. It helps keep theme files structured and apply consistent styling across your app.
stancl/tenancy or similar. This is a sequencing decision worth recording in the decision log.Consider it when:
Look elsewhere when:
Critical caveat for the decision log: despite the Laravel framing in the brief, this ships as a Symfony bundle — no Laravel ServiceProvider, no facade, no config/theme.php. There is no composer require-and-go path for a Laravel app. The realistic options are (a) port the ~200 lines of registry/resolver logic, or (b) skip it. Verify this yourself before any engineering time is committed.
Verdict: Do not adopt as a dependency. Timebox a 1–3 day spike to read the source, confirm the Symfony-vs-Laravel reality, and sketch an in-house resolver. Treat any code reuse as an MIT fork under internal ownership.
For executives: This is a small, permissively licensed PHP package that handles theme switching when one application serves several branded sites. It is directly relevant to our multi-site and white-label plans, but it has essentially no adoption — one star, no dependent projects, no active maintenance — and, importantly, it is built for Symfony rather than Laravel. So this is concept value, not a vendor relationship. Recommendation: fund a short internal spike (roughly 1–3 days) to design our own small theme layer using this as a reference, rather than taking on a dependency we would have to maintain anyway. Cost is low; the risk we are avoiding is building a branded multi-site product on code nobody is keeping current. It also settles a sequencing call: ship simple theme-per-site now, defer full multi-tenancy.
For engineering: The domain model is the takeaway — a theme registry plus a resolver that swaps view paths and asset roots per request, with a default fallback, wired in through a kernel/request subscriber and a Twig-style loader path registration. Two things to verify before we spend time: this is a Symfony bundle, not a Laravel package (no service provider, no facade), and there is no compatibility pressure from dependents, so Laravel/PHP version support is unknown until you read the composer constraints. Do not add it to composer.json. Instead: skim the config tree, the registry/manager service, the kernel.request subscriber, and the compiler pass — that sequence tells you in an hour whether the implementation is thin enough to reimplement. If it is, we write ~150–200 lines of our own around Blade namespaces and config, and we own it outright.
Watch-outs to design against from day one: theme context bleeding between requests under long-lived workers/Octane; cached views compiled under one theme served to another; missing published assets after a swap; and silent fallback to the default theme masking a misconfiguration. Each is customer-visible in a white-label product and each needs an explicit test. Flag immediately if tenancy requirements start leaking into this — that is a different, much larger piece of work.
How can I help you explore Laravel packages today?