idci/notification-bundle
A Symfony bundle for building in-app notification systems: define notifications, queue and dispatch them to users through configurable channels, and manage read/unread state with Doctrine-backed entities and event-driven notifiers.
idci/notification-bundle is a Symfony2 bundle, not a Laravel package. There is no ServiceProvider, no facade, no publishable config, no package auto-discovery. On Laravel you cannot composer require this and call it a day — the realistic day-one move is to read the repo as a domain reference and build on Laravel's native Notifiable/Notification primitives. On a legacy Symfony2 app, follow the steps below.idci/notification-bundle via Composer. Check the composer.json require block first — the Symfony/PHP constraints are old (pre-8.0), so you may need a pinned tag/branch or a VCS repositories entry pointing at the GitHub URL. Expect resolution friction on any modern PHP runtime.app/AppKernel.php inside registerBundles(), scoped to the right environment block (dev/test/prod).app/config/config.yml. Don't guess the key: open DependencyInjection/Configuration.php first — the tree usually exposes entity class overrides, notifier/channel toggles, and cleanup settings.php app/console doctrine:schema:update --force, or generate a Doctrine migration so the Notification and association tables exist.Entity/, Manager/, Event/, and Notifier/. The manager service is the entry point — it wraps persistence and dispatches events. Inject it into a controller or service and call the create/notify method.$container->get(...) inline. It keeps call sites testable and decouples you from the service ID, which is the first thing to change if you fork.notify() calls through controllers, dispatch your own domain events (order placed, comment posted) and let a listener create the Notification. This is the idiomatic Symfony2 pattern and the bundle's cleanest extension point — it also keeps the notifier layer out of your request handlers.markAsRead(), isRead()) and repository finders (findUnreadByUser(), paginated feeds). Avoid ad-hoc DQL in controllers; put the query logic in the Manager/repository.notify() was called with the right recipient/payload; integration-test the full create→query loop against a test database so schema and mapping issues surface early.notifications table migration, via() channel methods, and ShouldQueue. Port any non-obvious routing/batching/recipient-resolution rules as explicit service classes behind an interface, with tests pinning behavior. Treat the repo as a spec, not a dependency.illuminate/* requirement. Wrapping a foreign DI container and Doctrine ORM inside Laravel is a net-negative architecture decision — avoid it even if it "works" in a spike.ShouldQueue + Horizon on Laravel) from day one.DependencyInjection/Configuration.php and the service XML/YAML before writing config; guessing the tree wastes hours. Use debug:container and Doctrine's SQL logger to confirm what's actually wired.How can I help you explore Laravel packages today?