edujugon/push-notification
A Laravel package for sending push notifications through Firebase Cloud Messaging (FCM). Deliver messages to Android and iOS devices—individually, by topic, or in groups—via a simple, expressive API with support for custom data payloads.
Architecture fit
edujugon/push-notification is a conventional Laravel package: it ships a ServiceProvider, a Facade, and a publishable config file, then wraps provider SDKs/protocols (GCM, FCM, APN) behind a single sending API. Architecturally it is a thin adapter layer, not a platform. That is appropriate for a Laravel app that needs to fan out notifications to iOS and Android without owning provider-specific HTTP details, but it means the abstraction depth is limited: anything beyond basic send (topics/conditions, APNs token auth nuances, per-message collision handling, rich payload validation) depends on what the maintainer has exposed. Teams already standardized on laravel-notification-channels/* or a dedicated provider SDK would be adding a second, overlapping abstraction.
Integration feasibility Composer install, config publish, credential population per environment, and facade calls — achievable in hours for a single platform, and days for a dual-platform integration with test devices. It follows Laravel idioms (config, facade, queue-friendly), so a Laravel developer can adopt it without new mental models. The real friction is credential provisioning and the fact that FCM and APNs have materially different payload semantics, which the package does not eliminate.
Technical risk
.p8) auth, not certificate/legacy paths. If it still supports only legacy endpoints, it is a trap for new work. Note that v5.5.0 addresses framework compatibility only — it says nothing about provider protocol currency..p8 keys land in config/env; leakage risk sits with the integrator, not the package.Key questions
Stack fit Good fit for a standard Laravel application (service provider + facade is the native pattern) that sends point-to-point notifications and does not need a full engagement platform (topics, segmentation, A/B, delivery analytics). Poor fit where the organization already has a notification abstraction or a vendor push platform; adding this creates a competing pathway. With v5.5.0, this now extends cleanly to applications on Laravel 12 — a meaningful widening of the addressable stack.
Migration path
PushGateway interface from day one so the package is swappable.laravel-notification-channels/fcm or apns: treat as a lateral move, not an upgrade — the payload model and error surfaces differ. Migrate behind the internal interface, keep both paths live behind a feature flag, and cut over per platform (Android first, then iOS).Edujugon\PushNotification\Facades\PushNotification calls into domain code.Compatibility
v5.5.0 adds Laravel 12 support, which removes the most common blocker for apps on current Laravel releases. Still confirm the package's composer.json constraints against the app's exact Laravel/PHP versions — "Laravel 12 support" typically also implies a minimum PHP 8.2+, which can affect apps pinned to older PHP. Watch for conflicts if google/auth or guzzlehttp/guzzle versions are pinned elsewhere, and verify behavior under the app's queue driver (Redis/SQS/database) since retries and timeouts are driver-sensitive. If the app is on Laravel 10 or 11, check whether the v5.x line still carries those constraints or whether upgrades are forced.
Sequencing
.env in VCS.PushGateway interface and adapt the package behind it.Maintenance Low day-to-day code maintenance, moderate ongoing vigilance: track FCM/APNs API changes, Laravel major releases, and the maintainer's activity. Budget a quarterly review. v5.5.0 shipping Laravel 12 support is a good cadence signal — it means framework upgrades are less likely to strand the app — but do not read it as evidence of provider-protocol currency. Because the package is thin and MIT-licensed, a fork-and-patch path is realistic if it stalls — assign an owner who can execute that.
Support Community-only: GitHub issues, no vendor SLA. Internal runbooks should cover credential rotation, provider outage response, and "package unmaintained" contingency. Do not route incidents to the upstream maintainer.
Scaling Sending is I/O-bound HTTP; the package itself is not the bottleneck, but the pattern is. All sends must go through queues with concurrency limits per provider, and APNs in particular will return 429s under burst. Avoid synchronous sends in request paths. For high volume, confirm whether the package batches per connection or issues per-message requests — if the latter, expect to manage worker pools and provider-side throttling explicitly. Token storage and pruning queries should be indexed from the start.
Failure modes
Ramp-up Low for any Laravel developer — the facade and config are self-explanatory, and the README covers the basics. The real learning curve is provider semantics (FCM vs APNs payload differences, token lifecycle, sandbox vs production APNs endpoints) and the operational scaffolding around retries, logging, and token hygiene. Estimate 1–2 days to first successful dual-platform send, 1–2 weeks to production-grade integration with queueing, observability, and failure handling — on Laravel 12 the framework-side friction is now lower, but the provider-side work is unchanged.
How can I help you explore Laravel packages today?