“O amor é apenas uma reação química.”!
Configurações | Sobre o projeto | API | Licença
Este projeto foi construido utilizando Clean Architecture. Existem vários aspectos que podem ser melhorados no entanto ele consegue passar de modo satisfatório uma visão bem abrangente da arquitetura.
Dotenv (click to show)
O serviço depende do arquivo .env
que pode ser criado a partir do existente .env.sample
presente na raiz do projeto.
cp .env.sample .env
Scripts (click to show)
Somente os principais scripts estão documentados nessa sessão, para executalos faça:
npm run start:dev
SCRIPTS
Nome | Descrição |
---|---|
build:swc | Compila o projeto usando a biblioteca SWC da Vercel |
start:dev | Sobe o serviço com hot-reload |
start:bff-products | Sobe o serviço de cadastro de produtos |
start:bff-sellers | Sobe o serviço de cadastro de vendedores |
test | Roda os testes |
Docker 🐳 (click to show)
O Docker é um recurso importante neste projeto pôs é nele que subimos serviços auxiliares como banco de dados, você deve te-lo instalado no seu ambiente para poder usa-lo.
Na raiz do projeto existe um arquivo docker-compose.yml
responsável pelos serviços de suporte responsáveis pelo bom funcionamento do programa, todas as variáveis ambientes estão presentes em .env
.
# Subir os serviços e manter o term travado
docker-compose up
# Subir os serviços em segundo plano
# docker-compose up -d
O QUE VAMOS ENCONTRAR (click to show)
- Padrões de Projeto
- Clean Arch
- Hexagonal Arch
- Factory
- Repository
- Strategy
- Dependency Inversion
- Backend For Frontend (BFF)
- Command and Query Responsibility Segregation (CQRS)
- Boa Práticas
- SOLID
- DDD
- Miscelânea
- Nestjs
- Express
- Cache
- Swagger
- TypeORM
- MikroORM
- Docker
- Banco de Dados
- Postgres
- MongoDB
- SQLite3
IMPORTANTE 1: O projeto apresenta um arquivo de importação para as suas APIs de modo a facilitar os testes, como requisito é necessário possuir o programa insomnia instalado no ambiente. A importação das rotas para o insomnia é feito usando o botão roxo Run In Insomnia
presente no topo da página.
IMPORTANTE 2: O Suporte do docker contempla somente a parte de serviços necessários para o projeto funcionar isso por que se trata de configuração para desenvolvimento e não produção.
IMPORTANTE 3: Existe dois recursos de BFF presentes para exemplificar o funcionamento de serviços em paralelo consimundo do mesmo core
, usecases
e repositories
. Esses serviços funcionam independentes uns dos outros e alimentam a mesma base de dados bruta (relacional), no entanto, a API principal também alimenta uma base de dados de log (nosql) que é acessível a nível de BFF. Vale resaltar que a estratégia de log vem para da força a estratégia de cache nas concultas, os BFFs tem acesso aos mesmos dados só que vindos do banco de dados bruta.
No terminal faça:
npm install
Suba os serviços auxiliares do projeto com docker:
docker-compose up
Execute os serviços principais do projeto:
npm run start:dev
# não é requisito rodar os BFFs
npm run start:bff-products
npm run start:bff-sellers
É necessário que o docker esteja levantado, no terminal faça:
npm test
#GET http://localhost:3331/sellers
- Consulta de vendedores, é possível utilizar um filtrocode
como parametro da consulta;#POST http://localhost:3331/sellers
- Rota para cadastrar novos vendedores;
{
"seller": {
"name": "anna"
}
}
OBS: No caso do cadastro para sellers
é possível informar o parametro code
manualmente, entretanto, na ausencia o mesmo é criado automaticamente.
#GET http://localhost:3332/products
- Consulta produtos, deve-se informarprice
intervalo separado por virgula (e.g 5.9,9.9), ou,slug
referente a um produto cadastradol#POST http://localhost:3332/products
- Rota para cadastrar novos produtos;
{
"product": {
"brand": "Esporte Fino",
"name": "Calça",
"price": 59.9
}
}
#GET http://localhost:3333/products
- Permite recuperar todos os produtos cadastrados.#GET http://localhost:3333/products/:slug
- Permite recuperar um produto especifico pelo slug.#POST http://localhost:3333/products
- Rota de cadastro para novos produtos.
{
"brand": "Moda Praia",
"name": "Biquine",
"price": 9.9
}
#GET http://localhost:3333/sale-products
- Rota para consultar vendas, por ela é possível saber o vendedor e o produto de uma venda.
IMPORTANTE: Essa API possui a maior quantidade de filtros de consulta sendo possível intercalar um e outro para obter melhores resultados, segue exemplo com query_string
http://localhost:3333/sale-products?
productName=Shirt&
productPrice=50,60&
productBrand=fine%20knit&
productSlug=fine-knit_shirt&
sellerCode=6443&
sellerName=vini2
#POST http://localhost:3333/sale-products
- Rota para cadastrar uma venda, por ela deve informar o código do vendedor eo slug do produto.
{
"seller_code": 3768,
"product_slug": "moda-praia_biquine"
}
Copyright (c) 2023-present