Nesse projeto foi desenvolvida uma API REST e um banco de dados para gerenciamento de um loja de veículos.
Foram implementados endpoints que realizam um CRUD e gerenciam os carros e motos disponíveis.
O objetivo principal foi de exercitar os conhecimentos sobre Typscript, Orientação a Objetos (POO), classes de domínio, interfaces e enum, banco de dados NoSQL MongoDB com modelagem pelo Mongoose, além da implementação de middleware de erros e os conceitos da arquitetura MSC (Model, Service e Controller).
O desenvolvimento desse projeto foi realizado durante o curso de Desenvolvimento Web na Trybe!
Clone o repositório: git clone git@github.com:fa-biano/car-shop.git
.
Rodando com Docker 🐳 ou Localmente
⚠ Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com 1.26.0
por 1.29.2
.
Rode os serviços
node
emongoDB
com o comandodocker-compose up -d
.
- Esses serviços irão inicializar um container chamado
car_shop
e outro chamadocar_shop_db
. - A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code.
ℹ️ Use o comando
docker exec -it car_shop bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
ℹ️ Instale as dependências [Caso existam] com
npm install
- ⚠ Atenção: Caso opte por utilizar o Docker, TODOS os comandos disponíveis no
package.json
(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comandodocker exec
citado acima.
ℹ️ Instale as dependências [Caso existam] com
npm install
- ✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o
node
instalado em seu computador. - ✨ Dica: O projeto espera que a versão do
node
utilizada seja a 16.
ℹ️ Após seguir os passos de como rodar o projeto citados acima
Renomeie o arquivo .env.example
para .env
.
Instale as dependências npm install
Suba os containers do docker compose docker compose up -d
O projeto está rodando na porta 3001
. Seguem as rotas que podem ser acessadas:
/cars
:
- POST: cria novo carro;
- GET: lista os carros cadastrados;
- GET: /cars/:id
traz as informações do carro conforme id;
- PUT: /cars/:id
atualiza as informações do carro conforme id;
- DELETE: /cars/:id
exclui o carro conforme id;
/motorcycles
:
- POST: cria nova moto;
- GET: lista as motos cadastradas;
- GET: /cars/:id
traz as informações da moto conforme id;
- PUT: /cars/:id
atualiza as informações da moto conforme id;
- DELETE: /cars/:id
exclui a moto conforme id;
Utilize o seu client preferido para testar as rotas acima.
Lembre-se se enviar o body da requisição com as chaves previstas nos contratos das interfaces ICar
e IMotorcycle
.
Back-end: Typescript, Orientação a Objetos (POO), Node.js e Express
Banco de Dados: NoSQL MongoDB e Mongoose (ODM)
Testes: Mocha, Chai, Sinon
Arquitetura: Camadas (Model, Service, Controller)