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

Acme Schemas Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • Abandonment risk: high. Zero stars, zero dependents, last release June 2023, and the sole changelog entry is a dependency bump. There is no external validation of this package whatsoever.
  • Coupling risk: moderate. Pinning to gdbots/schemas v3.0.3 and the surrounding GDBots runtime means your compatibility surface is that ecosystem's release cadence, not Laravel's.
  • Runtime risk: low. These are data classes; they don't spin up threads, touch the filesystem, or phone home.
  • Governance risk: moderate. Apache-2.0 is permissive and fork-friendly, which is the saving grace — you can vendor it with confidence if you accept ownership.

Key questions to resolve before any commitment.

  1. Does the intended use case require the full GDBots stack (PBJ runtime, message bus, NCR/persistence layer), or just the schema classes? If the former, are those dependencies healthy and maintained?
  2. What are the actual composer.json constraints — PHP version, gdbots/* versions, transitive AWS SDK or Symfony baggage?
  3. Is upstream GDBots actively releasing (check gdbots/schemas, gdbots/pbj release cadence), or is the whole ecosystem quiet?
  4. Is there a published schema IDL/toolchain (gdbots/schema-tools-style generator) we'd need to operate ourselves to regenerate code after forking?
  5. Who on the team would own a forked internal copy, and what's the cost of that ownership versus writing plain DTOs plus Laravel validation?

Integration Approach

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).

  1. Vendor the repo internally into a private Composer package under our namespace; retain Apache-2.0 headers and attribution.
  2. Rename the domain — strip the Acme namespace and entity names, replace with our bounded-context naming.
  3. Stand up the generation toolchain so classes are regenerated from our schema definitions, not hand-edited. Hand-editing generated code is the failure mode that kills these efforts.
  4. Bridge into Laravel with a service provider registering serializers, message factories, and any validation adapters; expose a thin facade so application code isn't directly coupled to PBJ types.
  5. Pilot on one bounded context — ideally an outbound integration or event-emitting surface where a schema contract genuinely pays for itself.

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.

Operational Impact

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.

  • Regeneration drift: someone hand-patches a generated class; the next regeneration silently reverts it.
  • Serialization incompatibility: a schema field is added/renamed without a compatibility check, breaking consumers on the other side of an integration.
  • Silent ecosystem rot: a transitive gdbots/* dependency stops receiving PHP 8.4+ fixes, forcing an emergency vendored patch.
  • Scope creep: a small contract need expands into adopting the full messaging architecture.
  • Bus factor: one engineer learns PBJ, leaves, nobody can regenerate or debug the classes.

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."

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin