modera/backend-google-analytics-config-bundle
Laravel bundle that adds Google Analytics configuration fields to the Modera backend, letting administrators manage analytics settings from the admin panel without touching code.
Architecture fit. Low for anything Laravel-shaped. Despite being filed under a Laravel/PHP package, the source is a Symfony bundle built against the Modera backend platform — *Bundle suffix, Modera namespace, DI extension, and a contribution to ModeraBackendSettingsBundle's settings page. It does not register a Laravel service provider, publish config, or autodiscover. The functional payload is small: store a Google Analytics identifier and expose it through a service the frontend can read. The value is not the GA logic, which is trivial, but the pattern of "admin-managed analytics config" — and even that is only valuable if your host app is already the Modera Symfony stack.
Integration feasibility. Effectively zero for a Laravel app. composer require pulls a dependency graph that assumes Symfony kernel bootstrapping, the Modera settings bundle, and the Modera admin UI shell (security, translations, an ExtJS-era admin frontend). A TPM should treat the realistic integration cost as bounded by how much of the Modera platform you already run, and for most teams that number is "none." For a team that is on Modera, the bundle slots in as designed and costs an afternoon.
Technical risk.
composer.json constraints before any spike; a PHP 8 upgrade is likely a fork.G-XXXXXXX measurement ID and not a defunct Universal Analytics UA-XXXXX-X property ID (UA sunset July 2023). A stored UA ID looks healthy in the admin UI while silently producing no data.gtag.js itself, it bypasses whatever consent-management or cookie-banner logic the app relies on. That is the failure mode most likely to reach legal review, and it is invisible to engineering until it does.Key questions.
php and symfony/* constraints, and does the field accept a GA4 G-* measurement ID?gtag.js? If the latter, does it participate in a consent gate?ModeraBackendSettingsBundle and the Modera admin shell mandatory, or can the settings contribution stand alone?Stack fit. Mismatch by default. Viable only when the target app is (or is becoming) a Symfony app running the Modera backend with its settings bundle already installed. In a Laravel app the correct decision is not to integrate the package and instead reproduce its behavior natively — the package is a UI affordance over a single config value.
Migration path (Laravel, recommended). Reimplement rather than integrate.
G-XXXXXXXXXX validation rule and an "enabled" toggle.config/services.php + .env (GOOGLE_ANALYTICS_ID) for single-tenant, or a settings table row if per-tenant or per-brand values are required.gtag.js once in the base layout behind a @if(config(...)) guard, wrapped by the app's consent-management hook.Compatibility. On the Symfony/Modera path, run a composer require --dry-run and a container-compile smoke test in an isolated Symfony skeleton before committing. Pin the bundle to whatever Symfony LTS the Modera platform actually targets; do not attempt to upgrade the bundle independently of the platform — the settings contribution and admin shell are version-coupled.
Sequencing.
ModeraBackendSettingsBundle already live? If no → reimplement, close the evaluation, do not spend further cycles.composer why, transitive tree, version constraints, license file). If any of it is unlicensed or hard-pinned to EOL PHP, stop.Maintenance. Treat as fork-and-own on the Symfony path. There is no upstream maintenance signal, so any compatibility or security fix lands on your team. Budget a periodic dependency-bump chore if Modera remains in the stack indefinitely. On the Laravel reimplementation path, maintenance cost is effectively zero — it is the same maintenance burden as any other admin settings field you already own.
Support. No community, no meaningful issue history, no documentation beyond a short README. Institutional knowledge will live entirely with whoever performs the integration. Document the config key, the GA4 property mapping (which property ID belongs to which environment and which brand), and the consent behavior in the team wiki — not just in the PR description.
Scaling. Negligible runtime footprint. Storage is a single config row and the read path is a cached settings lookup, so there is no horizontal-scaling concern from the config itself. The only scaling-adjacent consideration is snippet injection on high-traffic pages: render once in the layout, never per-component, and keep it behind the consent gate so it does not become a privacy or performance incident under load.
Failure modes.
Ramp-up. On the Symfony/Modera path: 3–5 days for an engineer unfamiliar with Modera's bundle conventions, settings-contribution pattern, and admin frontend — plus the platform learning curve, which is the actual cost and dwarfs the bundle. On the Laravel reimplementation path: under a day for any engineer already familiar with the app's settings surface and layout conventions. The TPM's leverage here is recognizing that the second number is smaller than the first and that the bundle's "opportunity" score reflects a genuine product gap (analytics config belongs in the admin UI), not confidence in this particular implementation.
How can I help you explore Laravel packages today?