Esse projeto foi um desafio proposto pelo DanielHe4rt.
O principal intuito desse projeto foi entender um pouco mais do Laravel e ver mais de perto como é feito para usar uma estrutura da minha escolha nesse ecossistema, acabei usando repository pattern no projeto, confesso que é algo desnecessário, pois é um projeto pequeno, ainda mais usando o Eloquent, mas um pouco de Overengineering não machuca ninguem.
-
Autenticação de Usuários
- Implementação de cadastro e login de usuários com autenticação em Laravel Sanctum.
- Entidades: User
- Rotas:
POST /register: Cria um novo usuário.POST /login: Faz login de um usuário.GET /user: Retorna o usuário autenticado.
-
Criação de Servidores
- Usuários podem criar servidores de chat.
- Entidades: Guild
- Rotas:
GET /guilds: Retorna todos os servidores disponíveis.POST /guilds: Cria um novo servidor.DELETE /guilds/{guildId}: Deleta um servidor específico.
-
Canais de Texto
- Cada servidor pode ter múltiplos canais de texto.
- Usuários podem enviar e receber mensagens em tempo real.
- Entidades: Channel
- Rotas:
GET /guilds/{guildId}: Lista os canais de um servidor.POST /guilds/{guildId}/channels: Cria um novo canal dentro de um servidor.
-
Mensagens em Tempo Real
- Implementação de mensagens em tempo real utilizando Laravel Echo e websockets.
- Entidades: Message
- Rotas:
GET /guilds/{guildId}/channels/{channelId}: Entra em um canal e começa a escutar as mensagens.POST /guilds/{guildId}/channels/{channelId}/messages: Envia uma mensagem para um canal específico.
- Linguagem: PHP 8.3
- Framework: Laravel 11
- Banco de Dados: SQLite
- Pacotes Utilizados:
- Laravel Reverb para implementação de mensagens em tempo real
-
Clone o repositório:
git clone git@github.com:Clintonrocha98/real-time-chat-discord-laravel.git cd real-time-chat-discord-laravel -
Instale as dependências:
composer install
-
Configure o arquivo
.env: Copie o arquivo de exemplo:cp .env.example .env
Em ´.env´, você precisa alterar essas variáveis para produção
REVERB_APP_ID= REVERB_APP_KEY= REVERB_APP_SECRET= -
Execute as migrações e seeders:
php artisan migrate
-
Inicie o servidor de desenvolvimento:
php artisan serve
-
Reverb:
php artisan reverb:start
- Laravel Blade
- TailwindCSS
- Javascript
-
Instale as dependências do frontend:
npm install
-
Compile os assets:
npm run dev
| Método | Rota | Descrição |
|---|---|---|
| GET | /login | Página de Login/Senha |
| GET | /register | Página de Registro |
| POST | /register | Cria um usuário |
| POST | /login | Faz login de um usuário |
| GET | /user | Retorna o usuário autenticado |
| GET | /guilds | Retorna todos os servidores disponíveis |
| POST | /guilds | Cria um novo servidor |
| DELETE | /guilds/{guildId} | Deleta um servidor |
| GET | /guilds/{guildId} | Lista os canais de um servidor |
| POST | /guilds/{guildId}/channels | Cria um novo canal dentro de um servidor |
| GET | /guilds/{guildId}/channels/{channelId} | Entra em um canal e começa a escutar as mensagens |
| POST | /guilds/{guildId}/channels/{channelId}/messages | Envia uma mensagem para um canal específico |