atoolo/citygov-bundle
CityGov is Sitepark's information management system for municipal and district administration websites and intranet employee portals, bundling all relevant city information and official services into one platform. This Symfony bundle integrates CityGov features into atoolo-based PHP applications.
What this package actually is. atoolo/citygov-bundle is a Symfony bundle, not a Laravel package. It is a vendor-owned, domain-specific module from Sitepark's Atoolo/CityGov product line that enriches CityGov content objects into Solr index documents and exposes them through GraphQL (online services, teaser features, person search/suggest). Treat the "Laravel/PHP" framing as inaccurate at the framework level: the PHP is compatible (8.1–8.4), the packaging is not.
Architecture fit. The bundle assumes a fairly deep Atoolo/Symfony substrate: atoolo/search-bundle (pinned ^1.14.0 at v1.5.0), a SiteKit schema namespace (SiteKitSchema2x), resource/link-factory abstractions, document-enriching pipelines, and Solr field conventions (sp_meta_string_leikanumber, startletter, etc.). It is an enrichment/integration layer, not a standalone capability. Value only materializes if you already run CityGov content and Atoolo search.
Integration feasibility under Laravel. Low for direct install. Symfony bundles register via Kernel::registerBundles(), DI compiler passes, service tags, and bundle-level config trees — none of which Laravel's container or package discovery understands. You could theoretically consume individual classes via Composer (MIT license permits it), but the practical surface is entangled with Symfony contracts (EventDispatcher, Config, DependencyInjection) and Atoolo interfaces. The realistic options are:
Technical risk.
^1.14.0) and field-level changes (phone number field change in 1.5.0). Expect to track upstream closely.atoolo-e2e-test), conventional-commit changelogs. Engineering hygiene is better than typical for a 0-star repo.Key questions for the vendor/team.
Stack fit. Assume a Laravel-first engineering org. The clean architecture is: Laravel remains the product surface (auth, UX, citizen workflows, admin), and CityGov/Atoolo runs as a Symfony-backed content/search service behind a GraphQL boundary. The bundle lives entirely on the Symfony side. Laravel talks to it via HTTP/GraphQL only — no PHP-level coupling, no shared container, no Composer cross-contamination.
Migration path.
leikanumber, startletter, umlaut normalization) as explicit contract tests.Compatibility.
atoolo/search-bundle explicitly and gate upgrades behind a contract test suite; the 1.5.0 dependency bump is exactly the kind of change that breaks silently.Sequencing recommendation. Do not open the Laravel workstream until step 1 succeeds. This bundle's entire value is contingent on the surrounding Atoolo substrate; a failed discovery phase should kill the initiative cheaply rather than after a half-built adapter.
Maintenance. Two runtimes to own (Laravel + Symfony/Atoolo), two dependency graphs, two upgrade cadences. The bundle will pull you along its release train — six minor releases in its short life, with dependency and field changes in each. Budget explicit capacity: roughly 10–15% of one backend engineer for keeping the Symfony side current and contract tests green, plus vendor-relationship time for a TPM.
Support. This is the crux. Zero stars and zero dependents means no community safety net. Support is whatever Sitepark's commercial relationship provides. Before adoption, establish in writing: response SLAs, security-patch turnaround, notification of schema/field changes, and an exit clause — the ability to export content and search documents in a portable format. MIT licensing means you can fork; it does not mean you should be able to operate a fork.
Scaling. Two independent scaling profiles. Laravel scales conventionally. The Symfony/Atoolo side is bound by Solr index size and query load — person search/suggest and faceted municipal-content search are the hot paths. Plan for: index rebuild windows, a staging Solr with representative content volume, and query latency budgets agreed with the vendor. The GraphQL layer between them adds a hop; keep the BFF cache-aware (per-request deduplication, short-TTL caching for directory/search results) so Laravel does not amplify load onto Solr.
Failure modes.
Ramp-up. Assume 4–6 weeks before a Laravel engineer is productive against this stack: Symfony bundle conventions, Atoolo/SiteKit schema, Solr document modeling, and GraphQL contract discipline. The vendor's docs (sitepark.github.io/atoolo-docs) plus the E2E suite are the primary onboarding assets — assign one engineer as the named owner and require them to run the E2E suite locally in week one. TPM should also budget 1–2 weeks for the discovery spike to produce a go/no-go memo, because the honest expected outcome given zero adoption and single-vendor control is a conditional go — contingent on a support contract and a proven reference deployment.
How can I help you explore Laravel packages today?