abannova/mercurius

Real-time Messenger package for Laravel

Maintainers

👁 AbanNova

Package info

github.com/AbanNova/mercurius

Homepage

Issues

pkg:composer/abannova/mercurius

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

dev-main 2022-10-15 17:36 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 0b2364b35b44342fbdd618a7a3ca982851f55653

  • Bruno Torrinha <https://torrinha.com>

phpchatlaravelpusherMessengerweb-socketsvue

This package is auto-updated.

Last update: 2022-10-15 17:36:42 UTC


README

👁 Mercurius - Messenger for Laravel

👁 Build Status
👁 Build Status
👁 Latest Version
👁 Total Downloads
👁 License

Table of Contents

About

Mercurius is a real-time messenger system using Laravel and Vue.js, featuring a complete application that you can easily install with any Laravel project.

Preview

👁 mercurius preview

Features

  • Real-time Messenger
  • Responsive
  • Multilingual
  • Browser notifications
  • Unique UX, with dark theme
  • Typing indicator
  • Remove conversations and messages
  • Search recipients with auto-complete

Screenshots

👁 mercurius_01_home_tb.png
👁 mercurius_02_view_conversation_tb.png
👁 mercurius_03_messages_hover_tb.png
👁 mercurius_04_compose_message_tb.png
👁 mercurius_05_find_recipient_results_tb.png
👁 mercurius_06_user_settings_tb.png
Click thumbs to enlarge image

Demo

You can try a demo of Mercurius. Authenticate using any of the following credentials:

  • ian@AbanNova.host
  • noa@AbanNova.host
  • lua@AbanNova.host

Password: password

Tip: Open 2 different browsers and login with different usernames, so you can test send/receiving messages.


Installation

Make sure Laravel 5.6+ is installed before proceed.

1. Setup Pusher

If you don't have an account, create a free one on pusher.com website. Go to the dashboard, create a new app and take note of the API credentials.

Now, let's add the API keys to the .env file. Also, change the BROADCAST_DRIVER to pusher (default is log).

...
BROADCAST_DRIVER=pusher
...
PUSHER_APP_ID="xxxxxx"
PUSHER_APP_KEY="xxxxxxxxxxxxxxxxxxxx"
PUSHER_APP_SECRET="xxxxxxxxxxxxxxxxxxxx"
PUSHER_APP_CLUSTER="xx"
2. Register BroadcastServiceProvider

Open config/app.php and uncomment the line App\Providers\BroadcastServiceProvider::class,.

3. Laravel Authentication

Skip this step if authentication is already setup, otherwise type:

php artisan make:auth
4. Install Mercurius
composer require AbanNova/mercurius
5. Configuration (optional)

If you want to change the default configuration, publish the config file, by typing the command:

php artisan vendor:publish --tag=mercurius-config

For editing the config, open /config/mercurius.php and add your own values.

return [

 /*
 |--------------------------------------------------------------------------
 | Mercurius Models
 |--------------------------------------------------------------------------
 |
 | Defines the models used with Mercurius, use it to extend Mercurius and
 | create your own implementation.
 |
 */

 'models' => [
 'user' => App\User::class,
 'messages' => AbanNova\Mercurius\Models\Message::class,
 ],

 /*
 |--------------------------------------------------------------------------
 | User Table Fields
 |--------------------------------------------------------------------------
 |
 | You can specify the column names for the user table. The `name` accepts
 | an array of fields, for building custom names with multiple columns.
 |
 */

 'fields' => [
 // 'name' => ['first_name', 'last_name'],
 'name' => 'name',
 'slug' => 'slug',
 'avatar' => 'avatar',
 ],
];
6. Install Mercurius
php artisan mercurius:install
composer dump-autoload
7. User trait

Add AbanNova\Mercurius\MercuriusUser trait to your User model:

// ...
use Illuminate\Foundation\Auth\User as Authenticatable;
use AbanNova\Mercurius\MercuriusUser;

class User extends Authenticatable
{
 use MercuriusUser;
 // ...
}
8. Install dummy data (for testing)
php artisan db:seed --class=MercuriusDatabaseSeeder

Will add Messages and Users to the system, like in the demo example:

Demo Users:

  • Ian: ian@AbanNova.host
  • Noa: noa@AbanNova.host
  • Lua: lua@AbanNova.host

Password: password

Update Mercurius

Whenever you update Mercurius, make sure to publish assets to apply the new versions of CSS/JS.

php artisan vendor:publish --tag=mercurius-public --force

Customization

Please see Customization for more information.


Roadmap

Check the roadmap for more information.

  • Unit Tests
  • Conversation w/ multiple users #13
  • Webhooks #16
  • Upload photos & files #14
  • Preview images and videos #15
  • Emoji support #18
  • Video Chat #19
  • Support socket.io #20
  • Search messages #17

Support


Contributing

Please see CONTRIBUTING for more information.


Changelog

We keep a CHANGELOG with the information that has changed.


Credits


Copyright and license

Copyright 2018 Bruno Torrinha. Mercurius is released under the MIT License.