Giter Club home page Giter Club logo

hypeone-challenge's Introduction

Hypeone Desafio Técnico

O objetivo deste desafio é a criação de uma API de atendimento simples com a possibilidade de troca de mensagens entre dois usuários em modelo de conversa, que deve conter backend utilizando PHP (com ou sem framework, nos usamos Laravel). Esta API deve ser capaz de iniciar e encerrar sessões de chat, registrar e ler as mensagens.

2023-06-02 08-19-31

Roadmap

  • Login/Cadastro
  • Cadastrar ou entrar em chat.
  • Troca de mensagens entre usuários.
  • Persistência de chats e mensagens no banco de dados.
  • Finalizar Chat;

Instalação

Renomeie o arquivo .env.example para .env

Instale as dependências do back-end

composer install

Instale as dependências do Front-end

npm install

Execute as migrations

php artisan migrate

Execute os seeders

php artisan db:seed

Migrations e seeders de uma só vez

php artisan migrate --seed

Inicie os Serviços

Serviço de filas:

php artisan queue:listen

Serviço de websocket:

php artisan websocket:serve

Front-end

npm run dev

Back-end

php artisan serve

Usando

  • Abra o navegar em http://127.0.0.1:8000
  • No momento da seeders foram cadastrados 02 usuários que poderão ser usados para logar.
    Mário Lucas
    usuário: [email protected]
    senha: password
    
    Michele
    usuário: [email protected]
    senha: password
    
  • Para o segundo usuário é recomendado que o login seja feito através de outro navegador ou mesmo de uma guia anônima.
  • É possível entrar em um chat existente ou cadastrar um novo chat com título.
  • Depois é só interagir até um dos 02 encerrar o chat.

Documentação da API

Obsevação: Inclua no header das requisições os seguinte parâmetros: Content-Type: application/json e Accept: application/json para evitar redirecionamentos inesperados por parte do tratamento de requests no backend. Caso use o arquivo de importação que deixei no repositório, já está tudo montado, é só testar.

Chats

Método Endpoint Parâmetros Descrição Retorno
GET api/chats --- Busca lista de chats ativos. 200
GET chat/:chatId/details --- Retorna informações de detalhes do chat. sucesso: 200 erro: 404
POST api/chat string username, string title Inicia um novo chat. sucesso: 201 erro: 422
PUT api/chat/:chatId/close string username Finaliza um chat, retornas seus dados. sucesso: 200 erro: 404

Mensagens

Método Endpoint Parâmetros Descrição Retorno
GET api/message/:chatId --- Retorna lista de mensages de um chat. 200
POST api/message/store int chat_id, string content, string username Cadastra uma mensagem. sucesso: 201 erro: 422

Testes

Para execução dos testes use o comando:

php artisan test

Tests Chat

![#c5f015] PASS Tests\Feature\ChatTest shold create a new chat expect code 201 0.89s

shold receive error 302 becouse missed param 0.06s

close chat expected code 200 0.09s

shold receive error 404 becouse chat not exists 0.08s

shold get chat details expect code 200 0.06s

shold get chat details expect code correctly json structure 0.07s

shold fail becouse chat not exists expect 404 code

Tests Message

![#c5f015] PASS Tests\Feature\MessageTest

shold get chat messages expect code 200 0.11s

shold create a new message

Tests: 9 passed (21 assertions) Duration: 2.06s

Extras

Para simulção de requisições basta importar o arquivos insomnia-requests.json

  1. Abra o Insomnia REST Client.
  2. Clique em New Document, selecione Importar / Exportar.
  3. Na aba Dados , selecione Importar Dados > Do Arquivo.
  4. Clique em Importar.

Considerações

Agradeço desde já a oportunidade da empresa Hypeone de participar desses desafio.

Depois dessa documentação, caso ainda fiquem dúvidas, estou à inteira disposição.

Desenvolvido por Mário Lucas

[email protected]

hypeone-challenge's People

Contributors

mariolucasdev avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.