liberusoftware/jetstream-bridge-api
An API bridge for Laravel Jetstream that exposes authentication, registration, and profile endpoints for token-based clients, making it easy to add Sanctum-powered APIs alongside Jetstream's session-based UI.
What this package is. liberusoftware/jetstream-bridge-api positions itself as a presentation adapter — in DDD/hexagonal terms, the inbound adapter that translates HTTP/JSON requests into calls against an application layer, and translates results back into API responses. The "Jetstream Bridge" qualifier indicates its scope is authentication and identity: exposing Laravel Jetstream/Fortify capabilities (login, registration, email verification, password reset, two-factor challenge, profile updates, potentially team membership) as stateless API endpoints rather than Blade/Inertia session flows. It is one module in the broader Liberu modular Laravel suite.
Architecture fit — conditional, and narrow. The hexagonal framing is genuinely attractive: a clean adapter boundary is exactly what we would want if we are exposing an existing Jetstream-authenticated monolith to SPA or mobile clients without duplicating auth logic. Fit degrades sharply outside that scenario. If our target is a greenfield API, we would use Sanctum or Passport directly and gain nothing. If our target is a Jetstream app where the session cookie flow is already correct, the delta we actually need is a thin set of JSON controllers — plausibly a few hundred lines — not a third-party dependency.
Integration feasibility — low confidence. The composite score of ~19.8/100 with 0 stars and 0 dependents means there is essentially no external evidence that this package works outside its author's own applications. A "presentation adapter" is also the most contract-sensitive layer in a codebase: it depends on the application layer's DTOs, commands, and exceptions. Those contracts almost certainly live in sibling liberusoftware/module-* packages, which means the real dependency surface is larger than the single Composer requirement suggests. Until we see the composer.json require graph, feasibility is unverified.
Technical risk. Ranked:
| Risk | Severity | Note |
|---|---|---|
License is NOASSERTION |
Blocker | Legal cannot approve without an explicit OSI license and copyright holder. Non-negotiable gate. |
| Undeclared intra-suite coupling | High | Adapter may require several sibling modules and their config/service-provider bootstrapping. |
| Jetstream/Fortify major-version churn | High | Fortify's auth pipeline and 2FA challenge are session-centric; every major bump reshapes these internals. A small package tracking them alone will lag. |
| 2FA + token semantics | High | Combining Fortify's two-factor challenge with stateless API tokens is the hardest part to get right; no way to verify the approach from metadata alone. |
| Bus factor 1 | Medium | Single maintainer, no dependents, no visible security disclosure path. |
| Release metadata hygiene | Medium | "Last release 2026-10-26" is a future/incorrect timestamp; treat all cadence signals as unreliable. |
| No test/CI evidence visible | Medium | Cannot confirm Pest/PHPUnit coverage or static analysis gates. |
Key questions for the maintainer / our own spike.
composer.json require/require-dev graph — how many liberusoftware/* packages must be installed?EnsureFrontendRequestsAreStateful?Stack fit. Only a fit if we are standardizing on the Liberu modular suite (Laravel + Jetstream/Fortify + Inertia/Vue) and need a machine-client surface on top of an existing session-based app. On a modern Laravel 11/12 stack, Sanctum already handles SPA-vs-token duality; the marginal value of this package is confined to Fortify feature parity (2FA, verification, password confirmation) over JSON.
Interpret the scores correctly. Opportunity 45 alongside a composite 19.8 is not a contradiction — it says the problem space is underserved, not that this artifact solves it. That is a build signal as much as a buy signal. Our default should be: reproduce the ~5–8 endpoints we need as first-party controllers on top of Fortify's actions, and treat this package as a reference implementation to read, not a dependency to install.
Compatibility. Gate on: PHP 8.2+, Laravel version window matching ours, Jetstream 4/5, Fortify major aligned with Jetstream, and Sanctum if token issuance is delegated. Any pinned-to-minor constraint that conflicts with our lockfile kills it immediately. Verify composer why-not behavior in a scratch project before anything else.
Migration path (if adopted). Because it is a presentation adapter, it should be additive and reversible: routes registered behind a config flag and a route prefix (/api/v1/auth), no changes to existing web routes, no schema changes expected. That gives a genuine kill switch. If a migration is ever needed, the exit is "replace with in-house controllers" — cheap only if we avoid letting the package's DTOs leak into our own application layer. Mandate that our code depends on our interfaces, not theirs.
Sequencing.
php artisan route:list, diff the endpoint surface against our requirements matrix. No install into a product repo.composer update?dev-main) with a documented re-sync cadence. If built, publish internally and record this package as prior art.Maintenance. This is the dominant cost. A presentation adapter sits directly on Fortify internals, which are among the most frequently refactored parts of the Laravel auth stack. Expect breakage on every Jetstream/Fortify major. With one maintainer and zero dependents, upstream fixes arrive on the author's schedule, not ours — so adoption implies we are prepared to maintain a fork. Budget that explicitly; "we'll just pin the version" is a deferral, not a plan.
Support. No community, no issue-tracker volume, no security disclosure policy, no Stack Overflow corpus. Internal incident response depends entirely on our own engineers reading the source. Contractually, there is no vendor to escalate to. For anything on the authentication path — the highest-blast-radius surface in the product — that is a material gap.
Scaling. The adapter itself is thin and stateless; throughput is bounded by the underlying token store and database, not by the package. Two real scaling concerns: (a) if tokens are DB-backed Sanctum tokens, token verification cost per request is a query — cache-aware design matters at volume; (b) if 2FA challenge state is stored server-side, that store becomes a hot path and a session-affinity concern. Neither is disqualifying, but both need measuring rather than assuming. Rate limiting on auth endpoints must be verified as present and configurable — this is a credential-stuffing target.
Failure modes.
auth/throttle. Mitigate: automated route-inventory test asserting every auth route carries the expected middleware.composer update breaks 2FA for a subset of clients; detection depends on integration coverage we must own.Ramp-up. Low for a Laravel-fluent engineer to read (a thin adapter is legible in an afternoon). Moderate to safely operate: they must also understand Fortify's action pipeline, Jetstream's feature flags, and Sanctum's stateful/stateless duality. Realistically 2–3 days of focused onboarding before someone can triage an auth incident in this layer — and that knowledge must not sit with one person.
TPM recommendation. Do not adopt as a production dependency in its current state. The license ambiguity is a standalone blocker and the adoption evidence is nil. Run the one-week read-only spike; in parallel, size the in-house alternative. Given the likely small endpoint surface, first-party controllers over Fortify actions is the lower-risk path and converts an external maintenance liability into an internal asset we control — which, on the authentication path, is where we want the ownership.
How can I help you explore Laravel packages today?