gdbots/acme-schemas
gdbots/acme-schemas supplies PHP schema definitions for the Acme domain, giving Laravel applications typed classes for messages and events so data stays consistent across services. Install with Composer to share a common contract for serialization and validation.
What this package actually is. gdbots/acme-schemas is not a general-purpose Laravel library. The description is explicit: test schemas for common gdbots services. The "Acme" domain is a placeholder used across the GDBots ecosystem to exercise schema tooling, serialization, and messaging pipelines. It is a generated-code artifact (PHP message/entity classes plus schema metadata) that sits on top of gdbots/schemas v3.x and almost certainly requires the PBJ runtime (gdbots/pbj, and likely gdbots/pbjx for the message bus layer) to be useful at all. The real deliverable is the pattern — a versioned, code-generated domain contract — not the Acme entities themselves.
Architecture fit. Low-to-moderate. The package is framework-agnostic and Composer-installable, so it drops into a Laravel codebase without ceremony. But Laravel's idioms (Eloquent models, form requests, API resources, validation rules) have no overlap with PBJ's schema-first message model. Adopting this means adopting a parallel data-contract layer next to Eloquent, which is only justified if you also commit to the GDBots messaging/persistence model (event-style message envelopes, curies, immutable messages, serialization-format stability). For a typical CRUD Laravel app, this is architectural overhead with no payoff.
Integration feasibility. Mechanically trivial — composer require gdbots/acme-schemas and you have autoloadable classes. Strategically, near-zero: there are no Acme entities in any real business domain, so the classes are unusable as-is. The only viable integration is as a fork-and-rename template: copy the repo, replace the Acme namespace/domain with yours, regenerate against your own schema definitions using the GDBots schema toolchain. That is a multi-day-to-multi-week effort for someone new to PBJ, not a one-line dependency add.
Technical risk.
gdbots/schemas v3.0.3 and the surrounding GDBots runtime means your compatibility surface is that ecosystem's release cadence, not Laravel's.Key questions to resolve before any commitment.
composer.json constraints — PHP version, gdbots/* versions, transitive AWS SDK or Symfony baggage?gdbots/schemas, gdbots/pbj release cadence), or is the whole ecosystem quiet?gdbots/schema-tools-style generator) we'd need to operate ourselves to regenerate code after forking?Recommended posture: reference implementation, not production dependency. Treat this package the way you'd treat a sample project in a framework's docs — read it, learn the shape of a schema-driven contract, copy the structure into an internally owned package. Do not put gdbots/acme-schemas on a production composer.json.
Stack fit. Laravel 10/11 on PHP 8.1+ should be compatible with the gdbots/schemas v3 line, but this needs verification against the actual constraints rather than assumption. The friction points are cultural, not technical: Laravel teams expect Eloquent, factories, migrations, and validation rules; PBJ expects generated message classes, field presence semantics, and explicit serialization. A Laravel service provider can bind message factories and a serializer, but you are building a bridge, not consuming one.
Migration path (if we proceed).
Compatibility and sequencing. Sequence the work behind an explicit spike (timeboxed, ~1 week) that answers the key questions above and produces a working "hello world" message round-trip plus a serialization-compatibility test. Only after that spike should we decide between (a) fork and adopt, (b) borrow the pattern and build on plain PHP DTOs + Laravel validation, or (c) drop it. Option (b) is the likely outcome and is dramatically cheaper.
If we don't proceed. The alternative — Laravel DataTransferObject patterns, spatie/laravel-data, JSON Schema validators, or OpenAPI-generated models — delivers 80% of the "versioned contract" value with zero new ecosystem to learn and full community support.
Maintenance. Effectively 100% ours the moment we fork. Upstream will not issue security patches, PHP-version compatibility fixes, or dependency bumps on our schedule. Budget for annual PHP/Laravel upgrade work on the generated code plus whatever the generator toolchain needs.
Support. Community-of-one territory. No vendor, no Slack, no issue triage velocity. Internal documentation becomes the only knowledge base; that documentation has to be written during the pilot, not after.
Scaling. The schemas themselves are inert — serialization of small messages is cheap and horizontally scalable. All real scaling concerns live in the transport and persistence layers the GDBots stack implies (message bus, event storage). Those are the components to load-test, not this package.
Failure modes to watch.
gdbots/* dependency stops receiving PHP 8.4+ fixes, forcing an emergency vendored patch.Ramp-up. Measured in weeks, not days, for a Laravel developer unfamiliar with PBJ: schema IDL concepts, field presence/null semantics, curies and type identifiers, the generator workflow, and the message-bus conventions. Contrast with building on Laravel-native DTO tooling, which is days. That gap is the single strongest argument for the borrow-the-pattern path.
Bottom line. Score this as a learning artifact with a small, well-scoped evaluation cost, not as a dependency to onboard. Fund a one-week spike at most; expect the recommendation to be "adopt the schema-first contract idea, implement it with Laravel-native tooling, and keep this repo as the reference for what a versioned domain contract should look like."
How can I help you explore Laravel packages today?