Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dersonsena/send4-challenge
Send4 Challenge
https://github.com/dersonsena/send4-challenge
Last synced: 8 days ago
JSON representation
Send4 Challenge
- Host: GitHub
- URL: https://github.com/dersonsena/send4-challenge
- Owner: dersonsena
- Created: 2020-03-13T21:22:33.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-02-01T19:22:39.000Z (almost 2 years ago)
- Last Synced: 2024-10-11T22:23:11.351Z (about 1 month ago)
- Language: HTML
- Size: 574 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Send4 Challenge
Feito por: Kilderson Sena ([@dersonsena](https://github.com/dersonsena))
Nesse projeto você poderá rodar uma API desenvolvido feita com Laravel e integrado com o [Shopify](https://pt.shopify.com). Mais detalhes sobre as funcionalidades pode ser visto no [Documento de Requisitos](/documento-requisitos.pdf) do teste.
## Pré-requisitos
É requisito obrigatório para rodar este projeto:
- Docker;
- Usar um host UNIX;## Instalação
### Clone do Repositório
Abra seu terminal e faça o clone deste projeto:
```bash
$ git clone [email protected]:dersonsena/send4-challenge.git
```### Arquivo `.env`
Entre no diretório do projeto e faça uma cópia do `.env.example` renomeando para `.env` e preencha as variáveis de ambiente:
```bash
$ cd send4-challenge
$ cp .env.example .env
```No arquivo `.env` já é sugerido alguns valores para algumas variáveis de ambiente, mas, fique a vontade para alterá-las de acordo com seu ambiente.
### Variáveis de Ambiente
Algumas variáveis de ambiente devem ser configuradas para que você consiga subir a API em sua máquina.
No parâmetro abaixo coloque uma senha de sua preferência para o usuário root do MySQL Server:
```
DB_PASSWORD=secret
```A API é integrada com uma loja do Shopify e para essa integração funcionar é necessário informar a `API KEY` e o `PASSWORD`. Você pode acessar esses valores no [Documento de Requisitos](/documento-requisitos.pdf) para poder preencher no seu arquivo `.env`.
```
SHOPIFY_API_KEY=
SHOPIFY_PASSWORD=
```Alguns endpoints precisam fazer envio de e-mail e para isso precisamos configurar algumas informações para ter êxito. Eu criei uma conta no [Mailtrap](https://mailtrap.io) para poder usar neste teste, então, você pode usar as credenciais abaixo:
```
MAIL_PORT=2525
MAIL_USERNAME=ed8e4adb29a1d4
MAIL_PASSWORD=f528c4edabe064
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="Send4 Notifications"
```### 4 - Fazendo setup
Execute o comando abaixo para ser executado uma espécie de pipeline de instalação e configuração do projeto:
```bash
$ make setup
```Se ocorrer tudo certo durante o setup os containers docker já estarão de pé e prontos para serem consumidos
> **IMPORTANTE:** ao terminar o setup o serviço de filas do laravel ficará sendo executando em background. Você poder cancelar esse processo com `CTRL + C` e para subir novamente o serviço basta executar o comando `make queueWork`.
## Enpoints
Foi utilizado a convenção do [JSEnd](https://github.com/omniti-labs/jsend) para padronizar todos os payloads dos serviços. Dessa forma fica mais fácil e organizado para quem vai consumir essa API tratar as informações.
### Login
URL: `GET /api/auth/[email protected]&password=admin`
> **IMPORTANTE:** ao consumir esse serviço, você deverá pegar o Token JWT de autenticação para serem informados nos outros serviços
### Me
URL: `GET /api/users/me`
Header: `Authorization Bearer `
### Register
URL: `POST /api/users/register`
Header: `Authorization Bearer `
Body: `{"name": "José da Silva", "email": "[email protected]", "password": "123456"}`
### My Favorites
URL: `GET /api/products/favorites`
Header: `Authorization: Bearer `
### Favorite Product
URL: `POST /api/products/favorite/`
Header: `Authorization: Bearer `
### Disfavor Product
URL: `POST /api/products/disfavor/`
Header: `Authorization: Bearer `
## Tests
Para executar os testes de integração do projeto, basta executar o comando:
```bash
$ make test
```Para melhorar ainda mais a leitura dos testes, foi configurado um [Printer personalizado](https://github.com/mikeerickson/phpunit-pretty-result-printer). Você deverá ver um resultado como o da screenshot abaixo:
![PHPUnit Output](/resources/docs/phpunit-output.jpg)
A relatório de cobertura por ser visto pela URL:
```
http://localhost:8001/coverage-report/index.html
```## GitFlow
Foi utilizado a convenção do GitFlow para organização das branches. As branches podem ser vistas aqui no repositório como é ilustrado abaixo:
![PHPUnit Output](/resources/docs/gitflow.png)
## Sobre o Makefile
Eu desenvolvi um script [makefile](/makefile) que só dá para ser usando nativamente em hosts UNIX. Eu uso esse script para executar rapidamente comandos dentro dos container Docker me tornando um pouco mais produtivo em comandos rotineiros. Vide exemplo abaixo:
```bash
$ make migrate
```Esse script irá executar o comando abaixo.
```
$ docker exec -it ${DOCKER_APP_SERVICE_NAME} php artisan migrate
```A variável de ambiente `${DOCKER_APP_SERVICE_NAME}` representa o nome do serviço relacionado ao servidor web onde estará rodando a API que pode ser visto no seu arquivo `.env`.