Teste Tecnico: Desenvolvimento de uma Aplicação de Chat em Tempo Real com PHP e Laravel (ou qualquer outra lang)
Neste desafio, você será responsável por desenvolver uma aplicação de chat em tempo real utilizando PHP e o framework Laravel. A aplicação deve oferecer funcionalidades básicas similares às encontradas em plataformas de chat como o Discord. O foco principal é a criação de um backend robusto e escalável, utilizando as abstrações e boas práticas do Laravel.
- Autenticação de Usuários
- Cadastro e login de usuários com autenticação em Laravel Sanctum.
- Entidades: User
- Criação de Servidores
- Usuários podem criar servidores de chat.
- Entidades: Guild
- Canais de Texto
- Cada servidor pode ter múltiplos canais de texto.
- Mensagens podem ser enviadas e recebidas em tempo real.
- Entidades: Channel
- Mensagens em Tempo Real
- Implementação de mensagens em tempo real utilizando Laravel Echo e websockets.
- Entidades: Message
- Perfis de Usuários
- Cada usuário possui um perfil.
- Exibição de informações básicas do perfil, como:
- nome de usuário
- quantidade de servidores que ele possui
- quantidade de mensagens enviadas
- data de criação
Método | Rota | Descrição |
---|---|---|
GET | /login | Página de Login/Senha |
GET | /register | Página de Registro |
POST | /auth/register | Cria um usuário |
POST | /auth/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 as salas 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 |
DELETE | /guilds/{guildId}/channels/{channelId}/messages/{messageId} | Deleta uma mensagem em um canal específico |
-
Backend
- PHP 8.3
- Laravel 11
- Banco de dados: SQLite
- Pacotes: Laravel Sanctum (Bonus: Laravel Reverb)
-
Frontend
- Laravel Blade + TailwindCSS.
-
Documentação e Testes
- Documentação da API utilizando Swagger ou outro framework de documentação.
- BONUS: Testes de Integração
- Qualidade do Código
- Estrutura e organização do código.
- Uso de abstrações:
- Service
- Repositories
- Jobs/Broadcast
- Funcionalidade
- Implementação completa das funcionalidades descritas.
- Documentação
- Clareza e completude da documentação.
- Instruções claras para configuração e execução do projeto.
- Inovação
- Funcionalidades adicionais ou melhorias que não foram especificadas, mas agregam valor ao projeto.
Assim que iniciar o projeto, faça um commit com a base do projeto (framework) e crie uma nova branch pro seu desafio. Abra um Pull Request com o desafio e mande o link no e-mail abaixo.
- Repositório Git: O código deve estar disponível em um repositório Git (GitHub, GitLab, etc.) e publico.
- Instruções: Um arquivo README.md com instruções detalhadas sobre como configurar e executar o projeto.
- Entrega: Envie o código para [email protected] com o assunto "Teste Tecnico: Discord por (seu nome)"
- Prazo: indefinido! .
Boa sorte e bom desenvolvimento!! :D