lab123/lumen-notification
A lightweight notification package for Lumen that brings a Laravel-style API for sending alerts through mail, database, and other channels. Simple to install and configure, it suits microservices and small APIs that need reliable user notifications without pulling in the full framework.
Architecture fit. Unchanged in substance: the package's value is restoring Laravel's Notification layer to Lumen, which ships without illuminate/notifications wiring, mail/services config scaffolding, or notification artisan commands. The 1.0.0 release tightens the aperture rather than widening it — Lumen 10/11 only, PHP ^8.1 only. The "Laravel 10-13" support claim is now confirmed as deliberate (restated in the release notes) rather than a metadata artifact, but it remains a low-value secondary market since full Laravel already has this natively. Fit is narrow but legitimate: Lumen 10/11 services needing outbound mail/SMS/in-app notifications without migrating to full Laravel.
Integration feasibility. Mechanically unchanged: composer require, service provider in bootstrap/app.php, manual config publication into config/ (Lumen's vendor:publish is limited), queue driver and mailer configuration, command registration via the console kernel. Effort for a first working mail channel remains roughly half a day to one day. The 1.0.0 release adds one non-trivial step that the earlier assessment did not account for: a required composer audit ignore for advisory PKSA-zwc5-qtrz-zm1n on Lumen/Laravel 10 and 11. That step is a governance decision, not a config line — it needs a named approver, a documented rationale, and a review date, and it should be scoped to exact package names and exact advisory IDs rather than a wildcard.
Technical risk. The risk profile has shifted materially, and not favorably:
composer audit ignores are sticky. A narrowly scoped ignore for one advisory on one branch tends to broaden as teams hit subsequent warnings. Without a scheduled review, the ignore silently masks a future, fixable advisory. Require the ignore be pinned to advisory ID plus affected package plus branch, with an owner and expiry.0.1.0-beta.2 — a beta, with no supported upgrade path and no backported fixes. Anyone who adopted early on Lumen 8/9 has no route forward except upgrading Lumen or forking. For new adopters the break is cheap; for anyone already running the beta it is a forced migration.database or broadcast channels, migrations, or test coverage.Key questions for the maintainer / spike.
illuminate/notifications or reimplement the Notifiable trait and channel contracts? If it reimplements, does it inherit the advisory independently of the ignored package?notifications table?0.1.0-beta.2, and is there a documented migration note?Stack fit. Lumen 10/11 services that own user-facing events and need transactional mail or SMS. Poor fit for teams with any realistic path to full Laravel within 12 months, and now explicitly excluded for Lumen 5-9 estates, which have no maintained upgrade target.
Migration path. Adopt behind an application-level NotificationDispatcher interface so the package is a replaceable adapter. Vendor published config into the repo. Sequence the 1.0.0 pin as a deliberate step, not a floating constraint: if 0.1.0-beta.2 is already deployed anywhere, treat the 1.0.0 upgrade as a breaking migration with its own test pass, not an update.
Compatibility. Pin the exact 1.0.0 tag. Audit composer.json against the target Lumen release's illuminate/* constraints — mismatched minors remain the likeliest silent breakage. Confirm PHP ^8.1 alignment across CI, runtime, and any local tooling still on 8.0. Confirm queue driver support (redis/sqs/database) and console kernel registration, since Lumen's artisan surface differs from Laravel's. Verify the mail transport (SES, Postmark, SMTP relay) is expressible in the published config shape.
Sequencing.
composer.json.Maintenance. Ownership, not consumption. Budget 1-3 engineer-days per quarter for upstream illuminate/* tracking, fork re-verification against Lumen patches, and test re-runs — plus an explicit advisory watch, which is now a standing obligation rather than a one-time check. The composer audit ignore must be reviewed on a schedule; treating it as permanent is the most likely way this package causes harm.
Support. No commercial support, no SLA, no formal disclosure process beyond the maintainer's own notes. Escalation is a GitHub issue to one person. Designate an internal on-call owner and write the runbook before production traffic depends on it. Note that the security posture here is now inherited risk: you are accepting a known-unfixed advisory on the framework layer, not just on this package.
Scaling. Unchanged. Notification sending is I/O-bound and queue-mediated; scale workers, not web nodes. Watch worker concurrency against provider rate limits, set backoff and max retries explicitly, and monitor failed_jobs. Volume rarely stresses the app; provider quotas and retry storms do.
Failure modes.
notifications table; if migrations aren't shipped, hand-rolled schemas diverge from the trait's expectations.illuminate/* past 1.0.0's constraint blocks upgrades with no upstream timeline.0.1.0-beta.2 has no supported forward path and no fixes.Ramp-up. Low for Laravel-experienced engineers; the API is Laravel's. Friction is Lumen-specific — manual config publication, console kernel registration, a thinner container/config layer with less obvious error messages. Add onboarding time for the security posture: new engineers must know why an advisory is ignored and where that decision is recorded. Budget a day of pairing for the first engineer, then it is routine.
How can I help you explore Laravel packages today?