Real-time Messenger for Laravel
Branch: master
Clone or download
akazorg Merge pull request #42 from alextime/master
Move closure routes to controller methods to allow caching routes
Latest commit ca6f1e8 Feb 14, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Update docs and Changelog Nov 4, 2018
publishable chore: build assets Nov 16, 2018
resources feat: typing indicator Nov 16, 2018
routes Move closure routes to controller methods to allow caching routes Feb 13, 2019
src
tests First version Oct 10, 2018
.gitignore add yarn.lock to .gitignore Oct 26, 2018
.travis.yml Fix travis Oct 10, 2018
CHANGELOG.md docs: prepare next release Nov 16, 2018
CONTRIBUTING.md First version Oct 10, 2018
ISSUE_TEMPLATE First version Oct 10, 2018
LICENSE Setup Mercurius repo Sep 8, 2018
README.md docs: prepare next release Nov 16, 2018
composer.json fix(composer): missing new line at EOF Oct 19, 2018
mix-manifest.json First version Oct 10, 2018
package.json Fix Chrome error, promise was not loading Nov 4, 2018
phpunit.xml First version Oct 10, 2018
webpack.mix.js

README.md

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


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

Click thumbs to enlarge image

Demo

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

  • ian@launcher.host
  • noa@launcher.host
  • lua@launcher.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 launcher/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' => Launcher\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 Launcher\Mercurius\MercuriusUser trait to your User model:

// ...
use Illuminate\Foundation\Auth\User as Authenticatable;
use Launcher\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@launcher.host
  • Noa: noa@launcher.host
  • Lua: lua@launcher.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.