gally/gally-standard
Gally Standard is the baseline Laravel package for Gally projects, bundling standard configuration, conventions, and core building blocks so teams can bootstrap a Gally-powered application quickly. It provides a clean, extensible foundation for custom modules and long-term maintenance.
Architecture fit. gally/gally-standard is not a Laravel package — it is the standard data-model/configuration layer of Gally, a Symfony-based headless searchandising suite built around Doctrine, API Platform, and Elasticsearch/OpenSearch. It assumes Symfony's DI container, bundle configuration, and entity mappings. Laravel's service container, Eloquent models, and HTTP kernel do not map onto those assumptions, so in-process use inside a Laravel app is a poor fit. As a separate search backend consumed over HTTP, the fit is much better: Laravel remains the application/UI layer and Gally owns indexing, querying, and merchandising rules. v2.3.1 does not change this conclusion — no HTTP contract or client abstraction changes land in this release.
Integration feasibility. Composer installation is technically possible but pulls a substantial Symfony/Doctrine/API Platform dependency tree that will coexist awkwardly with Laravel's own versions of shared PSR/Symfony contracts. The pragmatic path remains API-level integration (REST/GraphQL) with Laravel as the client — a moderate, well-understood effort. v2.3.1 reinforces this: the release is almost entirely server-side change (Symfony framework bump, OpenAPI doc corrections, mapping-cache fix), which is exactly the class of change that is invisible to an HTTP client but disruptive to an in-process embed. Every future release with this profile would force a Laravel-side dependency resolution cycle if the package were installed directly. Treat the API boundary as the primary architectural defence.
Technical risk.
Key questions. Is the OSL-3.0 external-deployment clause acceptable for our distribution model? Can gally-standard be consumed standalone, or does it require the full Gally core/runtime? Is there a full supported matrix published for PHP / Symfony 7.4 / Elasticsearch 8 vs. OpenSearch — and does v2.3.1 drop Symfony 6 support outright? What exactly do is_system and is_internal metadata flags gate, and does that affect data we would need to populate during catalog sync? Do we actually need searchandising (rules, boosts, merchandising) or just full-text search — in which case Scout + Meilisearch/OpenSearch is simpler? Is there a commercial support path from Elastic-Suite? Who owns upgrades if the upstream project stalls?
Stack fit. Treat Gally as a sidecar service: Laravel ↔ HTTP (Guzzle/Laravel HTTP client) ↔ Gally API ↔ Elasticsearch/OpenSearch. Laravel Scout is not a fit out of the box — Gally is not a Scout engine — but a thin custom Scout engine wrapping the Gally API is a reasonable abstraction if the team wants a familiar developer interface. Catalog and merchandising data should flow through Laravel jobs/queues rather than synchronous request-path calls.
Migration path.
is_system / is_internal metadata attributes must be set explicitly on our payloads or are derived server-side.Compatibility. v2.3.1 pins the reference environment to Symfony 7.4, which in practice means PHP 8.2+ and Elasticsearch 8.x / OpenSearch 2.x. Verify the published matrix before committing, and assume Symfony 6 is out of support. Pin exact versions — gally-standard v2.3.1 specifically, not a floating constraint — given both the low release cadence and the demonstrated willingness to take minor-version bumps. Confirm Laravel 10/11/12 compatibility applies only to your client-side integration, not to the package itself; the Symfony 7.4 bump has no bearing on your Laravel version.
Sequencing. Do not Composer-install gally-standard into the Laravel application. Sequence as: infrastructure → data model → sync pipeline → read path → merchandising. Keep the integration behind an anti-corruption layer so a future swap to Meilisearch/Algolia/OpenSearch is a bounded change.
Maintenance. You inherit two runtimes (Laravel + Symfony/Gally) and an Elasticsearch cluster — three upgrade surfaces with independent cadences. v2.3.1 adds a fourth implicit cadence: Gally's Symfony minor-version tracking. Because the release bundled a framework bump with two corrective patches, plan to re-test the Gally container (not the Laravel app) on each Symfony 7.x minor and to treat these as routine, scheduled work rather than emergencies. OSL-3.0 means any modifications to Gally that are externally deployed may need to be published; establish a policy for patches/forks up front — this matters more if you carry local patches across a Symfony bump. Upstream release quality now looks credible; cadence is still unproven at six stars.
Support. Community-only by default; no vendor SLA unless Elastic-Suite offers commercial support. The v2.3.1 changelog is well-formed with PR links and internal ticket IDs, which is a positive documentation signal, but there is still no large public troubleshooting corpus. Budget internal ownership — someone must become the Gally subject-matter expert.
Scaling. The Gally API tier scales horizontally and is rarely the bottleneck; the Elasticsearch cluster is. Plan shard sizing, index refresh intervals, and reindex windows against catalog size and write volume. Laravel queue workers govern sync throughput; separate the indexing queue from user-facing queues to avoid starvation during full reindexes. Nothing in v2.3.1 changes the scaling model.
Failure modes.
is_system / is_internal flags change what is exposed or editable; validate that system/internal attributes cannot be overwritten by our sync payloads.Ramp-up. Steep and unchanged. The team needs searchandising domain knowledge (attributes, families, rules, boosts) plus Elasticsearch query DSL and Symfony debugging. v2.3.1 does not reduce this — an HTTP-only integration still requires the team to understand Gally's data model well enough to populate it correctly. The addition of system vs. internal metadata adds one more concept to learn but no new tooling. Estimate 2–4 weeks for a mid-level engineer to be productive on integration, longer for merchandising configuration. Factor this into the build-vs-buy comparison against a managed search service, which for most Laravel teams will still win on time-to-value unless advanced searchandising is a core differentiator.
How can I help you explore Laravel packages today?