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

Universign Bundle Laravel Package

mpp/universign-bundle

MPP Universign Bundle integrates Universign electronic signature services into Symfony/PHP applications, providing configuration and service wiring to initiate and manage secure e-signature workflows with minimal setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package name and its Bundle suffix place this in Symfony's bundle system, not Laravel's service-provider model, despite the framing as a Laravel/PHP package. That distinction dominates the evaluation. A Symfony bundle registers through the Kernel and expects DependencyInjection, EventDispatcher, and likely HttpClient/PSR-18 wiring; Laravel provides none of that natively. If the target application is Symfony (5.x–7.x, PHP 8.x), the fit is straightforward and idiomatic. If the target is Laravel, we are not evaluating a package so much as a small internal library that happens to be shaped like a Symfony bundle, and we should budget for an adapter layer rather than assume composer require yields a working integration. The domain itself is well-scoped: Universign is a French qualified trust service provider under eIDAS, so the package almost certainly wraps signature-request creation, signer/workflow configuration, document upload, status retrieval, and callback handling. That is a bounded, understandable surface area — a positive.

Integration feasibility. Mechanically low-risk: Composer install, credentials via environment/config, sandbox versus production endpoint switching. The real feasibility question is architectural discipline — whether we can keep the bundle's types behind an application-owned SignatureProvider interface so the domain layer never imports vendor classes. Given zero dependents and zero stars, there is no external evidence base for its behavior under production load or across Universign API version changes, so our first integration must be a spike against the Universign sandbox, not a sprint commitment.

Technical risk. Concentrated and identifiable:

  • Bus factor. Effectively one maintainer (Mon Petit Placement, a French investment platform) publishing an internally-extracted component. Release cadence may reflect their needs, not a public roadmap.
  • Adoption signal. Zero stars and zero dependents means no community pressure to keep it current with PHP/Symfony majors, and no peer reference implementations to consult.
  • Credential and PII handling. Signature flows carry identity documents and contract content. Logging, error reporting, and queue payloads must not leak document bytes or signer PII. This is on us to audit — a thin wrapper rarely enforces it.
  • Webhook trust. Callback authenticity verification and replay protection are the highest-severity correctness risk in any e-signature integration.
  • Regulatory coupling. Universign's value is qualified signatures under eIDAS. If our actual requirement is a simple click-to-sign audit trail, we are importing French trust-service complexity and cost for no benefit.

Key questions.

  1. Is the consuming application Symfony or Laravel? If Laravel, who owns the adapter and what is the acceptance criteria for it?
  2. What signature level does legal/compliance actually require — simple, advanced, or qualified (QES)? Has that been confirmed in writing?
  3. Does the package cover webhook signature verification, idempotency keys, and evidence-package retrieval, or only the happy path?
  4. What is the support relationship with Mon Petit Placement — is there a contract, or is this a courtesy dependency?
  5. Who holds the Universign commercial agreement, and what are the per-signature costs and sandbox quotas?
  6. What is the fallback if the package is abandoned at the next Symfony major?

Integration Approach

Stack fit. Adopt as-is only in a Symfony codebase. In Laravel, treat it as a reference implementation: instantiate the underlying Universign client (or the bundle's services) from a Laravel service provider, publish config to config/, and expose a single application-facing interface. If a supported Universign SDK or the REST API directly is available, prefer it and use this bundle only to learn the request/response shapes — that removes the framework mismatch entirely.

Migration path. Three-stage: (1) standalone spike script outside the app, hitting the Universign sandbox end-to-end with a throwaway document; (2) an application-owned SignatureProvider interface with the bundle-backed implementation behind it; (3) cutover of a single non-critical signature flow before any revenue-bearing contract. Never let bundle classes appear in controllers, models, or jobs.

Compatibility. Pin the package version explicitly and commit the lockfile. Verify PHP constraint, Symfony component versions in the transitive tree, and PSR-18/PSR-17 client compatibility against what the app already ships. Run composer outdated --direct and a dependency audit at adoption; an unmaintained transitive dependency is a more likely failure than the bundle itself.

Sequencing.

  1. Compliance confirmation of required signature level (blocks everything).
  2. Universign account, sandbox credentials, and pricing terms.
  3. Interface definition and adapter implementation.
  4. Happy-path signing with a real sandbox envelope.
  5. Callback verification plus a polling reconciler for missed webhooks.
  6. Evidence archival and retention design (signed documents are legal records; storage policy is not optional).
  7. Pilot cohort, then general availability.

Operational Impact

Maintenance. Assume fork-and-own. With no community and no dependents, upgrade work on PHP or Symfony majors will land on us first. Budget a standing quarterly review of the fork against upstream and a defined trigger for promoting the fork to the maintained source of truth. Cheap to do if we plan for it; expensive if we discover it during a framework upgrade.

Support. Two distinct support channels are needed and neither is automatic: Universign for the API and trust service, and Mon Petit Placement for the bundle. Only the first is likely contractual. Make the internal ownership explicit — a named team responsible for the adapter, the credentials, and the runbook.

Scaling. Signature volume is inherently low-throughput and bursty; the package is not the bottleneck. Constraints will be Universign API rate limits, document size and storage, and webhook delivery reliability. Process signature requests asynchronously via the queue with retry and dead-letter handling, and keep document storage outside the request path.

Failure modes. The ones that will actually page someone: delayed or dropped webhooks leaving envelopes stuck mid-workflow (mitigate with a scheduled reconciler that polls status); duplicate submission creating parallel signature requests and doubled billing (mitigate with idempotency keys on creation); signer session expiry and abandonment (mitigate with reminder/expiry policy); credential expiry or rotation breaking the integration silently (mitigate with expiry alerting); Universign outage (requires a documented manual fallback, since there is no second provider with a compatible evidence chain).

Ramp-up. Engineers will absorb the bundle in a day or two — it is a wrapper, not a framework. The real ramp is domain literacy: eIDAS signature levels, evidence packages, multi-signer ordering, and French trust-service expectations. That is weeks, not days, and it sits with product and compliance as much as engineering. Given the low opportunity score and zero adoption, the defensible recommendation is: proceed only if a qualified signature requirement is confirmed and the team is on Symfony or willing to own an adapter; otherwise evaluate a mainstream e-signature provider with first-class framework support.

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.
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk