Skip to content

Laravel messenger. A full messenger suite for your new / existing laravel app! Private and group threads between multiple models, with real-time messaging, reactions, attachments, calling, chat bots, and more!

License

Notifications You must be signed in to change notification settings

aeq-dev/messenger

 
 

Repository files navigation

Laravel Messenger

Latest Version on Packagist Total Downloads Tests StyleCI License


Preview


Prerequisites

  • PHP ^7.4 || ^8.0
  • Laravel ^8.42
  • SubstituteBindings::class route model binding enabled in your API / WEB middleware groups.
  • Configure your laravel applications broadcast driver and set up your websocket implementation to utilize the real-time broadcast emitted.

Features

  • Realtime messaging between multiple models, such as a User, Admin, and a Teacher model.
  • RESTful API, allowing you to create your own UI or connect to your mobile app.
  • Private and group threads.
  • Message reactions, replies, edits, and deletion.
  • Send image, document, audio, and video messages.
  • Group thread chat-bots. Ready-made bots
  • Private thread approval when the two participants are not friends.
  • Add participants in a group thread from your friends list.
  • Permissions per participant within a group thread.
  • Friends, Search, and Online status systems.
  • Provider avatars, group thread avatars, and bot avatars.
  • Underlying calling system you can extend.
  • Group thread invitation links (like discord).
  • All actions are protected behind policies.
  • Scheduled commands for automated cleanup and checks.
  • Queued jobs fired from our event subscribers.
  • Most features can be toggled at runtime using our Messenger facade.
  • MessengerComposer facade allows you to have easy access to our core actions anywhere within your own app, such as sending messages, images, reactions, and more.
  • You can implement or extend your own BroadcastDriver, VideoDriver, and FriendDriver, simply by binding your classes into the container.
  • Support for morph maps on your provider models. See: Morph Maps
  • Optional extra payload when sending messages to allow custom json to be stored with the message.
  • Owner relationships returns a Ghost Profile when not found (null-object pattern).
  • Private threads auto-lock when the recipient is not found (deleted).

Upcoming for v2

  • Temporary Ephemeral conversations.
  • Improved API pagination / filters.
  • Condense attachment routes.
  • Possible extraction of friends system.
  • Improved image manipulation / saving of multiple sizes.
  • Encryption of messages (E2E is the long term goal).
  • Translations for internal messages.
  • Pinned messages.

Notes

  • Read through the messenger.php config file before migrating!
  • This is a pure backend driven package providing an API to interact with, thus no web UI or websocket implementation will be setup for you.
  • Calling is disabled by default. You are responsible for implementing your own media server or connecting to a 3rd party provider.

Installation

Composer

composer require rtippin/messenger

To complete the setup, please refer to the installation documentation listed below:


Documentation


Addons / Demo

  • Messenger Bots - Pre-made bots you can register within this package.
  • Messenger Faker - Adds commands useful in development environments to mock/seed realtime events and messages.
  • Messenger Web UI - Ready-made web routes and publishable views / assets, including default images.
  • Demo App - A demo laravel app with this core package installed, including a Live Demo.

Credits - Richard Tippin

Security

If you discover any security related issues, please email author instead of using the issue tracker.

About

Laravel messenger. A full messenger suite for your new / existing laravel app! Private and group threads between multiple models, with real-time messaging, reactions, attachments, calling, chat bots, and more!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%