nayzo/api-doc-bundle
Nayzo API Doc Bundle is a Laravel/PHP package that generates clear API documentation from your application's routes and annotations, helping teams publish searchable endpoint references, request and response details, and authentication notes without maintaining docs by hand.
Architecture fit — the headline finding. Despite being framed as a Laravel/PHP package, nayzo/api-doc-bundle is a Symfony bundle and an explicit derivative ("enhanced version") of nelmio/api-doc-bundle. A TPM should treat this as the primary architectural fact, not a footnote: it means the package cannot be dropped into a Laravel application, and its behavior is defined by its relationship to a specific Nelmio major/minor line. The architecture fit for a Laravel stack is nil without a port; for a Symfony estate it is conditional on an undocumented Symfony + Nelmio + PHP version matrix.
What a TPM actually gets from this package. Three things, only one of which is code:
Technical risk: high.
zircote/swagger-php attributes and a v4 architecture. A fork built on earlier annotation-driven generation is architecturally obsolete and diverges further with each upstream release.Key questions to put to the requester/maintainer:
composer.json constraints on symfony/*, nelmio/api-doc-bundle, and PHP? Is there a stated support matrix?Stack fit — do not adopt for Laravel. The TPM recommendation is to treat this package as a reference for output conventions and requirements, not as a dependency. If the underlying need is "generated, readable API docs for our APIs," Laravel has maintained native options that avoid the entire Symfony-fork risk surface:
| Need | Laravel-native option | TPM note |
|---|---|---|
| Attribute-driven OpenAPI 3 generation | Scramble | Zero-annotation introspection; active maintenance |
| Annotation authoring + Swagger UI | L5-Swagger (darkaonline/l5-swagger) |
Widely adopted; largest community surface |
| Human-readable docs + Postman/OpenAPI export | Scribe | Strong for internal/partner-facing docs |
| Contract-first governance | Hand-authored openapi.yaml + CI lint |
Best fit for externally consumed APIs |
Migration path (if a Symfony service already uses it). Migrate toward upstream, not away from it — replace the fork with current nelmio/api-doc-bundle + swagger-php attributes. The mechanical work is converting docblock annotations to PHP 8 attributes across every controller. Effort scales linearly with endpoint count, so sample 5 controllers before quoting an estimate.
Compatibility. Pin exact versions; assume no semver guarantee across Nelmio minors. Treat PHP 8 attribute support as a hard gate — an annotation-only fork is a dead end on PHP 8.4+/Symfony 7.
Sequencing (the TPM plan).
Maintenance. No vendor support, no meaningful community. If adopted, you own the fork — including forward-porting security fixes for symfony/*, nelmio/api-doc-bundle, and swagger-php. Those patches land upstream, not here. Budget named stewardship headcount or expect bitrot within two Symfony minor cycles.
Support. The escalation path is "read the source." With no issue triage evidence, there is no one to ask when generation breaks the evening before a release.
Scaling. Runtime scaling is a non-issue — generation is build-time. The real constraint is organizational: the number of endpoints and teams authoring annotations, and the consistency of that authoring. A fork with undocumented behavior does not scale across teams because the conventions are unstated.
Failure modes to monitor.
Ramp-up. Low for engineers already fluent in Nelmio/Symfony — but that knowledge is non-transferable, undocumented, and does not generalize to the Laravel stack the team actually runs. Effective ramp-up is therefore high: you are teaching a small group a bespoke tool with no external knowledge base.
Bottom line for the decision record. Low maturity (3 stars, 0 dependents), wrong ecosystem for the stated stack, and structurally positioned as a decaying fork of an upstream that has already moved on. Recommend reject for adoption; harvest it as a requirements input when selecting a Laravel-native documentation tool, and route the decision to the spike-plus-go/no-go sequence above rather than an adoption vote.
How can I help you explore Laravel packages today?