🔍 Navegação dentro do Readme.
Este projeto é uma API Restfull de vendas que está sendo feita para por em prática os conhecimentos das tecnologias no backend. As funcionalidades presentes são, cadastrar usuários, clientes, pedidos dos clientes e cadastrar produtos. O projeto foi desenvolvido com Design Patterns seguindo alguns dos princípios do SOLID, desacoplando totalmente a regra de negócio dos dados de infraestrutura, como por exemplo: (typeorm, repository, entity, http-routes, controllers), possibilitando fácil manutenção e troca de ORMs. Usamos também algumas libs como tsyringe que permite a criação de injeção de dependência que é muito util para mater o código desacoplado. Assim como a lib rate-limiter-flexible que serve para prevenir ataques de força bruta e entre outras...
O projeto foi hospedado em um droplet Docker 19.03.12 no Ubuntu 20.04 na Digital ocean, foi usado também Certbot para gerar o certificado SSL, onde podemos testar API com a documentação do swagger aqui. E para configuração de DNS foi utilizado o servicos da Cloudflare e a biblioteca Nginx para fazer proxy reverso e habilitar comunicação externa.
No projeto temos duas branches, a master e a main. A branch master é uma evolução do branch main onde tem toda estrutura do desenvolvimento com Design Patterns e principios SOLID.
➡ Insominia para testar a api feita.
➡ Typeorm para conectar com diversos bancos de dados.
➡ Docker-compose para utilizar container do Redis e postgresql . ➡ Redis para fazer cache da aplicação . ➡ SES da AWS para envio de email. ➡ s3 da AWS para serviço de upload. ➡ Zoho E-mail E-mail profissional ➡ swagger-ui-express para documentar e testar api. ➡ Jest para testes automatizados➡ Digital ocean para hospedar a plicação
➡ Cloudflare para configuração de dns
➡ Registro.br para compra de dominio
➡ Certbot Certificado ssl com letsencrypt
➡ Nginx para fazer o proxy reverso➡ NodeJS
➡ Instalar o NodeJS na sua máquina.
➡ Vá no cmd dele(no Vscode o nome é "terminal") ou abra o cmd da sua máquina, digite e execute:
git clone https://github.com/NatanSiilva/api-vendas.git
➡ Entre na pasta do projeto(a que acabou de clonar), digite e execute:
yarn
Pronto, agora que temos todas as dependencias instaladas podemos configurar arquivo .env.
APP_SECRET= Aqui vai uma hash da sua escolha
APP_API_URL=http://localhost:3333 Url para cessar a aplicação
APP_WEB_URL=http://localhost:3000 Url para testar o email fake Ethereal
REDIS_HOST= pode ser configurado no arquivo docker-comose.yml
REDIS_PORT= Pode ser configurado no arquivo docker-comose.yml
REDIS_PASS= pode ser configurado no arquivo docker-comose.yml
# Mail config: ethereal or ses
MAIL_DRIVER=ses
# Storage Config: disk or s3
STORAGE_DRIVER=disk
# AWS Credentials
# Nessa configuração você vai ter que criar uma conta na aws
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
OBS: para que você venha utilizar rota POST/users/forgot e POST/users/reset você precisa criar uma conta na AWS e fazer algumas configurações com SES (Amazon Simple Email Service), onde só é possível testar com um e-mail verificado. Em breve estarei fazendo um artigo sobre, enquanto isso não acontece fico a disposição para ajudar.
Depois de configurar o .env, precisamos apenas renomear o ormconfig.example.json para ormconfig.json e executar o seguinte comando:
docker-compose up - para iniciar o container do postgresql e redis.
docker-compose stop - para parar o processo
docker-compose down - para excluir os container
❤ Pronto, seu projeto está certinho para funcionar.
Algum erro? Contate-me.
Para rodar os teste basta executar o comando yarn test, OBS: os testes não estão 100% concluidos. Para ver o andamento dos teste da aplicação em porcentagem como ta na imagem abaixo, vá na pasta coverage na raiz do projeto e no arquivo index.html clique com o botão direito e selecionar a opção Open With Live Serve que vai abrir uma tela no browser com as informações dos testes.
yarn test
Você pode ta utilizado a documentação no swagger e na rota POST /users, bastar criar um usuário com name, email e password. Em seguida se autenticar na rota POST /sessions. Logo a pois a autenticação vai retornar um objeto e dentro dele vai ter um campo token, é só copiar o token e na parte superior da página vai ter um cadeado com o nome Authorize, é só clicar nele e colar o token e você vai ta pronto para testar todas as rotas.
{
"name": "Lucas05",
"email": "lucas05@email.com",
"password": "123456"
}
1° - Faça um Fork do repositório;
2° - Clone o repositório;
3° - Crie uma branch com a sua feature;
4° - Faça um commit bem descritivo com suas mudanças;
5° - Dê 'Push' a sua branch;
6° - Ir em Pull Requests do projeto original e criar uma pull request com o seu commit;
➡ Caso tenha dúvidas sobre como criar um pull request, clique neste link.
Este projeto esta sobe a licença MIT. Veja a LICENÇA para saber mais.
Feito com ❤️ por Natanael Silva 👋🏽