asundust/push-laravel
A Laravel package that wraps the asundust/push library to send notifications through multiple push providers. Config-driven setup and a simple facade make it easy to fire alerts, system messages, and on-demand notifications from your app.
Architecture fit. asundust/push-laravel is a thin Laravel wrapper around asundust/wechat-work-push — a WeCom (企业微信 / WeChat Work) messaging SDK. Architecturally that is the correct shape for Laravel: a service provider, a publishable config file, and a facade that resolves out of the container, so it slots into controllers, queued jobs, and events without bespoke plumbing. The important caveat is that most of the real risk does not live in this package — it lives in the upstream SDK it wraps and in WeCom's HTTP API. A TPM should treat the adoption decision as "do we standardize on WeCom push, and is this wrapper an acceptable convenience layer over the upstream SDK?" rather than "do we adopt this package?"
Integration feasibility. High effort-wise, low evidence-wise. Composer install plus config publish plus env credentials is a few hours of developer time. But the documentation is one-line release notes and a marketing-style description in Chinese; there is no README guidance in this workspace, no CI matrix, no examples of token caching, retry behavior, or error handling. We can integrate, but we cannot validate from the artifacts that the package handles WeCom edge cases correctly.
Technical risk.
asundust/wechat-work-push. If that package lags WeCom API changes (token semantics, message type additions, template cards), this wrapper inherits the lag.php artisan config:cache) are operational concerns the package cannot solve for us.Key questions for the maintainer (or answered by inspecting composer.json).
asundust/wechat-work-push is pinned, and how actively is that upstream maintained?Stack fit. Good if and only if the business need is WeCom messaging (internal employee notifications, alerting, approval workflows) inside a Laravel 10/11 application. It is a poor fit for anything resembling consumer mobile push. Before committing, confirm the target audience is WeCom users and that the organization already has a WeCom tenant with a self-built app and agentid provisioned — that provisioning is typically the longest lead-time item in the whole project, and it is not a package concern.
Migration path. Low-effort, verify-first:
composer.json for Laravel/PHP constraints and the pinned upstream SDK version — this answers most of the support-matrix questions without waiting on the maintainer.touser, expired token, rate-limit response, WeCom API 5xx.Compatibility. Two layers to verify: Laravel/PHP compatibility of the wrapper (see 1.0.3 caveats) and WeCom API compatibility of the upstream SDK. The wrapper is a patch-level release, so treat any change beyond constraint widening — a moved transitive dependency, a changed config key — as a review gate.
Sequencing.
NotificationSender or a Laravel Notification channel) that the rest of the codebase depends on. All calls go through it. This is the single highest-leverage step: it converts the package from an architectural dependency into an implementation detail we can swap or fork.Maintenance. The bus factor is one. The 1.0.3 release in March 2024 shows the maintainer is at least tracking Laravel majors, which is a positive signal, but the release hygiene is thin enough that we should not assume future Laravel 12 support arrives on time. Mitigation: vendor the package (MIT permits this) or keep our abstraction layer thin enough that replacing it costs days, not weeks. Budget a recurring line item to re-review the package at each Laravel major.
Support. Little to no English-language community, no issue-tracker evidence, no runbook. Internal support burden is therefore front-loaded onto the adopting team: someone must own WeCom token lifecycle knowledge, error-code interpretation, and the abstraction layer. Document the WeCom-side configuration (corp ID, agent ID, IP whitelist) in our own runbook — it will not be found upstream.
Scaling. Runtime scaling is not a package concern. The constraints are WeCom's API rate limits per app/agent and access-token request quotas. The package advertises queue-friendliness, which is correct and necessary — but queue throughput, worker concurrency, retry/backoff, and dead-letter handling are ours to implement. Design for: one shared token cache (not per-worker), bounded concurrency against WeCom, and idempotency keys so a retried job does not double-send. Organizationally, if several applications need WeCom messaging, standardize on this wrapper behind our abstraction so the token and retry logic is written once.
Failure modes to plan for.
Ramp-up. Low for any Laravel developer — the API is a facade call. The real learning curve is WeCom domain concepts (corpid, corpsecret, agentid, touser/toparty, message types, error codes), which is a day of focused reading and a sandbox tenant. Estimate: 2–3 days for pilot integration including the abstraction layer, 1 week to production-grade with retry/token/observability work. The TPM action is to treat WeCom tenant provisioning as the schedule driver, not the package install, and to require the abstraction layer as a non-negotiable acceptance criterion before rollout.
How can I help you explore Laravel packages today?