GITHUB BLOG
Teste Pratico Digigrow
Teste Prático da Digigrow
Este é um teste prático proposto pela Digigrow. O teste prático consiste na criação de uma aplicação com duas partes: back-end e front-end.
-
Back-end:
No back-end, é necessário desenvolver uma API REST utilizando Node.js, com funcionalidades para adicionar, listar, editar e excluir tarefas. A API deverá usar o banco de dados MongoDB para armazenar as tarefas e implementar validações simples, como garantir que o campo "title" seja obrigatório e que a descrição não ultrapasse 255 caracteres.
Para ver mais detalhes sobre a API, veja um dos módulos deste monorepo chamado infra, não se esqueça de ler o arquivo
README.md
, pois ele contém informações importantes sobre a API. -
Front-end:
No front-end, deve ser criada uma interface em React.js que permita ao usuário interagir com a API. A interface deve permitir listar, adicionar, editar e excluir tarefas de forma intuitiva. Embora não seja um requisito, um design responsivo será considerado um diferencial.
Para ver mais detalhes sobre o front-end, veja um dos módulos deste monorepo chamado front-end, não se esqueça de ler o arquivo
README.md
, pois ele contém informações importantes sobre o front-end.
Sobre o Monorepo
Como o desafio proposto é a criação de um projeto com duas partes, back-end e front-end, decidi utilizar o Monorepo para organizar os projetos. O Monorepo consiste em organizar vários projetos dentro de uma única estrutura de diretórios. Isso permite que os projetos sejam mantidos e gerenciados de forma mais eficiente, além de facilitar a comunicação e a integração entre os projetos. Para facilitar a configuração, eu estou utilizando uma solução da Versel chamada Turborepo.
Para entender melhor o Monorepo, recomendo a leitura do artigo "Monorepo: como usá-lo para desenvolver e integrar grandes projetos".
Começando
Clonando o repositório
Abra o terminal e execute o seguinte comando:
Então acesse o repositório, usando o comando cd
:
Instalação
Rodando a checagem de tipos
Rodando o linter
Variáveis de ambiente
Para realizar os passos a seguir, é necessário ter as seguintes variáveis de ambiente definidas no módulo de infra e no módulo de frontend:
- Crie um arquivo
.env
na raiz do módulo de infra e adicione as variáveis de ambiente. Para saber quais são as variáveis de ambiente necessárias, consulte o arquivo.env.example
. - Crie um arquivo
.env
na raiz do módulo de frontend e adicione as variáveis de ambiente. Para saber quais são as variáveis de ambiente necessárias, consulte o arquivo.env.example
.
Rodando os testes
Há dois tipos de testes: os unitários e os end-to-end. Os unitários são os testes que são executados na camada de domínios da aplicação, enquanto os end-to-end são executados na camada de infraestrutura da aplicação.
Rodando os testes unitários
Rodando os testes end-to-end
Rodando em desenvolvimento
Serão duas aplicações que irão rodar simultaneamente.
- Para acessar a aplicação de infraestrutura (back-end), acesse http://localhost:3333 e consulte a documentação da API feita com Swagger em http://localhost:3333/docs.
- Para acessar a aplicação de front-end, acesse http://localhost:3000.
Fazendo a Build
O comando abaixo irá gerar os arquivos de build de ambas as aplicações. Tanto a aplicação de infra como a aplicação de front-end.
Atenção!: 4 processos irão ser executados para a finalização completa da build:
- build-domains: Para compilar o código do pacote de domínios.
- build-infra: Para compilar o código do pacote de infraestrutura.
- run-infra: Para executar o código do pacote de infraestrutura. Esse processo é executado para garantir que a build do front-end, que será a próxima etapa, possa fazer requisições à API do pacote de infraestrutura durante seu processo de build.
- build-frontend: Para compilar o código do pacote de front-end.
Observação!: Após a conclusão do quarto processo, mate o terminal, pois o terceiro processo não será finalizado, já que ele manterá o servidor rodando.
Rodando a build das aplicações
Para rodar a build das aplicações, execute o comando abaixo.
- Para acessar a aplicação de infraestrutura (back-end), acesse http://localhost:3333 e consulte a documentação da API feita com Swagger em http://localhost:3333/docs.
- Para acessar a aplicação de front-end, acesse http://localhost:3000.