https://github.com/mullerino/teste_tecnico_shopper
https://github.com/mullerino/teste_tecnico_shopper
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/mullerino/teste_tecnico_shopper
- Owner: mullerino
- Created: 2024-08-27T13:18:33.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-10-20T13:33:26.000Z (8 months ago)
- Last Synced: 2025-01-08T23:59:48.927Z (5 months ago)
- Language: TypeScript
- Size: 45.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Teste Técnico Shopper
Este projeto é uma aplicação Node.js construída como parte de um teste técnico para a empresa Shopper. A aplicação está completamente dockerizada e realiza o upload de medições (como leitura de água ou gás) para uma base de dados MySQL, além de permitir consultas e confirmações dessas medições. Além disso, o projeto conta com um sistema de logging centralizado usando o Bunyan.
## Funcionalidades
- **Upload de Medições:** Envio de medições de água ou gás, com suporte para upload de imagens associadas.
- **Confirmação de Medições:** Confirmação das medições registradas.
- **Consulta de Medições:** Listagem de medições por cliente, com suporte a filtros.
- **Sistema de Logging:** Log centralizado com rotacionamento de logs utilizando Bunyan.## Tecnologias Utilizadas
- **Node.js** com **Express** para o backend.
- **TypeScript** para tipagem estática.
- **MySQL** para armazenamento de dados.
- **AWS S3** para armazenamento de imagens.
- **Bunyan** para logging.
- **Docker** e **Docker Compose** para containerização.
- **Jest** para testes unitários.## Estrutura do Projeto
- **`src/config`**: Configurações do projeto (banco de dados, logger, etc).
- **`src/controllers`**: Controladores das rotas.
- **`src/routes`**: Definição das rotas da API.
- **`src/services`**: Lógica de negócios e integração com serviços externos.
- **`log`**: Logs gerados pelo Bunyan.
- **`Dockerfile`**: Configuração do Docker para a aplicação.
- **`docker-compose.yml`**: Arquivo Docker Compose para orquestração de contêineres.
- **`tests`**: Testes unitários usando Jest.## Como Rodar o Projeto
### Pré-requisitos
- Docker
- Docker Compose### Passos
1. **Clone o repositório:**
```bash
git clone https://github.com/seu-usuario/Teste_tecnico_Shopper.git
cd Teste_tecnico_Shopper2. **Configurando Variáveis de Ambiente**
Crie um arquivo `.env` na raiz do projeto com as seguintes variáveis:```bash
GEMINI_API_KEY=
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
BUCKET_NAME=
```3. **Subindo a Aplicação com Docker**
A aplicação é totalmente dockerizada. Para rodá-la, basta executar os comandos:```bash
docker-compose build
docker-compose up
```
Esses comandos irão baixar as imagens necessárias, construir a imagem da aplicação, iniciar os containers e rodar a aplicação.## Uso da Aplicação
Após iniciar a aplicação, ela estará disponível na porta 3000. Você pode acessar as rotas disponíveis via uma ferramenta como o Postman ou cURL.
### Endpoints Disponíveis
- **POST /upload**: Endpoint para realizar o upload de uma medição.
- **PATCH /confirm**: Endpoint para confirmar uma medição.
- **GET /:customer_code/list**: Endpoint para listar medições de um cliente específico.## Testes
A aplicação utiliza o Jest para testes unitários. Para rodar os testes, utilize o comando:```bash
npm run test
```Os testes estão localizados no diretório src/tests e cobrem as principais funcionalidades das rotas implementadas.