Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jlenon7/linkapi-test

🧪 Project developed in test for LinkApi
https://github.com/jlenon7/linkapi-test

Last synced: 9 days ago
JSON representation

🧪 Project developed in test for LinkApi

Awesome Lists containing this project

README

        

# LinkAPI Test 🧠

> Project developed in test for LinkApi

[![GitHub followers](https://img.shields.io/github/followers/jlenon7.svg?style=social&label=Follow&maxAge=2592000)](https://github.com/jlenon7?tab=followers)
[![GitHub stars](https://img.shields.io/github/stars/jlenon7/linkapi-test.svg?style=social&label=Star&maxAge=2592000)](https://github.com/jlenon7/linkapi-test/stargazers/)


GitHub language count

Repository size

License

Uma `API` que integre os serviços `Pipedrive` e `Bling`, a fim de poder realizar pedidos de vendas para fornecedores dentro do `Bling`.

## ENDPOINTS

| METHOD | URI | NAME |
| --------- | --------------------- | ----------------- |
| GET | api/v1/orders | orders.index |
| POST | api/v1/orders | orders.store |
| GET | api/v1/orders/:token | orders.show |

### Query Search em orders.index

Listagem paginadas: `?offset=0&limit=10`

Listagem entre preços: `?since_price=2000.00&max_price=4000.00`

Listagem entre datas: `?since_date=2021-02-23T05:00:00.000Z&max_date=2021-02-24T06:00:00.000Z`

---

| METHOD | URI | NAME |
| --------- | -------------------- | ----------------|
| GET | /api/v1/auth/me | auth.me |
| POST | /api/v1/auth/login | auth.login |
| POST | /api/v1/auth/register| auth.register |

JSON Example POST Register

```json
{
"name": "João Lenon",
"email": "[email protected]",
"password": "12345678",
"password_confirmation": "12345678",
}
```

## OBSERVAÇÃO

Essa API está rodando dentro de um servidor no Heroku apenas para ver o funcionamento do `Webhook` e para ter um acesso mais simplificado ao `Swagger`. [Clique aqui para acessar!](https://linkapi-test.herokuapp.com/api/swagger) PS: Aguarde o carregamento da página. Como está no plano free, o Heroku desliga a máquina automaticamente quando o servidor para de ser consumido, e só quando uma nova requisição chega que ele roda o servidor novamente, esse processo demora um pouco.

Não esqueça de criar o arquivo com as váriaveis de ambiente para rodar os testes ou modo development.

## COMANDOS

Instale as dependências

```bash
yarn
```

Gere o arquivo .env

```bash
cp .env.example .env && cp .env.example .env.testing
```

Para rodar os testes E2E e Unitários

```bash
yarn test
```

Para rodar a aplicação em modo desenvolvimento

```bash
yarn start:dev
```

## OBJETIVO

- [x] Deverá construir uma API RESTful usando a tecnologia NodeJS.

## REQUISITOS

- [x] Criar contas testes nas plataformas Pipedrive e Bling.
- [x] Criar uma integração entre as plataformas Pipedrive e Bling. (A integração deve buscar as oportunidades com status igual a ganho no Pipedrive, depois inseri-las como pedido no Bling).
- [x] Criar banco de dados mongo, existem serviços como MongoDB Atlas para criar de graça
- [x] Criar uma collection no banco de dados MongoDB agregando as oportunidades inseridas no Bling por dia e valor total.
- [x] Criar endpoint para trazer os dados consolidados da collection do MongoDB.

## INSTRUÇÕES

- [x] Desenvolva e versione o projeto usando git
- [x] Utilize o GitHub para hospedar o código
- [x] Enviar o link do repositório para [email protected]

## O QUE SERÁ AVALIADO

- Quantidade de requisitos realizados
- Desacoplamento de código
- Legibilidade
- Boas práticas de desenvolvimento de API RESTful
- Performance

## SELF IMPROVEMENTS

- [ ] Enfileirar as requisições das collections com RabbitMQ
- [x] Pipeline CI
- [x] Autenticação JWT
- [x] Adicionar Rate limiter
- [x] Criar testes end2end para os endpoints de Auth
- [x] Criar testes end2end para os endpoints de Orders
- [x] Criar testes unitários para a collection do Bling
- [x] Criar testes unitários para a collection do Pipedrive
- [x] Implementar Webhook para quando um Deal for atualizado no Pipedrive ajustar no Bling