nowo-tech/cookie-consent-bundle
A PHP package for adding customizable cookie consent banners and privacy preference controls to web applications. Configure consent categories, manage scripts, and support compliance with a lightweight, integration-friendly setup.
@final, with real final promised in 2.0. That is a healthy maintainer signal but also a fork-hazard notice: any Laravel port or Symfony customization should compose, not extend, so the eventual 2.0 bump is a version bump rather than a rewrite. It also confirms the project is being actively hardened, which strengthens the "vendored dependency with a plausible upgrade path" story versus an abandoned one.Consider it when:
@final markings are the maintainer telling you the extension surface is closing.Look elsewhere when:
en, which helps with localization hygiene, but there is still no geo-variant or re-prompt policy engine.)Pre-adoption verification (revised): the earlier red flag — no visible evidence that the consent-logging path was tested — is now substantially addressed. v1.19.0 adds a coverage gate that fails the build under 99% line coverage and publishes the measured PHP and TypeScript coverage in the README, plus a translation key-parity gate (en as reference) and an AI security audit item in the release checklist. That is more quality infrastructure than most zero-star packages ever get, and it materially de-risks the audit. Residual items to confirm before pinning a version: (a) that the consent-logging service specifically — not just the config/form types — is inside the covered set; (b) that the coverage number in the README corresponds to a tagged release, not to main; (c) the actual changelog and open-issue count, since the listed last-release date remains inconsistent with a project of this age and adoption. Also record the @final list in your vendoring notes so the 2.0 upgrade diff is scoped in advance.
To executives: We have a legal-blocking dependency on our EU roadmap — we cannot ship analytics, marketing pixels, or personalization features into the EU without a cookie consent mechanism. A commercial CMP runs roughly five figures annually plus a vendor security review. This package is MIT-licensed and self-hosted, so it costs us a few engineering days instead of a budget line and a procurement cycle, and no user data leaves our infrastructure. The latest release also shows a maintainer investing in the unglamorous parts — enforced test coverage, translation gates, a security checklist — which lowers the "is this abandoned?" risk that normally kills small-package adoption. The trade-off is explicit: it gets us to a defensible MVP baseline, not to enterprise-grade consent management. I recommend we adopt it as a bridge, scope the replacement trigger now (first enterprise customer, first ad-funded surface, or first regulator/DPA question we can't answer), and be clear internally that a package is not a compliance program — legal review of the banner copy, categories, and retention policy is still required.
To engineering: Small Symfony bundle, MIT, tiny surface area — a configurable modal with category toggles and optional consent persistence. One engineer can audit it in an afternoon. Two paths: (a) Symfony app — drop-in, 1–2 days to integrate, configure categories, and verify logging; (b) Laravel app — we port it: service provider, publishable config, migration for the consent table, Blade component, and a test suite covering the blocking behavior. Budget 1–2 weeks. Two things changed in v1.19.0 that affect how we build it: services, controllers, form types, Twig extension, and DI classes are now @final (real final in 2.0), so compose, don't extend — this applies to the Symfony integration and especially to the Laravel port, where subclassing upstream internals would be the obvious shortcut and the wrong one. Second, the release adds a ≥99% line-coverage gate, translation key-parity checking, and a security audit step. That is good news for review, but it is coverage of their suite, not of our port — we still write our own tests. Either way, we vendor the code and own it — 0 stars and one maintainer means no upstream guarantee. Assign an owner, pin a commit, record the @final surface, and add a smoke test that asserts non-essential scripts don't load before consent.
To legal/security: Consent state and (optionally) an immutable log of user choices are stored in our own database — no third-party processor, no additional DPA, no cross-border transfer question. The log gives us timestamped evidence of what was consented to and when, which is the artifact that matters in a subject access request or DPA inquiry. What it does not provide: vendor-level blocking guarantees, TCF interoperability, consent expiry policy, or an accessibility audit. Those remain ours to validate. On supply chain: the project is single-maintainer and unreviewed by any third party, but the current release shows enforced coverage thresholds, translation-key parity, and a release security checklist including an AI security audit — treat that as due-diligence input, not as an assurance we can cite.
How can I help you explore Laravel packages today?