Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Sulu Google Reviews Bundle Laravel Package

depa/sulu-google-reviews-bundle

Symfony bundle for Sulu CMS 3 that imports Google Places reviews via the Places API, stores reviews rated 4 stars or higher in a dedicated table, adds a native admin interface for moderation, and renders them on the frontend through a flexible Sulu block.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Critical framing correction: despite being catalogued as a "Laravel/PHP package," this is a Symfony bundle for Sulu CMS 3 — it will not install or function in a Laravel application. composer require will resolve, but the bundle's service providers, admin routes, and Sulu block registration all assume the Sulu/Symfony kernel. Any evaluation must therefore start with a platform question: do we run Sulu CMS? If the answer is no, this is a reference implementation to port, not a dependency to adopt.

Architecture fit

  • Clean, idiomatic Symfony bundle shape: bundle class registration, routes_admin.yaml import, Doctrine entity + migration, Sulu admin UI extension, and a Sulu content block for frontend rendering. This is the correct integration surface for Sulu and means near-zero glue code on a Sulu 3 site.
  • Opinionated data policy is baked in: a hard-coded "≥ 4 stars" filter at ingest. That is a product decision shipped as code — it must be reviewed against our brand, legal, and editorial standards before adoption, not after.
  • Scope is deliberately narrow (fetch → store → moderate → render), which is good for risk but means no scheduling UI, no multi-location/multi-account support, no review-reply publishing back to Google.

Integration feasibility

  • Low code effort on a matching stack: composer install, Flex auto-registration, route import, one migration, API key config, block mapping in templates.
  • Hard requirements are tight and non-negotiable: PHP 8.2+, Sulu ≥ 3.0, Symfony 7.0+, MySQL 8.0+. MySQL-only is a real constraint — no Postgres/MariaDB/SQLite path is documented, which matters for CI and for shops standardized on MariaDB.
  • Undocumented in the excerpt and needs verification: whether compiled admin assets ship in the release or require a Node build, whether a console command exists for the initial/backfill fetch, and how the API key is injected (env var vs. Sulu settings).

Technical risk

  • Single-vendor, zero-community signal. 0 stars, 0 dependents, one maintainer (a Berlin digital agency). No third-party production evidence, no ecosystem pressure to keep it current. Treat as "vendor code we happen to be able to read," and budget for the possibility of owning a fork.
  • Platform coupling to young software. Sulu 3 and Symfony 7 are both recent majors; a bundle pinned to >=3.0 will absorb Sulu's breaking changes. Our upgrade cadence becomes hostage to the maintainer's.
  • Google Places API dependency and Terms of Service. Google's Maps Platform terms constrain caching/storage of Places content and prescribe attribution and refresh behavior; a persistent reviews table plus indefinite display is a compliance question, not just an engineering one. Google has also been migrating customers to the Places API (New) — confirm which endpoint this bundle calls and what the migration path is.
  • Selective display of reviews. Ingesting only ≥ 4-star reviews and presenting them as "our Google reviews" carries consumer-protection and unfair-competition exposure in the DACH market (the maintainer is German; UWG-style scrutiny applies). At minimum this needs a disclosure/attribution decision and legal sign-off.
  • Personal data. Reviewer names, profile photos, and timestamps are personal data even when public; storage triggers retention, erasure-request, and processor-agreement obligations.

Key questions to resolve before commitment

  1. Are we on Sulu CMS 3, or is this being evaluated for a Laravel/Symfony app? (If Laravel: this is a porting reference, budget accordingly.)
  2. Who owns the Google Cloud project, billing account, and API key lifecycle? What is the monthly quota/cost ceiling?
  3. Has Legal reviewed the ≥4-star filter and the caching of Places content against Google's terms and local consumer law?
  4. Is there a documented console command for fetch/backfill, and is it idempotent and rate-limit aware?
  5. What happens on API failure — does the block render stale data, nothing, or error?
  6. Do we accept single-maintainer risk, or do we plan to vendor/fork on day one?
  7. Does the bundle ship compiled admin assets, and does it support our DB (MySQL 8 only)?

Integration Approach

Stack fit

  • Sulu/Symfony target: strong fit. Adopt as a normal bundle; it slots into the existing admin, routing, Doctrine migration, and templating conventions with no architectural negotiation.
  • Laravel target: incompatible as a dependency. Reimplement the pattern — HTTP client with retry/backoff against Places API, an Eloquent model + scheduled job for ingest, a Filament/Nova resource for moderation, and a Blade component for render. Estimate 3–5 engineer-days for a faithful port excluding legal review and design; the value here is the design, which is small and readable.

Migration path

  1. Install on a feature branch of a Sulu 3 site; run the migration in a scratch database first.
  2. Provision a dedicated Google Cloud project + API key; store via secrets manager, never in Sulu settings committed to git.
  3. Execute the initial fetch/backfill into a staging table; verify filter behavior and record counts against the live Google listing.
  4. Map the Sulu block into page templates; confirm escaping of reviewer-supplied text (names, review bodies) in the Twig/block template.
  5. Migrate any hand-maintained testimonials to the new source, with an editorial pass on which entries to display.
  6. Cut over behind a template flag; keep the old static block available for one release as rollback.

Compatibility

  • Pin Sulu and Symfony minor versions explicitly in composer.json and treat this bundle's >=3.0 constraint as a range to be narrowed by us, not trusted.
  • Confirm MySQL 8.0 only — if any environment is MariaDB or Postgres, this is a blocker requiring entity/migration work.
  • Verify PHP 8.2 vs 8.3/8.4 behavior in CI; the badge workflow suggests PHPUnit coverage but not a version matrix we can rely on.

Sequencing Legal/ToS review and Google Cloud provisioning must precede engineering, because both can invalidate the approach (caching restrictions, filter policy). Engineering then proceeds: staging install → backfill validation → template integration → moderation workflow and role permissions → observability (fetch job logging, quota alerts) → production cutover. Do not schedule template work before the API key and quota ceiling are agreed.

Operational Impact

Maintenance

  • Expect to own this. With one maintainer and no dependents, upstream responsiveness is a courtesy, not a guarantee. Practical posture: keep a shallow fork with our pinning and any legal-driven filter changes, and rebase quarterly.
  • Two independent upgrade clocks must be watched: Sulu/Symfony majors and Google Places API versions. Neither is under our control.
  • The ingest filter (≥4 stars) is a policy that will drift from our standards; it should be configuration, so plan a small patch if it stays hard-coded.

Support

  • No SLA, no commercial support contract in evidence. The maintaining agency could presumably be engaged, but that is a procurement conversation, not an assumed safety net.
  • Internal support burden falls on whoever owns the Sulu platform — likely one or two people. Document the fetch job, key rotation, and moderation queue in the runbook.

Scaling

  • Ingest volume is trivial (single business listing, tens to low hundreds of reviews); the table stays small. The binding constraint is Google API quota and cost, not our infrastructure.
  • Frontend rendering should read from the local table, never call Google per request — confirm the block does this, since per-request API calls would be both a cost and a latency failure mode.
  • Growth risk is organizational, not technical: multi-location or multi-brand support does not exist and would be a fork.

Failure modes

  • API key revoked, expired, or quota exhausted → stale or empty review block. Needs a graceful fallback (hide block, or render last-known-good with a freshness check).
  • Google deprecates the endpoint in use → silent ingest failure until someone notices. Alert on "no new rows in N days," not just on exceptions.
  • Sulu/Symfony upgrade breaks bundle boot → admin route or block registration failure; caught only if the bundle is in the upgrade smoke test.
  • Migration collision with existing schema on install.
  • Admin asset build failure if compiled assets don't ship.
  • XSS via reviewer-supplied content rendered unescaped in the block template.
  • Erasure/complaint request against a stored review with no delete path beyond moderation.

Ramp-up

  • A Symfony developer new to Sulu needs roughly 1–2 weeks to be productive with Sulu's admin UI extension points and block system; the bundle itself is a half-day read at this size.
  • Content editors need a short session (30–60 min) on the moderation queue and the display/attribution policy — specifically, what "moderated" means and who is accountable for hiding a review.
  • Product/legal need a standing decision on the star filter and on how the widget is labeled, since that is the highest-consequence open item and cannot be delegated to engineering.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo
stevenay/myanfont
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc