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

Matpe Bundle Laravel Package

tiloweb/matpe-bundle

A composer-installable PHP bundle from tiloweb that wraps MATPE services for quick integration. Offers simple configuration, service wiring, and a clean API so you can add its functionality without boilerplate. Lightweight and easy to drop into existing Laravel or Symfony projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Framing correction (architecture fit). The brief describes this as a "Laravel/PHP package," but tiloweb/matpe-bundle is a Symfony bundle. Its value is delivered through Symfony's kernel: a Bundle class, a DI extension loading services.yaml, autowiring, tagged services, and configuration via the Config component. None of that bootstrap runs under Laravel's service container. If our target application is Laravel (or any non-Symfony framework), the package is not drop-in — we would be consuming the underlying service class directly and hand-wiring its dependencies, which means we inherit whatever Symfony contracts it type-hints (HttpClientInterface, EventDispatcherInterface, Validator, etc.) without the framework glue that makes them coherent. Laravel already ships a handful of Symfony components, so partial reuse is plausible, but this is "harvest the source," not "install the dependency." If we are in fact a Symfony shop, fit is good and the calculus changes materially — this is the first question to settle before any estimate.

Integration feasibility. With 3 stars, 0 dependents, and a composite score of 0.115, we are the first serious consumer. That is not disqualifying for a thin API wrapper — the surface area is small and MIT-licensed, so the worst case is bounded — but it means: no evidence of production use, no downstream projects to reveal which endpoints actually work, unknown test coverage, no published security policy, no visible release cadence, and effectively a single point of maintenance. The real integration cost is not the package; it is the MaTPE domain contract. Regulated public-procurement APIs carry versioned schemas, environment separation (sandbox vs. production), credential/certificate handling, and business-rule validation that a thin wrapper will not model. Expect to own the mapping layer from our domain objects to MaTPE payloads regardless of whether we adopt this bundle.

Technical risk.

  • Supply chain: low-to-moderate. Small, MIT, readable source; we can audit it in hours and fork if needed. Pin to a commit SHA, not a floating constraint.
  • Maintenance: high. Zero dependents and low visibility strongly suggest abandonment risk within 12 months. Assume we become the maintainer of record.
  • Correctness: unknown. No signals on test suite, error handling, retry/timeout policy, or idempotency semantics for tender submission — the exact places where e-procurement integrations fail in production.
  • Compatibility: version constraints against Symfony LTS lines and PHP 8.x are unverified; a stale constraint can block our own upgrade path.
  • Domain: MaTPE protocol version drift is the dominant long-term risk, and the package's coupling to a specific API version is undocumented.

Key questions to answer in a spike (timebox: 1–2 days).

  1. Which MaTPE API version and which endpoints does the bundle actually cover? Enumerate against our required scope.
  2. What is the auth model — API key, OAuth, mutual TLS client certificates, IP allowlisting? Where are secrets held, and does the bundle assume filesystem paths?
  3. Is a sandbox/test environment available to us, and what are the rate limits and payload size ceilings?
  4. What are the bundle's transitive dependencies, and does it drag in a Symfony major version we cannot accept?
  5. Is there test coverage, CI, or a tagged release history? Any issues/PRs from real users?
  6. Who is the maintainer, and what is the bus factor? Is there a stated support commitment?
  7. Does it handle partial failures, retries, and idempotent resubmission — or must we build that?

Integration Approach

Stack fit. Treat the package as an implementation detail behind our own port, never as a direct dependency of domain code. Define a TenderSubmissionGateway-style interface in our application layer (submit, poll status, fetch acknowledgements, cancel), with two adapters: MatpeBundleAdapter (wraps the package's service) and DirectHttpAdapter (a ~200-line client against the documented MaTPE API). Ship with the cheap one, keep the other as a documented escape hatch. This is the anti-corruption layer that makes the package's health irrelevant to our architecture.

Laravel path (if applicable). Bind the interface in a service provider; instantiate the extracted service manually or, more likely, skip the bundle entirely and copy the API-call logic into app/Services/Matpe/ — the bundle's src/ is the real deliverable and is likely under a few hundred lines. Add symfony/http-client as a standalone dependency only if we truly want its retry/middleware ergonomics over Laravel's Http facade (which already gives us retry, timeouts, and fakes). Recommendation: use Laravel's HTTP client and mirror the bundle's request shapes; do not attempt to boot the bundle.

Symfony path (if applicable). Install normally, register the bundle in config/bundles.php, and wrap its service in our own adapter as above. Pin composer.json to a specific version/commit and add the repo to our dependency-review checklist.

Migration path. Phase 0: fork or vendor the source into a read-only reference directory and audit it. Phase 1: spike against the sandbox, produce an endpoint coverage matrix (covered / missing / broken). Phase 2: implement the port + adapter, with contract tests written against recorded sandbox fixtures. Phase 3: route a single low-risk use case (e.g. read-only tender status polling) through it. Phase 4: promote to submission flows once idempotency and error semantics are proven. Phase 5: decide — keep, fork, or replace — with a dated review.

Compatibility and sequencing. Keep the adapter and the package on independent version pins so an upstream bump cannot force our framework upgrade. Sequence the work behind the sandbox credential acquisition, which is typically the longest lead-time item in e-procurement integrations — start it on day one. Contract tests (recorded request/response pairs) are the deliverable that survives whichever adapter we end on; invest there, not in bundle configuration.

Operational Impact

Maintenance. Budget for us, not for them. Realistic ongoing cost is low in steady state (small surface, I/O-bound client) but with a hard-to-schedule tail: protocol version changes arrive on the platform's calendar, not ours, and we will be adapting a dependency nobody else is watching. Assign a named owner and a quarterly review of the pinned commit. Forking into our org is likely cheaper than coordinating upstream PRs.

Support. No vendor, no SLA, no security contact. Escalation for MaTPE platform issues goes to the platform operator, not the package author — confirm we have a support channel and credentials for that, since it is the actual dependency in any incident.

Scaling. Throughput is bounded by MaTPE's rate limits and response latency, not by PHP. Design for horizontal scaling of workers behind a queue with per-submission idempotency keys, bounded concurrency, exponential backoff with jitter, and a circuit breaker on 5xx/timeout storms. Payload volume is small (documents, metadata); the cost driver is retry storms and duplicate submissions, both of which must be engineered out. Cache reference data (taxonomies, CPV codes, buyer identifiers) aggressively.

Failure modes to instrument from day one.

  • Silent schema drift — platform adds/renames a field; the wrapper happily sends a malformed payload. Mitigate with strict response validation and alerting on unexpected shapes.
  • Credential and certificate expiry — the classic overnight outage. Alert 30 days out.
  • Partial batch failure — some tenders accepted, some rejected; without per-item status tracking we lose reconciliation.
  • Duplicate submission — no idempotency key means a retry creates two filings. Hard requirement to verify before go-live.
  • Silent package abandonment — we cannot distinguish "stable" from "dead"; track upstream activity and set a decision date.
  • Throttling — unhandled 429s cascading into retry amplification.

Ramp-up. Two distinct curves. Technical: a day for a PHP developer to read the source and stand up the adapter — the package is small, and this is the cheap part. Domain: weeks. MaTPE is a regulated procurement channel; engineers need working literacy in tender lifecycle states, submission deadlines and their legal cutoff semantics, required document formats, and acknowledgment/receipt handling. Budget for access to whoever owns public-procurement compliance on the business side, plus at least one person who can read the platform's specification documents. Also budget sandbox onboarding and, where applicable, certificate enrollment — these are calendar time, not effort.

Recommendation. Do not adopt the bundle as a production dependency in its current state. Extract it as a reference implementation, build our own thin client behind a port with contract tests, and revisit adoption only if the upstream project shows signs of life or we standardize on Symfony. The package's genuine value is that it saves us a few days of API discovery — capture that value and cap the exposure.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package