Este projeto é parte de um teste técnico encontrado no GitHub da empresa Goomer, ainda não tive o prazer de participar do processo seletivo interno deles e aproveitei o desafio para aumentar meu conhecimento e enriquecer o portfólio.
Durante a execução deste projeto, enfrentei alguns desafios significativos:
-
Configuração do ambiente de banco de dados: Foi necessário manter duas configurações de banco de dados, uma para produção e outra para o ambiente de testes.
-
Upload de imagens: A aplicação exigia upload de imagens, optei por salvar localmente assim otimizando o tempo de desenvolvimento, tempo de resposta e economizar com serviços de armazenamento.
Para resolver o desafio promovendo melhor desenvolviment, usabilidade, escalabilidade e colaboração, foram tomadas as seguintes decisões:
- Tecnologias Utilizadas:
- Node.js: Escolhi Node.js por ser uma tecnologia que tenho mais experiência e à sua ampla utilização pela empresa que propôs o desafio.
- Express: Express é uma das melhores ferramentas para desenvolvimente de aplicação server-side em Node.js, permitindo flexibilidade arquitetural ao time de desenvolvimento.
- PGlite: Escolhei PGlite por sua leveza e adequação às necessidades do projeto, evitando a complexidade adicional de gerenciar serviços de banco de dados ou containers.
- FS (File System): Utilizei o módulo FS nativo do Node.js para salvar as imagens localmente, evitando o uso de serviços externos.
- Escolha de Arquitetura: Optei por utilizar Clean Architecture por ser uma arquitetura simples e muito eficiente na manutenção e escalabilidade da aplicação.
Pretendo implementar as seguintes melhorias no projeto:
- Autenticação e Autorização: Implementar autenticação e autorização para proteger as rotas da aplicação.
- Testes End-to-End: Implementar testes End-to-End para garantir o correto funcionamento da aplicação de "ponta a ponta".
- Microserviços: Dividir a aplicação em microserviços para facilitar a manutenção e escalabilidade.
Para executar esta aplicação, siga as instruções abaixo:
- Clone o repositório:
git clone https://github.com/mucasliranda/goomer-lista-rango.git
- Instale as dependências:
npm install
- Configure o ambiente
Copie o arquivo .env.example para .env e preencha as variáveis de ambiente. (opcional)
- Execute a aplicação:
npm start
A aplicação estará disponível em http:https://localhost:3000 ou na porta especificada no arquivo .env
.
Para executar os testes, use o comando
npm test
Para executar os testes de cobertura, use o comando
npm run test:coverage
Se preferir, você pode executar a aplicação usando Docker. Para isso, siga as instruções abaixo:
- Construa a imagem:
docker compose build
- Execute o container:
docker compose up