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

Rad Laravel Package

21torr/rad

RAD Bundle is a Symfony package for rapid application development, bundling commonly used features and 21TORR's opinionated conventions so teams can scaffold and ship applications faster.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The headline finding is a framework mismatch: 21torr/rad is a Symfony bundle (RadBundle), not a Laravel package. It is enabled through Symfony's bundle/DI system and depends on Symfony HttpKernel, Validator, Translation, and Doctrine ORM. A Laravel app cannot meaningfully composer require and enable it — Laravel's container, routing, Eloquent, and validation are parallel implementations.
  • Within a Symfony 7 / PHP 8.4+ / Doctrine ORM 3 stack, fit is reasonable for the utilities it exposes: ApiResponse + ApiResponseNormalizer, EntityModel + entity traits, ImportData, ArgumentBag, EnumValue, TranslationHelper, AbilitiesVoter, Linkable, InMemoryCache.

Integration feasibility

  • Low for a Laravel-primary roadmap; moderate for Symfony. Only the lighter helpers (EnumValue, ArgumentBag, ImportData) are even theoretically portable, and each still drags Symfony/Validator assumptions.
  • MIT license enables forking/vendoring selected classes, but that converts a dependency decision into an ownership decision — you now maintain it.

Technical risk

  • Adoption signal is weak: 2 stars, 0 dependents. It is effectively a single-agency internal toolkit published publicly. Bus factor and long-term support risk are high.
  • Version floor is aggressive: current majors require PHP 8.4+ and Symfony 7, and a minor (3.4.0) raised PHP to 8.4 — a platform/semver risk for upstream consumers.
  • Major-version churn is real: v3 removed Model, Routable, sortable and simple-search handlers, and renamed entity traits; DoctrineChangeChecker is now deprecated. The API is explicitly opinionated ("conventions and opinions as used by 21TORR").

Key questions

  • Are we a Laravel shop, a Symfony shop, or polyglot? If Laravel-only, this is a no-go.
  • Which gaps would this fill (API envelope, entity CRUD base, argument bag, import VO), and could we build equivalent ~200-line utilities in-house?
  • Can we guarantee PHP 8.4 / Symfony 7 on target apps and tolerate future minor platform bumps?
  • What internal ownership (named maintainer, fork policy, upgrade cadence) are we willing to accept for a 2-star dependency?

Integration Approach

Stack fit

  • Laravel: recommend no integration. Cost/benefit fails on framework mismatch, adoption risk, and maintenance overhead.
  • Symfony 7 + PHP 8.4 + Doctrine ORM 3: reasonable fit as a convenience layer, best adopted feature-by-feature rather than "enable everything."

Migration path

  • Laravel: no migration path. If specific behavior is desired, re-implement ImportData-style normalization or an ApiResponse-style envelope natively on Illuminate; keep the semantics, drop the dependency.
  • Symfony: composer require 21torr/rad, register RadBundle in config/bundles.php, then adopt incrementally. Exclude deprecated pieces (DoctrineChangeChecker, Model) from any new adoption plan.

Compatibility

  • Hard gates: PHP 8.4+, Symfony 7.x, Doctrine ORM 3 (tested in 3.0.2). Any app below these floors is out.
  • Component coupling: HttpFoundation/HttpKernel (ApiResponse), Validator (ArgumentBag, NotNull messages), Translation (TranslationHelper, TranslatableInterface).
  • Check for DI service-ID and normalizer collisions with existing bundles; ApiResponseNormalizer and AbilitiesVoter register services.

Sequencing

  1. Decide build-vs-buy for the small VOs (EnumValue, ArgumentBag, ImportData) — adopt only if owning the code is acceptable.
  2. If Symfony: pilot on one boundary service, starting with the lowest-coupling helpers.
  3. Add ApiResponse + ApiResponseNormalizer::createResponse() on a single API endpoint; verify envelope and explicit status-code behavior (the constructor now enforces an explicit status code).
  4. Add EntityModel + EntityFieldsTrait/ModifiableEntityFieldsTrait in one Doctrine-heavy module; validate persist/update/refresh against existing repository patterns.
  5. Adopt AbilitiesVoter last — it changes authorization semantics (CAN_ attributes) and needs a policy review.

Operational Impact

Maintenance

  • Upstream is a one-maintainer agency project with a clean changelog and semver releases but a tiny community. Expect to own the integration internally: pin versions, watch minor releases for platform bumps, and maintain a fork plan.
  • Deprecation cadence is active; track anything deprecated at adoption time for removal.

Support

  • No commercial support; docs live at 21torr-docs.pages.dev and issues go to GitHub. A TPM should name an internal owner (one senior PHP engineer) with a documented escalation path to upstream or a fork.

Scaling

  • The bundle itself is thin (response builders, VOs, traits, a voter, an in-memory cache). Scaling is dominated by the host app's Doctrine usage, not the bundle.
  • InMemoryCache is per-request/per-process — do not treat it as a shared cache layer.
  • EntityModel sits directly on the UnitOfWork; profile write-heavy paths as with any Doctrine abstraction.

Failure modes

  • Framework drift: Laravel-first teams adopting any part will spend more effort bridging than the utility is worth.
  • Platform-floor jumps in minor releases break CI unexpectedly; pin and gate upgrades behind a compatibility test matrix.
  • Major-version removals (v2→v3) and trait renames cause migration work; budget for it.
  • Opinionated conventions may conflict with team standards (API envelope shape, authorization attribute naming, entity base classes), creating friction rather than speed.
  • Upstream abandonment leaves an unmaintained dependency in the critical path; MIT/fork mitigates but does not eliminate.

Ramp-up

  • Symfony-fluent engineers: low — a day or two to read the docs and the small class surface.
  • Laravel-only engineers: effectively not applicable; ramp-up cost equals re-implementation cost.
  • Run a 1–2 day internal spike on one API endpoint to validate the ApiResponse and EntityModel assumptions before any broader commitment.
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.
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen
seampact/hooks
seampact/ir
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk