Skip to content

Instantly share code, notes, and snippets.

@frankyston
Forked from DanielHe4rt/teste-foda.md
Created June 5, 2024 00:41
Show Gist options
  • Save frankyston/0775528bcb517ac6f16101ec1bb9d164 to your computer and use it in GitHub Desktop.
Save frankyston/0775528bcb517ac6f16101ec1bb9d164 to your computer and use it in GitHub Desktop.
Teste Técnico: Crie seu Discord!

Teste Tecnico: Desenvolvimento de uma Aplicação de Chat em Tempo Real com PHP e Laravel (ou qualquer outra lang)

Introdução

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.

Requisitos do Projeto

Funcionalidades Principais

  1. Autenticação de Usuários
    • Cadastro e login de usuários com autenticação em Laravel Sanctum.
    • Entidades: User
  2. Criação de Servidores
    • Usuários podem criar servidores de chat.
    • Entidades: Guild
  3. Canais de Texto
    • Cada servidor pode ter múltiplos canais de texto.
    • Mensagens podem ser enviadas e recebidas em tempo real.
    • Entidades: Channel
  4. Mensagens em Tempo Real
    • Implementação de mensagens em tempo real utilizando Laravel Echo e websockets.
    • Entidades: Message
  5. 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

Rotas da aplicaçã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

Requisitos Técnicos

  1. Backend

    • PHP 8.3
    • Laravel 11
    • Banco de dados: SQLite
    • Pacotes: Laravel Sanctum (Bonus: Laravel Reverb)
  2. Frontend

    • Laravel Blade + TailwindCSS.
  3. Documentação e Testes

    • Documentação da API utilizando Swagger ou outro framework de documentação.
    • BONUS: Testes de Integração

Critérios de Avaliação

  1. Qualidade do Código
    • Estrutura e organização do código.
    • Uso de abstrações:
      • Service
      • Repositories
      • Jobs/Broadcast
  2. Funcionalidade
    • Implementação completa das funcionalidades descritas.
  3. Documentação
    • Clareza e completude da documentação.
    • Instruções claras para configuração e execução do projeto.
  4. Inovação
    • Funcionalidades adicionais ou melhorias que não foram especificadas, mas agregam valor ao projeto.

Entrega

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

Materiais de Apoio

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment