faraztanveer / laravel-chat
This is my package laravel-chat
Fund package maintenance!
faraztanveer
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
This package is auto-updated.
Last update: 2025-06-16 01:32:56 UTC
README
π A blazingly fast, modern chat system for Laravel 12+
Built for real-time applications, infinite customization, and developer happiness
π¦ Installation β’ β¨ Features β’ βοΈ Quick Start β’ π‘ API Reference β’ π€ Contributing
β¨ Features
π‘ Perfect for: Chat applications, messaging systems, customer support platforms, team collaboration tools, and any real-time communication needs.
π Installation
# Install the package composer require faraztanveer/laravel-chat # Run migrations php artisan migrate
π¦ Optional: Publish configuration file
php artisan vendor:publish --provider="Faraztanveer\LaravelChat\LaravelChatServiceProvider" --tag=config
βοΈ Quick Start
1οΈβ£ Setup Your User Model
Add the HasChatChannels
trait to your user model:
<?php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; use Faraztanveer\LaravelChat\Traits\HasChatChannels; class User extends Authenticatable { use HasChatChannels; // Your existing code... }
2οΈβ£ Start Chatting!
That's it! Your application now has a fully functional chat system. The package provides RESTful API endpoints for all chat operations.
ποΈ Configuration
The package works seamlessly out of the box, but you can customize it to fit your needs.
Configuration file (config/laravel-chat.php
):
<?php return [ // Your participant model (usually User model) 'participant_model' => App\Models\User::class, // API route customization 'route_prefix' => 'chat', // Routes: /api/chat/* 'route_middleware' => ['auth:sanctum'], // Authentication middleware ];
π‘ API Reference
All endpoints are available under /api/{route_prefix}
(default: /api/chat
).
Method | Endpoint | Description | Request Body/Parameters |
---|---|---|---|
POST |
/channel |
Create or retrieve a chat channel | {"participant_id": 2} |
GET |
/channels |
List user's chat channels | β |
GET |
/channel |
Get specific channel details | ?channel_id=1 |
POST |
/message |
Send a message to channel | {"channel_id": 1, "body": "Hello!"} |
GET |
/messages |
Retrieve channel messages | ?channel_id=1 |
Example Usage
// Create or get a chat channel const response = await fetch('/api/chat/channel', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer your-token' }, body: JSON.stringify({ participant_id: 2 }) }); // Send a message await fetch('/api/chat/message', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer your-token' }, body: JSON.stringify({ channel_id: 1, body: "Hello there!" }) });
π¨ Customization
Custom Display Names
Override the display name for chat participants:
class User extends Authenticatable { use HasChatChannels; public function getChatDisplayName(): string { return $this->full_name ?? $this->name; } }
Custom Participant Columns
Specify which columns to include in API responses:
class User extends Authenticatable { use HasChatChannels; public function chatParticipantColumns(): array { return ['id', 'name', 'email', 'avatar_url']; } }
Middleware Customization
You can customize authentication and authorization middleware in the configuration file:
// config/laravel-chat.php return [ 'route_middleware' => ['auth:sanctum', 'verified', 'custom-middleware'], ];
π€ Contributing
We welcome contributions! Here's how you can help make Laravel Chat even better:
- π Found a bug? Open an issue
- π‘ Have an idea? Start a discussion
- π§ Want to contribute code? Check our contributing guide
- π Improve documentation? Documentation PRs are always welcome!
π‘οΈ Security
Security is a top priority. If you discover any security-related issues, please email faraz.io@outlook.com instead of using the issue tracker.
See SECURITY.md for our security policy and vulnerability reporting process.
π Requirements
- PHP 8.2+
- Laravel 12.0+
- Database (MySQL, PostgreSQL, SQLite, SQL Server)
πΊοΈ Roadmap
- File attachment support
- Message reactions and emojis
- Message threading
- Advanced search functionality
- Message encryption
- Group chat management
- Message status indicators (sent, delivered, read)
π License
This package is open-sourced software licensed under the MIT License.
π¨βπ» Credits
- Faraz Tanveer - Creator & Maintainer
- All Contributors - Thank you! π
Built with β€οΈ for the Laravel community
β Star this repository if it helped you!