Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/launcher-host/mercurius

Real-time Messenger for Laravel
https://github.com/launcher-host/mercurius

chat chat-application laravel laravel-chat laravel-messenger laravel-package messenger php pusher vue websockets

Last synced: about 1 month ago
JSON representation

Real-time Messenger for Laravel

Awesome Lists containing this project

README

        






Build Status
Build Status
Latest Version
Total Downloads
License

## Table of Contents

* [About](#about)
* [Preview](#preview)
* [Features](#features)
* [Screenshots](#screenshots)
* [Demo](#demo)
* [Installation](#installation)
* [Customization](#customization)
* [Roadmap](#roadmap)
* [Support](#support)
* [Contributing](#contributing)
* [Changelog](#changelog)
* [Credits](#credits)
* [Copyright & License](#copyright-and-license)

## 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](http://mercurius-demo.herokuapp.com/login) of Mercurius. Authenticate using any of the following credentials:

- `[email protected]`
- `[email protected]`
- `[email protected]`

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](https://pusher.com/).
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`).
```php
...
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:
```bash
php artisan make:auth
```

##### 4. Install Mercurius
```bash
composer require launcher/mercurius
```

##### 5. Configuration (optional)
If you want to change the default configuration, publish the config file, by typing the command:
```bash
php artisan vendor:publish --tag=mercurius-config
```

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

```php
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

```bash
php artisan mercurius:install
composer dump-autoload
```

##### 7. User trait
Add `Launcher\Mercurius\MercuriusUser` trait to your `User` model:

```php
// ...
use Illuminate\Foundation\Auth\User as Authenticatable;
use Launcher\Mercurius\MercuriusUser;

class User extends Authenticatable
{
use MercuriusUser;
// ...
}
```

##### 8. Install dummy data (for testing)
```bash
php artisan db:seed --class=MercuriusDatabaseSeeder
```
Will add Messages and Users to the system, like in the [demo example](#demo):

Demo Users:

- Ian: `[email protected]`
- Noa: `[email protected]`
- Lua: `[email protected]`

Password: `password`

#### Update Mercurius
Whenever you update Mercurius, make sure to publish assets to apply the new versions of CSS/JS.
```php
php artisan vendor:publish --tag=mercurius-public --force
```


## Customization
Please see [Customization](docs/customization.md) for more information.


## Roadmap
Check the [roadmap](https://github.com/launcher-host/mercurius/issues/8) 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
- Create a [new issue](../../issues)
- Join us on [Slack Channel](http://mercurius-demo.herokuapp.com/join-slack-launcher-host)


## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) for more information.


## Changelog
We keep a [CHANGELOG](CHANGELOG.md) with the information that has changed.


## Credits
- [Bruno Torrinha](https://torrinha.com)
- [All Contributors](../../contributors)


## Copyright and license
Copyright 2018 [Bruno Torrinha](https://torrinha.com). Mercurius is released under the [MIT License](LICENSE).