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

Api Bundle Laravel Package

ruwork/api-bundle

Ruwork API Bundle is a Symfony bundle for building JSON APIs in PHP. It reduces boilerplate around request handling, validation, serialization, and error responses, helping developers create consistent, maintainable backend APIs that integrate smoothly with Symfony applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first finding is a category error worth escalating: this is a Symfony bundle, not a Laravel package. It is a Composer library whose entry point is a Bundle subclass registered in AppKernel/bundles.php, and whose behavior is delivered through kernel.event_listener / kernel.event_subscriber hooks on the HTTP kernel. It therefore has no architectural fit with a Laravel codebase — no service container binding, no event dispatcher contract, no middleware pipeline it can attach to. Even inside Symfony, "fit" is conditional: a 2018 release implies Symfony 3.4/4.x-era APIs (e.g. GetResponseEvent, pre-PSR-11 container semantics, absent return types), all of which were removed or hardened in Symfony 5+. Treat modern-version compatibility as unproven until verified.

Integration feasibility. Low. Mitigating factors: MIT license (legally simple to fork or vendor), small presumed code surface, and no transitive dependency sprawl if it turns out to be self-contained. Aggravating factors dominate: archived repository, zero stars, zero dependents (no production validation signal anywhere), no release since 2018-08-21, and — likely — sibling ruwork/* packages that are themselves archived, meaning a fork is a fork of a constellation rather than a package. The realistic path is "read the source and reimplement," not "install and use."

Technical risk. High, concentrated in four places: (1) Abandonment — no security patching, ever; (2) Attack surface — the HTTP boundary is exactly where you least want unmaintained code: request body parsing, deserialization, and exception-to-response mapping (stack-trace leakage in JSON error envelopes is the classic failure); (3) Silent incompatibility — framework upgrades break removed event classes at runtime, not at install time; (4) Supply chain — a dormant Packagist vendor account is a low-probability but non-zero takeover/phishing vector. The "opportunity" score of 5.87 should be read as a model artifact (an underserved niche in the scoring taxonomy), not market signal — it is contradicted by every liveness and adoption metric in the same record.

Key questions. Is there a concrete internal requirement driving this evaluation, or is this scoring-pipeline output only? What is the actual target framework — Laravel or Symfony? Which PHP and Symfony versions are in the supported matrix, and what does composer.json constrain? Which exact behavior is wanted — serializer integration, request-body conversion, or exception-to-JSON? Does its error handling expose exception messages or traces? And critically: does a native, maintained equivalent already cover ~90% of that behavior (Symfony 6.3+ #[MapRequestPayload] plus a kernel.exception listener; or, on Laravel, Form Requests plus API Resources plus the exception handler)? If yes, the build cost is a day, not a dependency.

Integration Approach

Stack fit. Declare a no-go for Laravel flat out — there is no adapter worth writing for a package of this size. For a Symfony codebase, permit only a source-port, never a runtime dependency.

Migration path. Two viable options, and the default is the first. (a) Do not adopt — correct given archive status and zero dependents. (b) Read-and-reimplement — enumerate the listeners/subscribers, lift the semantics into first-party code with typed signatures, tests, and coverage, then ensure the original never appears in composer.json. Shipping an archived bundle into a new service is not on the table; at most, vendor it into a legacy app that is already frozen.

Compatibility. Do not trust the README. Run composer require ruwork/api-bundle --dry-run inside an isolated skeleton matching the target PHP/Framework versions, then composer why/composer depends to expose the hidden ruwork/* graph. Assume PHP 8.1+ and Symfony 5.4+/6+/7 do not work without patching until proven otherwise.

Sequencing (only if pursued): 1) capability audit — every class, listener priority, config key, and default; 2) map each capability to a native equivalent in the target stack; 3) prototype the replacement behind a branch with realistic request/response fixtures; 4) run contract tests against both — status codes, Content-Type, error-envelope shape, validation-failure payloads — and diff; 5) cut over and delete the dependency; 6) record the outcome in an ADR so this evaluation is not repeated when the same scoring artifact resurfaces next quarter.

Operational Impact

Maintenance. Zero upstream. Every future PHP/Symfony upgrade becomes our cost, and that cost is invisible until upgrade day — which is precisely how a "free" MIT dependency becomes an unbudgeted liability. A fork adds ownership of a codebase nobody on the team wrote and nobody has documented.

Support. No issue triage, no security advisories, no CVE disclosure path, no vendor to escalate to. Incidents become internal firefights with no upstream recourse, and the package cannot be placed behind any SLA.

Scaling. Runtime cost is negligible — per-request listeners are noise next to application work. The real constraint is organizational: knowledge concentration in whichever engineer read the source. That is the bus factor, and it does not scale with headcount.

Failure modes. Silent breakage on framework upgrade surfacing as 500s on API routes; error-envelope drift breaking downstream client contracts; deserialization of untrusted input without modern hardening; and — worst case — a disclosed vulnerability with no patch path, forcing an emergency fork mid-incident under time pressure.

Ramp-up. Low code volume, high context cost. No docs, no community, no Stack Overflow surface — nothing about this package is searchable. Onboarding a second engineer means reverse-engineering intent from source. Budget roughly half a day for a capability audit and a replacement prototype, more if the configuration tree is non-trivial.

Recommendation. Reject as a dependency. If a specific behavior is genuinely wanted, budget one to three days to reimplement it natively with tests, and close the loop on the metadata itself — a scoring pipeline that surfaces a six-year-old, archived, zero-dependent Symfony bundle for a Laravel question is missing a liveness-and-ecosystem gate that will keep producing this same class of candidate.

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.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib