ongr/content-bundle
ONGR ContentBundle is a Symfony bundle for managing structured content and reusable content blocks within ONGR’s Elasticsearch-oriented stack. It helps organize content types, pages, and templates for CMS-style sites, but is a small package that may need extra setup and documentation review.
Architecture fit — mismatch at the framework level. Despite being filed under "Laravel/PHP," ongr/content-bundle is a Symfony bundle from the ONGR Elasticsearch ecosystem. It has no ServiceProvider, no publishable config, no facades, and no Laravel-style package discovery. It expects Symfony's DI container, ongr/elasticsearch-bundle, and the legacy elasticsearch-php client. Dropping it into a Laravel application is not an integration task; it is a porting project.
Conceptual model. The bundle describes a document-oriented e-commerce catalog — Category, Product, and Content documents indexed into Elasticsearch — rather than Eloquent models or Doctrine ORM entities. That model is the only genuinely reusable asset here, and it is expressible in a few hundred lines of mapping and query code.
Integration feasibility: low. Hard constraints include Symfony 2.x-era bundle conventions (annotation/XML mapping, DI extension classes), PHP 5.x language levels, and Elasticsearch 1.x/2.x semantics — notably mapping types, which were removed in ES 7 and are unavailable in ES 8. Every class would need to be touched before it would autoload, let alone run, on PHP 8.1+.
Technical risk: high.
ongr-archive), last release 2015-05-19, 2 stars, 0 dependents — no upstream, no triage, no security response.Key questions to answer before any commitment:
Stack fit. None for Laravel; poor for modern Symfony. Treat this repository as a reference architecture, not a dependency. The value is in reading how the original authors modeled catalog relationships and index structure — not in shipping their code.
Migration path — two options, one recommended.
Option A (recommended): reimplement the model. Extract the document schema — field definitions, parent/child relationships between category and product, content attachment points — and rebuild against the current elasticsearch-php client or Laravel Scout with a custom driver. Expect roughly 2–4 engineer-weeks, including tests and reindex tooling. Output is code we own and can maintain.
Option B (not recommended): fork and modernize. Replace Symfony 2 DI with a Laravel service provider, migrate annotations to attributes or array mappings, upgrade the Elasticsearch client, and rewrite the query DSL for ES 7/8 semantics. Realistic estimate 6–10 weeks with wide variance, against a 2-star abandoned base with no test suite worth inheriting. The fork becomes a permanent maintenance liability with no upstream to rebase onto.
Compatibility. PHP 5.4–5.6-era constraints, ancient PHPUnit and Symfony pins, and ES 1.x/2.x query and mapping APIs. None of this is forward-compatible; the code will not run unmodified against any currently supported runtime.
Sequencing.
Maintenance. Effectively zero upstream. If adopted, we inherit 100% of maintenance from day one, including dependency security patching for a tree that cannot be patched. Budget 10–20% of one engineer's time ongoing for a serious deployment — a cost that never decreases and has no community to share it with.
Support. No issue triage, no security advisories, no documentation beyond a 2015-era README. Internal onboarding depends entirely on tribal knowledge from whoever performs the initial port. Bus factor is one.
Scaling. Scaling characteristics are inherited from Elasticsearch, not from this bundle — the bundle is thin mapping and configuration. The real constraints are legacy mapping types, which limit index strategy, zero-downtime reindexing, and multi-tenant partitioning. Those constraints surface at scale, not in a prototype, which makes them expensive to discover late.
Failure modes.
Ramp-up. Two to three weeks to absorb the domain concepts for an engineer unfamiliar with document-oriented catalog modeling; considerably longer to unlearn the 2015 patterns before writing maintainable replacements. The conceptual learning is worth paying for; the codebase familiarity is not.
Recommendation. Do not adopt as a dependency. Mine it for schema and domain insight, reimplement against a supported stack, and record the decision so the same evaluation is not repeated when the next search hit surfaces this repository.
How can I help you explore Laravel packages today?