Skip to content

Repository files navigation

Projeto Car Shop

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.

📃 Sobre o Projeto

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.


Rotas utilizáveis

Ver rotas
  • POST /cars para cadastrar novo carro. Utilize um body nesse formato:
{
  "model": "Batmobile",
  "year": 2021,
  "color": "black",
  "buyValue": 36500000,
  "seatsQty": 2,
  "doorsQty": 2
}

  • POST /motorcycles para cadastrar uma nova moto. Utilize um body nesse formato:
{
  "model": "batcycle",
  "year": 2016,
  "color": "black",
  "buyValue": 12000000,
  "category": "Custom",
  "engineCapacity": 2500
}

  • GET /cars traz todos os carros cadastrados.

  • GET /cars/:id traz o carro correspondente ao id enviado se ele existir no banco de dados.

  • GET /motorcycles todas as motos cadastradas.

  • GET /motorcycles/:id traz a moto correspondente ao id enviado se ele existir no banco de dados.

  • PUT /cars/:id para 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/:id para 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/:id deleta o carro com o id correspondente ao enviado caso exista.

  • DELETE /motorcycles/:id deleta a moto com o id correspondente ao enviado caso exista.


🛠 Tecnologias e Bibliotecas utilizadas no desenvolvimento do projeto


🚀 Como executar o projeto

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

Com Docker

Rode o serviço na raiz do projeto o comando

  docker-compose up -d
  • Lembre-se de parar o mongo se 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

⚠️Atenção: Caso opte por utilizar o Docker, TODOS os scripts disponíveis no package.json devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec.


💻 Rodando Localmente

Instale as dependências com o comando

npm install
  • Para rodar o projeto desta forma, obrigatoriamente você deve ter o node instalado em seu computador.
    • Recomenda-se a versão ^16

⚠️Atenção: Não esqueça de renomear/configurar o arquivo .env.example


💡 Scripts prontos

Scripts
  • Iniciar o servidor:
  npm run dev
  • Iniciar rodar os testes:
  npm run test:dev
- Verificar cobertura dos testes:
  npm run test:coverage


About

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.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages