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

Cmsms Laravel Package

laravel-notification-channels/cmsms

A Laravel notification channel for CMS Made Simple (CMSMS). Send notifications from your Laravel app through CMSMS using the familiar Laravel notification API. Easy to install and configure, it extends the laravel-notification-channels ecosystem with a clean, tested driver for CMSMS-powered sites.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Multi-channel notification architecture — keep fan-out in Laravel, not in bespoke glue. This package makes CMS Made Simple just another entry in Notification::via(). The strategic bet it supports is "every delivery destination is a Laravel notification channel," so email, SMS, Slack, database, and CMS-authored alerts share one routing model, one queue, one set of per-user preferences, and one testing story (Notification::fake()). That is a platform decision, not a CMSMS decision — and it is worth making regardless of whether this specific package survives.

  • Build vs. buy on a genuinely small surface. A notification channel is a thin transport adapter — a few hundred lines at most. The real decision is adopt-as-dependency vs. vendor-a-fork vs. write-in-house, not "do we buy enterprise software." All three options cost days, not quarters. Because it is MIT-licensed, the downside of adopting is capped at "we fork it," which means the call can be made quickly and cheaply instead of escalated into a planning cycle.

  • Scoping the CMSMS integration request honestly. When a client or internal stakeholder asks "can the app notify CMS editors when a form is submitted / when content is flagged / when a publish fails," this package answers the how much work question: install, add a channel to notification preferences, write payload mapping, add a contract test. That is a spike, not an epic. Framing it that way lets you compare it against other channel requests (Teams, WhatsApp, push) on audience size rather than on gut feel.

  • Prioritization signal via adoption data. Nine stars and zero dependents is the most product-relevant fact in this package's metadata. It does not mean the code is bad — it means no one has validated this path in production. Use it as a forcing function: adopt only if CMSMS is already load-bearing in the estate, and only with an owner named in the same breath as the adoption decision.

  • Risk register and dependency policy input. Adding a single-maintainer, zero-dependent community package to a production notification path is a policy question as much as a technical one. This package is a clean test case for "what evidence do we require before adopting a community dependency on a delivery path?" — pinned version, vendored source, wrapper interface, contract test, documented fallback.

  • Delivery semantics for free. Queuing, retries, backoff, per-notifiable routing, and test doubles all come from Laravel, not from this package. The PM takeaway: any new destination should be built as a channel rather than an ad-hoc service class, because the operational behavior is already solved. This package being small is a feature in that framing — it adds surface area without re-implementing infrastructure.

  • Use cases it directly unlocks (only if CMSMS is in the estate): notifying CMS editors/admins of Laravel-side events (form submissions, moderation queue items, failed jobs, order events); pushing app-generated alerts into CMS-managed admin dashboards where editors actually spend their day; giving a Laravel admin panel a way to reach CMS-side operators without building a second inbox. It does not unlock rich content authoring, two-way sync, media push, or templating — scope those separately if requested.

When to Consider This Package

Adopt-or-spike only when all of the following hold:

  • CMS Made Simple is already in the stack — a client property, a legacy site, a marketing microsite — and is not on a near-term decommission list. If CMSMS is going away in two quarters, this dependency is a tax with no payoff.
  • CMSMS is where the recipients actually work. The channel is only worth its dependency weight if the people who need the notification live inside the CMSMS admin and are not well served by email or Slack. If a plain email reaches them, use email.
  • The payload is simple — subject, body, recipient(s). If you need attachments, rich HTML templating, media, or structured content authoring, treat this as unavailable until proven otherwise.
  • You are prepared to own the code. Read the source, pin the exact version, wrap it behind an internal notifier interface, and be ready to fork under MIT. Adopting it as an unexamined Composer constraint is the failure mode.
  • The notification is non-critical. Internal operator alerts, editor pings, moderation nudges. Not customer-facing transactional messaging, not compliance-relevant delivery, not anything with a contractual SLA.

Look elsewhere / decline when:

  • CMSMS is not in the stack. Never carry this speculatively — there are zero dependents for a reason.
  • You need support, an SLA, or a second maintainer. Single maintainer, nine stars, no community backstop. If the delivery path is contractual, write and own the channel internally — the code is small enough that this stays a days-scale decision.
  • A single queued job or a plain email would solve it. For one notification to one endpoint, a channel abstraction is overhead; a queued job has fewer moving parts and no dependency to own.
  • The README's "Laravel 5 and up" framing doesn't survive contact with your version matrix. Verify illuminate/* constraints against your actual Laravel/PHP combination. If installation needs --ignore-platform-reqs, that is a red flag, not a workaround.
  • You need guaranteed delivery or idempotency. Laravel notifications fail quietly, and a CMSMS 5xx without queueing means the message is simply gone. If duplicates or drops are unacceptable, that requirement belongs in a system you control.

How to Pitch It (Stakeholders)

To executives (60 seconds): "We have a request to notify CMS editors about events in our Laravel app. The options are: a few days to adopt a small open-source adapter, a few days to write our own, or a few days to vendor a copy. All three cost about the same, so this is a low-stakes call, not a budget item. The one thing worth flagging: the package is maintained by a single person with no other projects depending on it. That's fine for internal editor alerts — it is not fine for anything customer-facing or contractual. I'm recommending we spike it for internal notifications only, behind a feature flag, with email as the fallback, and revisit if the dependency ever looks abandoned."

To engineering (the ask): "Treat this as a leaf, not a dependency of domain code. It should appear in exactly two places: one notification class and one via() decision. Keep mail in the channel list and gate CMSMS behind a config flag so we degrade to email instead of dropping messages. Queue it on its own rate-limited worker with explicit tries/backoff/timeout — a legacy PHP CMS behind an authenticated endpoint is not built for throughput. Pin the exact version, read the channel and message classes before trusting the README, and add one unfaked contract test against Http::fake() so an upstream break is a red CI build rather than a user complaint. Wrap it behind an internal CmsmsNotifier interface so swapping to our own implementation is a binding change."

The honest summary: this is a small, MIT-licensed transport adapter that buys us Laravel's notification infrastructure — queueing, retries, routing, test doubles — for a destination we may or may not need. It is a cheap, reversible bet on the "everything is a channel" architecture. It is not a platform, it is not supported, and it should never sit on a delivery path we've promised someone an SLA on. Approve it as a spike with a named owner and a written fork plan; decline it if CMSMS isn't already in the estate or if email would reach the same people.

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.
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core