enhavo/app-bundle
Enhavo App Bundle is a subtree split of the open-source Enhavo CMS, a PHP project built on Symfony for flexible software that handles complex data structures through a clean and usable interface.
Critical framing correction: despite being filed under a Laravel/PHP package shortlist, enhavo/app-bundle is a Symfony bundle, not a Laravel package. Enhavo is a full-stack CMS built on Symfony. There is no Laravel service provider, no Eloquent, no Blade. If the evaluation was scoped as "Laravel ecosystem fit," the correct disposition is reject on stack mismatch and, if CMS capability is still a requirement, re-run the evaluation against the Symfony ecosystem.
Architecture fit. The README is explicit: "This is a subtree split of the main repository." EnhavoAppBundle is the application-level glue bundle of a monorepo — routing, base templates, configuration wiring, admin UI kernel — not a standalone reusable library. Its architecture is correct inside an Enhavo installation and largely meaningless outside one. Consuming it as an independent dependency will not yield a working CMS; you need the parent project (enhavo/enhavo), its sibling bundles, a Doctrine schema, and a front-end asset pipeline.
Integration feasibility. Low as a direct dependency, moderate-to-high as a transitive one. The realistic path is composer create-project from the upstream skeleton, where this bundle arrives pinned by the core's own composer constraints. Direct require enhavo/app-bundle should be treated as an anti-pattern: you would own version-skew reconciliation against sibling bundles that the maintainers never intended to be resolved independently. Additional feasibility gates — bundle registration in config/bundles.php, config import ordering, Doctrine migration baseline, and a Node/Webpack Encore build step — all need verification, and none are documented in this repository.
Technical risk. High, concentrated in provenance rather than code quality:
Key questions to put to the maintainers before any commitment:
Stack fit. Two viable postures:
enhavo/enhavo, not this repository. This bundle becomes an inventory line item in the SBOM, nothing more.Migration path. Recommended sequence, assuming Symfony is acceptable:
Compatibility. Treat as unverified until the spike confirms: PHP floor, Symfony major version, Doctrine ORM version, Node/Encore toolchain, and any required PHP extensions (intl, gd/imagick are common in CMS stacks). The asset pipeline is the most likely silent failure point — a PHP install can succeed while the admin UI is unusable because Encore never built.
Sequencing. Isolated spike (1–2 weeks) → content-modeling proof against real editorial requirements → build-vs-buy decision with the Symfony-runtime cost priced in → security and license review (MIT, permissive — low friction) → pilot in a single bounded content domain → broader rollout. Gate the build-vs-buy decision on the spike, not on this README.
Maintenance. Ownership sits upstream. Your team's maintenance burden is: tracking core releases, re-resolving the lockfile, and testing upgrades — plus the residual risk of waiting on upstream for fixes you cannot ship yourself. Budget for a named owner who reads the main repository's releases, because this repository will tell you nothing.
Support. No issue tracker, no discussions, no maintainer presence here. Support is either community-forum effort on the main project or a commercial arrangement. Escalation paths must be established contractually before production, not discovered during an incident. Confirm whether the vendor's support tier covers the split artifacts you actually deploy.
Scaling. This bundle is application glue, so horizontal scaling is a property of the deployment, not the package: PHP-FPM workers, Doctrine query and result caching, a shared session/cache store, and page-level caching or a reverse proxy for anonymous traffic. Admin-side scaling is not a concern at typical editorial concurrency. The genuine scaling risk is content-model complexity — heavily nested block structures can produce expensive queries and slow admin renders, and that cost grows with your schema, not your traffic.
Failure modes to instrument for:
enhavo/app-bundle to composer.json because it appears in a package index. Mitigation — an allowlist policy and a code-review check on composer.json diffs.Ramp-up. Non-trivial. Engineers need working Symfony fluency (bundles, DI container, Doctrine, Twig, Encore) before Enhavo-specific concepts — resources, blocks, templates, the admin grid — become learnable. Estimate 2–3 weeks for a competent Symfony developer to reach productive velocity on content modeling, plus additional time for whoever owns the deployment and asset pipeline. If the team is Laravel-only, add framework-transition cost on top, and treat that as the dominant line item in the business case rather than a rounding error.
Bottom line for the decision record: this package should not be adopted as a standalone dependency under any scenario. It is an internal artifact of the Enhavo monorepo, and the only defensible evaluation is of the Enhavo CMS as a whole — a separate decision with a Symfony-runtime prerequisite, a near-absent public adoption signal, and a support posture that must be contractualized before production.
How can I help you explore Laravel packages today?