Projeto proposto pela Dígitro para o Desafio Técnico referente ao processo seletivo, onde foi solicitado a criação de uma aplicação de conversas de chat utilizando ReactJS e Socket.io.
- ViteJS1
- Ferramenta para criação do ambiente de desenvolvimento.
- ReactJS2
- Biblioteca JavaScript para criação de interfaces de usuário.
- React Router Dom3
- Biblioteca JavaScript para trabalhar com rotas no React.
- Socket.io4
- Biblioteca JavaScript para trabalhar com WebSockets.
- ESLint5
- Ferramenta para padronização do código.
- Prettier6
- Ferramenta para formatação do código.
- Bootstrap7
- Biblioteca para estilização CSS do layout.
- Para rodar locamente:
- Para rodar com Docker
Para Rodar Localmente
- Faça o clone do repositório:
git clone git@github.com:flaviojoaofelix/dt-frontend-digitro.git
- Acesse o diretório do projeto
cd dt-frontend-digitro
- Instale as dependências:
npm install
- Inicie a aplicação:
-
Em modo desenvolvedor:
npm run dev
E acesse a aplicação pelo URL: http://127.0.0.1:5173/
-
Em modo produção:
npm run build
npm run preview
E acesse a aplicação pelo URL: http://127.0.0.1:4173/
Para Rodar com Docker
- Faça o clone do repositório:
git clone git@github.com:flaviojoaofelix/dt-frontend-digitro.git
- Acesse o diretório do projeto
cd dt-frontend-digitro
- Mude para o Branch 'docker':
git checkout docker
- Inicie o container Docker:
docker-compose up -d
ou
docker compose up -d
-
Acesse a aplicação pelo URL: http://127.0.0.1:5173/
-
Para parar o container Docker:
docker-compose down
ou
docker compose down
Funcionalidades da Aplicação
- Permitir informar um nome de usuário e a quantidade de chats simultâneos que serão atendidos.
- Exibir a lista de conversas em andamento com a identificação de cada uma delas,
- Exibir os dados da conversa ao clicar sobre uma conversa em andamento.
Funcionalidades do Usuário
- Poderá conectar e desconectar o usuário. - No momento da conexão informará o nome de usuário e o número máximo de chats simultâneos que o servidor poderá enviar para o usuário. - Quando estiver desconectado não vai receber chats;
- Poderá alternar entre os chats em andamento;
- Poderá finalizar uma chamada;
Informações Técnicas
- A interface se comunicará com o servidor via websocket (socket.io) que está hospedado em um domínio da Dígitro: http://dev.digitro.com/callcontrol
- Documentação da API disponível no arquivo API.md
- Uma vez o usuário conectado, o servidor começará a enviar eventos de nova chamada para ele até atingir o máximo simultâneo pré-definido na conexão do usuário. - O servidor enviará um evento USER_CONNECTED caso a conexão tenha sido feita com sucesso. - Estas chamadas serão enviadas em intervalos de tempo aleatórios entre 0 e 15 segundos. ⚠Portanto, se na conexão informar o máximo de 1 chamada, fique atento que poderá levar até 15 segundos para o evento com esta chamada ser enviado.⚠
Entrega
- O candidato deverá disponibilizar o link do seu projeto no GitHub com a documentação de como configurar e colocar o projeto para rodar.
- Digitar o seguinte comando para gerar a build:
npm run build
- Se desejar ver o preview, digitar o seguinte comando:
npm run preview
Comandos utilizados para iniciar a aplicação
- npm create vite@latest
Instalação do ViteJS com React JavaScript
- npm install
Instalação e configuração inicial das dependências do Vite
- npm install eslint
Instalação do ESLint utilizado afim de padronizar o código desenvolvido.
- npm install prettier
Instalação do Prettier para formatação do código.
- npm install eslint-config-prettier
Instalação da biblioteca que integra o ESLint com o Prettier.
- npm install eslint-plugin-import
Plugin que aponta ao ESLint como resolver as importações
- npm install eslint-plugin-jsx-a11y
Plugin que verifica problemas de acessibilidade do JSX com ESLint
- npm install eslint-plugin-react
Regras específicas de React para ESLint
- npm install socket.io-client
Biblioteca websocket para trabalhar com a API
- npm install react-router-dom
Biblioteca para trabalhar com rotas no React
- npm install gh-pages --save-dev
Ferramenta para publicar o projeto no GitHub Pages
Comandos utilizados para configuração da aplicação
- Criar o arquivo .eslintrc.js na raiz do projeto
Configuração do ESLint
- Criar o arquivo .eslintignore na raiz do projeto
Configuração do ESLint para ignorar arquivos
- Adicionar o comando "lint" ao package.json
Configuração do ESLint para rodar o comando lint através do NPM
- Criar o arquivo .prettierrc na raiz do projeto
Configuração do Prettier
- Criar o arquivo .prettierignore na raiz do projeto
Configuração do Prettier para ignorar arquivos