Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 months ago
JSON representation
Real-time Messenger for Laravel
- Host: GitHub
- URL: https://github.com/launcher-host/mercurius
- Owner: launcher-host
- License: mit
- Created: 2018-09-08T05:14:20.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-02-14T14:38:02.000Z (almost 6 years ago)
- Last Synced: 2024-08-18T10:11:33.944Z (5 months ago)
- Topics: chat, chat-application, laravel, laravel-chat, laravel-messenger, laravel-package, messenger, php, pusher, vue, websockets
- Language: PHP
- Homepage: http://mercurius.launcher.host/
- Size: 3.43 MB
- Stars: 326
- Watchers: 25
- Forks: 51
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- favorite-link - Laravel 的实时信使。
README
## 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.
## 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).