frux/foundation6-bundle
Symfony bundle for integrating Zurb Foundation 6, offering front-end assets, Twig helpers, and form theme support to build responsive interfaces with Foundation’s grid and components.
Architecture fit — mismatch by packaging, narrow in intent. Despite the "Laravel/PHP package" filing, frux/foundation6-bundle is a Symfony2 bundle. Its actual surface area is small and unambiguous: it registers ZURB Foundation 6 CSS/JS with Symfony's Assetic-era asset pipeline and ships Twig form theme templates so Symfony Form types render Foundation markup. Laravel has no bundle registration, no DI extension contract, and no Assetic consumer; even the Twig bridge for Laravel does not load Symfony bundles. There is no architectural seam through which this plugs in. What is transferable is a handful of Twig templates and static SCSS/JS — reference material, not a dependency.
Integration feasibility — near zero as a Composer dependency. Laravel 9–12 constrain symfony/* to ^6/^7 and require PHP 8.1+, while a Symfony2-era bundle will pin symfony/framework-bundle to the ~2.x line and PHP 5.x/7.0-era constraints. Composer's solver will refuse resolution; force-installing (--ignore-platform-reqs, aliasing) risks pulling EOL Symfony components into the tree. The realistic integration is a manual harvest: read the templates, translate the ideas into Blade, and take Foundation from npm. At that point the package is not adopted — it is cannibalized.
Technical risk — high and avoidable.
Key questions a TPM must get answered before funding any work:
Where the leverage actually is: as a decision forcing function. Evaluating this package surfaces the real strategic question — how long the legacy Symfony surface, or the Foundation 6 design language, stays alive. That conversation is worth having regardless of the package's fate.
Stack fit. The Laravel-shaped equivalent is the foundation-sites npm package compiled through Vite with sass, registered in resources/css/app.css and resources/js/app.js. Presentation belongs in the asset pipeline, not in Composer. Form markup belongs in Blade components or a form macro — Laravel's FormBuilder does not consume Symfony Form types, so the Twig form theme has no consumer.
Migration path — three options, in order of preference:
foundation-sites to package.json, import the SCSS partials, initialize JS plugins. Roughly one developer-day and delivers exactly what the bundle nominally provided. Lowest total cost of ownership by a wide margin.<x-form.input>, <x-form.select>). Preserves design intent with no dependency. Small, bounded work.Compatibility. Assume none. PHP 5.x/7.0-era constraints, Symfony 2.x, Twig 1.x/2.x, and Assetic-style {% stylesheets %} references all conflict with a modern Laravel toolchain. Foundation 6's jQuery plugin lifecycle also conflicts with the no-jQuery baseline most teams run.
Sequencing.
foundation-sites via npm + Vite on a branch; verify SCSS compilation and JS plugin init (1–2 days).Total realistic effort: under two weeks for a team that wants Foundation 6. Compare against the indefinite carrying cost of an unmaintained dependency — the sequencing above is cheaper on every axis.
Maintenance. Adoption means inheritance. No upstream patches, no PHP 8.x compatibility work, no security response channel. It becomes a permanent line on the "packages nobody understands" list and breaks on every Laravel major upgrade — the worst cost profile: low value, recurring spend. composer audit and any SCA tooling will likely flag the transitive EOL Symfony components, generating findings your team must then triage and suppress.
Support. No vendor, no maintainer engagement, no community. Internal archaeology is the only escalation path. Contrast with foundation-sites on npm, which at minimum carries release notes, an active tracker, and Stack Overflow coverage — real support even if informal.
Scaling. Runtime impact is nil: static assets and templates, no services, no queries, no background work. The scaling risk is organizational. Foundation 6 idioms (XY grid, data- attribute initialization, jQuery plugins) are increasingly scarce in the hiring pool, and every new front-end hire pays a ramp-up tax on a framework their peers are not using. If the team grows or the design system is revisited, Foundation 6 graduates from "a choice" to "a migration project."
Failure modes to anticipate.
composer update hard-fails on Symfony/PHP constraint conflicts, blocking unrelated dependency upgrades until the package is removed — an outage-adjacent outcome from a purely presentational dependency.Ramp-up. The package is small enough to read in an hour; the cost is not comprehension, it is context. A Laravel developer must learn Symfony bundle conventions to understand code they cannot reuse — negative-value onboarding. The genuinely useful investment is Foundation 6 itself: roughly 1–2 weeks to become productive with the XY grid, utility classes, and plugin lifecycle, plus another week to wire it cleanly through Vite with Blade components.
Roadmap recommendation. Mark as evaluated and rejected. The underlying need — Foundation 6 styling in a Laravel application — is real and cheaply met via npm plus Blade components. This package is a Symfony2-era artifact with no Laravel surface area, no maintenance signal, and no community. Introducing it trades a two-week implementation for an open-ended liability. If the real driver is a legacy Symfony app that must stay on Foundation 6, treat that as a platform-lifecycle decision to be scoped and funded explicitly — not smuggled in through a vendor package.
How can I help you explore Laravel packages today?