Neste projeto, foi desenvolvida uma API para gerenciar uma concessionária de veículos utilizando typeScript e POO em uma arquitetura MSC (Model, Service, Controller) além de testes unitários.
Foi desenvolvida uma aplicação em Node.js com typeScript usando o ODM (Object Data Modeling) mongoose para fazer um CRUD (create, read, update, delete) de veículos em um banco de dados MongoDb respeitando os princípios do REST. Para segurança da aplicação, foram feitos testes unitários nas camadas Controller, Service e Models utilizando Mocha e Chai.
Ver rotas
- POST
/carspara cadastrar novo carro. Utilize um body nesse formato:
{
"model": "Batmobile",
"year": 2021,
"color": "black",
"buyValue": 36500000,
"seatsQty": 2,
"doorsQty": 2
}- POST
/motorcyclespara cadastrar uma nova moto. Utilize um body nesse formato:
{
"model": "batcycle",
"year": 2016,
"color": "black",
"buyValue": 12000000,
"category": "Custom",
"engineCapacity": 2500
}- GET
/carstraz todos os carros cadastrados.
- GET
/cars/:idtraz o carro correspondente ao id enviado se ele existir no banco de dados.
- GET
/motorcyclestodas as motos cadastradas.
- GET
/motorcycles/:idtraz a moto correspondente ao id enviado se ele existir no banco de dados.
- PUT
/cars/:idpara atualizar o carro com o id informado. Utilize um body nesse formato:
{
"_id": "4edd40c86762e0fb12000003",
"model": "the Mean Machine",
"year": 1968,
"color": "purple",
"buyValue": 15000,
"seatsQty": 2,
"doorsQty": 2
}- PUT
/motorcycles/:idpara atualizar o carro com o id informado. Utilize um body nesse formato:
{
"_id": "4edd40c86762e0fb12000003",
"model": "Hell Cycle",
"year": 2007,
"color": "silver",
"buyValue": 6500000,
"category": "Custom",
"engineCapacity": 1000
}- DELETE
/cars/:iddeleta o carro com o id correspondente ao enviado caso exista.
- DELETE
/motorcycles/:iddeleta a moto com o id correspondente ao enviado caso exista.
Pré-requisitos
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:
É recomendado utilizar algum cliente HTTP, como Postman ou o Insomnia.
Também é bom ter um editor para trabalhar com o código como VSCode.
Clone o repositorio
git clone git@github.com:TonyyCruz/car-shop.git🐳 Rodando no Docker
Rode o serviço na raiz do projeto o comando
docker-compose up -d-
Lembre-se de parar o
mongose estiver usando localmente na porta padrão(27017), ou adapte, caso queria fazer uso da aplicação em containers. -
Esse serviço irá inicializar dois containers chamados car_shop e outro chamado car_shop_db.
-
O back-end ficará acessível em
http://localhost:3001 -
O front-end ficará acessível em
http://localhost:3000 -
A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code.
Via CLI use o comando
docker exec -it car_shop bash- Ele te dará acesso ao terminal interativo do container car_shop criado pelo compose, que está rodando em segundo plano.
Instale as dependências dentro do container com
npm install💻 Rodando Localmente
Instale as dependências com o comando
npm install- Para rodar o projeto desta forma, obrigatoriamente você deve ter o
nodeinstalado em seu computador.- Recomenda-se a versão
^16
- Recomenda-se a versão
Scripts
- Iniciar o servidor:
npm run dev- Iniciar rodar os testes:
npm run test:dev- Verificar cobertura dos testes:
npm run test:coverage