syntaxlexx / laravel-5-messenger

A Simple Laravel 5, 6, 7, 8, 9, 10 & 11 Messenger with Pusher Capabilities
https://messenger-inertia.acelords.com/
MIT License
104 stars 32 forks source link
chat cmgmyr conversation laravel laravel-5-package laravel-chat laravel-framework laravel-messenger laravel-pusher participants pusher pusher-service thread unread-messages

Laravel 5, 6, 7, 8, 9, 10 & 11 ChatMessenger (+ Pusher)

This package will allow you to add a full user messaging system into your Laravel application. It is a highly intuitive laravel chatmessenger with added features such as maximum number of participants in a conversation, starred threads, and a unique social media sharing link for inviting users to a conversation(otherwise known as Thread in this package).

Total Downloads Latest Stable Version Latest Unstable Version License composer.lock available

Screenshot 1

Donating to the project

If you've found this useful and would like to buy the maintainers a coffee (or a Tesla, we're not picky), feel free to do so.

Patreon donate button

Buy Me a Coffee at ko-fi.com

Or by buying products and merchandise at Marketplace.

This funding is used for maintaining the project and adding new features into Code Style plus other open-source repositories.

Laravel Version Compatible?
11.x Yes! (^1.5.0)
10.x Yes! (^1.4.0)
9.x Yes! (^1.3.0)
8.x Yes! (^1.3.0)
7.x Yes! (^1.3.0)
6.x Yes! (^1.2.0)
5.8 Yes!
5.7 Yes!
5.6 Yes!
Laravel Version Compatible Branch
5.5 v1 [1.0.8]
5.4 v1 [1.0.8]
5.3 v1 [1.0.8]
5.2 v1 [1.0.8]
5.1 v1 [1.0.8]

Get on to voting for a tailwind/vue.js/vuerouter version of the project

Features

Common uses

Installation (Laravel 4.x - no longer actively supported)

Installation instructions for Laravel 4 can be found here.

Installation (Laravel 5.x)

Laravel 5.6+ onwards

composer require syntaxlexx/chatmessenger

Laravel 5.1 > 5.5

composer require syntaxlexx/chatmessenger@1.0.8

Or place manually in composer.json:

"require": {
    "syntaxlexx/chatmessenger": "^1.0"
}

Run:

composer update

>>> If using Laravel 5.4 and below

Note: Laravel Messenger supports Package Discovery. If using Laravel 5.5 and above, skip this part.

Add the service provider to config/app.php under providers:

'providers' => [
    Lexx\ChatMessenger\ChatMessengerServiceProvider::class,
],

Publish config:

php artisan vendor:publish --provider="Lexx\ChatMessenger\ChatMessengerServiceProvider" --tag="config"

Update config file to reference your User Model:

config/chatmessenger.php

Create a users table if you do not have one already. If you need one, the default Laravel migration will be satisfactory.

(Optional) Define names of database tables in package config file if you don't want to use default ones:

'messages_table' => 'lexx_messages',
'participants_table' => 'lexx_participants',
'threads_table' => 'lexx_threads',

Publish migrations:

php artisan vendor:publish --provider="Lexx\ChatMessenger\ChatMessengerServiceProvider" --tag="migrations"

Migrate your database:

php artisan migrate

Add the trait to your user model:

use Lexx\ChatMessenger\Traits\Messagable;

class User extends Authenticatable {
    use Messagable;
}

Pusher Integration

This package utilizes pusher/pusher-php-server that provides pusher services out-of-the-box. All you have to do is require the package, register the service providers, publish the vendor package, and that's it! You're good to go.

Please check out the examples section for a detailed example usage.

Breaking Changes:

Deprecated Packages

Since Pusher Http Laravel has been deprecated, the current demo uses the latest Laravel 5/6 trends of Broadcasting via events. Checkout THE DEMO to see it in action. It becomes more manageable and expressive to configure channels individually.

If you plan to migrate to Laravel 6, the Pusher Http Laravel deprecated package will prohibit you due to dependency issues. You will simply need to create an event to fire the broadcast message, and a channel for broadcasting. You can check the demo for practical usage.

Migration to v1.2

As pointed out in this issue, the starred property has been moved from threads table to the participants table as it makes much more sense there. (Credits to snarcraft).

run php artisan vendor:publish --provider="Lexx\ChatMessenger\ChatMessengerServiceProvider" --tag="migrations" to copy migration file, then run php artisan migrate.

Starring a thread is as easy as calling the star() method on the thread. If no userId is passed, it defaults to the currently logged-in user. Same case applied to unstarring a thread. $thread->unstar().

So, Where's the Demo?

To get a clear picture of how it works, open two to four browsers (private/incognito mode is perfect for this case) and login with different accounts.

Screenshot

Latest Demo

We have a New Demo Version that features the common Laravel Jetstream + Inertia stack.

Screenshot 1

API list with Usage Examples

Thread

Message

Participant

User - (Lexx\ChatMessenger\Traits\Messagable)

You can also check the individual models for more information about the functions. This package also utilizes Scopes in case you need more control over your queries.

Examples

Contributing?

Suggestions are welcome and any contributions whatsoever are highly valued. If feeling a little bit shy, feel free to send an email to Lexx YungCarter.

Security

If you discover any security related issues, please use the issue tracker or better yet, send an email to Lexx YungCarter.

Credits

What's Next?

We are on the verge of unleashing a Vue.js version + Examples for those of you requiring a boost in quickly setting up chatrooms/messages in your app.

So:-

Should you be so greatful to provide code samples, feel free to share your code/repository with us. Thank you in advance!

Special Thanks

This package used cmgmyr/laravel-messenger as a starting point, which in turn initially used AndreasHeiberg/laravel-messenger as a starting point.

Star History

Star History Chart