zdrojowa/cms-kernel
A Laravel CMS kernel package providing core building blocks for content-driven applications, with a lightweight foundation for extending and wiring up CMS features inside your PHP projects.
This package is best framed as an architectural bet, not a feature purchase. It informs decisions in four areas:
cms-kernel is not a CMS — it is a set of abstractions (content types, rendering hooks, service-provider bootstrapping) that lets your team build a bespoke CMS inside Laravel without inheriting a full platform like Statamic, October, or a headless CMS contract. The decision it supports is "do we want a thin, owned content core, or a batteries-included platform?" — and it makes the thin-core option cheap to start.What it explicitly does not support: any decision where time-to-market for a working editorial product is the dominant constraint. Adopting this package is the beginning of a build project, not the end of one.
Adoption criteria — treat these as a checklist where "no" answers are disqualifying:
src/Contracts/ and src/Providers/ to understand the API surface. There is no meaningful published documentation, no tutorial path, and no community to fall back on.Look elsewhere when any of these are true:
If the strategic answer is "we want to own our content core," consider the middle path: use this repository as a reference architecture, not a dependency. Its value — modular kernel, content/render hooks, provider bootstrap, staying out of application code — is a design pattern you can implement in a few hundred lines of your own code, on a current Laravel version, with your own docs and test coverage. That captures the upside and discards the maintenance risk entirely.
To executives (one paragraph): We evaluated an open-source Laravel package that provides a lightweight scaffolding layer for building our own content management system. It is a sound architectural idea — it keeps content logic modular, keeps us off a large CMS vendor, and keeps our code portable under a permissive MIT license. However, the project has been unmaintained since 2019, has effectively no user base, and ships no documentation or admin interface. Recommendation: do not adopt it as a dependency. Instead, adopt its architecture as an internal pattern. This carries no licensing cost, no vendor risk, and no dependency on an abandoned codebase — we spend a small amount of engineering time to own the pattern outright. Net effect on roadmap: no delay to content features, and we avoid a support and security liability on a customer-facing surface.
To engineering (the substance): The package is a kernel, not a CMS — abstractions for content types and rendering hooks plus service-provider bootstrapping; no admin UI, no migrations of consequence, no docs. Last release 2019-10-28, one star, MIT. Practical read: it is a reference implementation of a pattern, and the pattern is good — modular CMS features as reusable Laravel components, contracts over facades, hooks rather than inheritance, providers that stay out of application code.
Concretely, I am proposing we reimplement the seam, not import the package:
Contracts for content types and renderers, and bind them in a dedicated service provider — same shape, current Laravel, our naming.App\Services\ContentGateway so the seam has exactly one place to change.$tries, $backoff, and $timeout reconciled against retry_after.scoped(), listen to events rather than polling, and register extension points (custom drivers, macros) in providers instead of forking.If someone still wants the dependency itself, the bar is: a named owner, a fork we control, a compatibility pass on our Laravel version, and a documented decision to accept that there will be no upstream fixes. Absent all four, we build the seam ourselves. Same architecture, no orphaned dependency, and the decision is reversible — which is the property that matters most for a layer this foundational.
How can I help you explore Laravel packages today?