https://github.com/hdev14/teste-allugator-backend
API RESTful para consultar dados de funcionários.
https://github.com/hdev14/teste-allugator-backend
apirestfull mongodb nodejs swagger typescript
Last synced: 6 months ago
JSON representation
API RESTful para consultar dados de funcionários.
- Host: GitHub
- URL: https://github.com/hdev14/teste-allugator-backend
- Owner: hdev14
- Created: 2020-11-12T20:17:45.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-11-15T15:48:23.000Z (about 5 years ago)
- Last Synced: 2025-05-13T16:15:20.741Z (9 months ago)
- Topics: apirestfull, mongodb, nodejs, swagger, typescript
- Language: TypeScript
- Homepage:
- Size: 260 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Teste Allugator (Backend)
# Solução
Minha proposta para esse teste foi desenvolver um endpoint para cada tipo de filtro especifico e para as outras operações (PUT/DELETE). Eu pensei incialmente em colocar as requisições do tipo GET em apenas um endpoint (GET:/employees), porém depois de pensar melhor, resolvi seguir essa abordagem, porque um único endpoint recebendo muitos filtros é considerado uma má prática. Dessa forma, para continuar seguindo o estilo arquitural REST definir um subpath especificando qual seria o tipo do filtro, por exemplo, ```/employees/uf``` que é destinado a fazer consultas por UF de nascimento do funcionário.
# Uso
## Pre-requisitos
Para iniciar esse projeto é necessário primeiramente instalar todas as dependências e tecnologias para executar o ambiente de desenvolvimento.
- [Node & NPM](https://nodejs.org/en/)
- [Docker](https://docs.docker.com/engine/install/) & [Docker-compose](https://docs.docker.com/compose/install/)
### Instalar dependências
```sh
$ npm install
```
## Execução
Após o download/instalação de todas as tecnologias e dependências, basta seguir esses passos:
1. Execute o **docker-compose**:
```sh
$ docker-compose up -d
```
2. Copie o arquivo env.example e coloque os valores corretos para as variáveis de ambiente:
```sh
$ cp .env.example .env
```
3. Execute o comando de seed para popular o banco de dados a partir do arquivo *employees.txt*:
```sh
$ npm run seed
```
4. Execute o projeto em modo de desenvolvimento:
```sh
$ npm run dev
```
## TDD
Esse projeto foi todo desenvolvido utilizando a metodologia de desenvolvimento Test Driven Development, por isso também foram criados alguns testes de integração e de unidade. Para executar os testes, basta utilizar o seguinte comando:
```sh
$ npm run test
```
## Tecnologias utilizadas
- [X] NodeJS com Typescript;
- [X] ExpressJS;
- [X] Mongodb;
- [X] Docker e Docker-compose;
- [X] Jest com Supertest e jest Mongo (Testes);
- [X] ESLint e Editorconfig;
- [X] Husky e Lint-Staged;
## Documentação da API
Com o modo de desenvolvimento em execução é possível verificar a documentação da API feita com [Swagger](https://swagger.io/), basta consultar a URL ```http://localhost:4444/docs/``` no browser.