https://github.com/trkotovicz/mongoose-car-shop
O Car Shop é uma API que gerencia uma concessionária de veículos. API feita em TypeScript com arquitetura MSC, aplicando POO e utilizando o banco de dados MongoDB.
https://github.com/trkotovicz/mongoose-car-shop
api api-rest chai docker express javascript jwt-authentication mocha mocha-chai mongodb mongoose msc nodejs poo sinon typescript zod
Last synced: about 2 months ago
JSON representation
O Car Shop é uma API que gerencia uma concessionária de veículos. API feita em TypeScript com arquitetura MSC, aplicando POO e utilizando o banco de dados MongoDB.
- Host: GitHub
- URL: https://github.com/trkotovicz/mongoose-car-shop
- Owner: trkotovicz
- Created: 2022-09-16T18:26:56.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-09-20T16:09:52.000Z (over 2 years ago)
- Last Synced: 2025-01-30T07:44:07.638Z (3 months ago)
- Topics: api, api-rest, chai, docker, express, javascript, jwt-authentication, mocha, mocha-chai, mongodb, mongoose, msc, nodejs, poo, sinon, typescript, zod
- Language: TypeScript
- Homepage:
- Size: 180 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Car Shop
O Car Shop é uma API que gerencia uma concessionária de veículos.
Trata-se de uma API TypeScript na arquitetura MSC, aplicando os pilares de POO e utilizando o ODM Mongoose para se conectar com um banco de dados MongoDB.## Habilidades
Nesse projeto, fui capaz de:
- Aplicar os pilares da Programação Orientada a Objetos (POO) e SOLID: Herança, Abstração, Encapsulamento e Polimorfismo;
- Desenvolver uma API REST utilizando a arquitetura de software MSC (Model-Service-Controller);
- Exercitar a criação e utilização de Interfaces;
- Implementar, em TypeScript: Classes, Instâncias, Atributos, Métodos e Objetos;
- Aplicar os conhecimentos de MongoDB e Typescript para criar uma API com CRUD;
- Utilizar o framework Express, e a ODM Mongoose;
- Desenvolver testes unitários com 100% de cobertura, utilizando Chai, Mocha e Sinon;## Inicialização via Docker 🐳
1. Clone o repositório `[email protected]:trkotovicz/mongoose-car-shop.git`
2. Na raíz do repositório rode o comando `docker-compose up -d`
3. Entre o terminal do container criado `docker exec -it car_shop bash`
4. Instale as dependências do projeto com `npm install`
5. Inicie a aplicação dentro do container `npm start`O servidor vai estar rodando na porta local 3000 (http://localhost:3000).
Utilize o cliente de requisições HTTP de sua preferência para fazer as requisições.## Rotas
POST /cars
Nessa rota você pode cadastrar um novo carro.
Para isso, utilize o formato abaixo no body da requisição:
```json
{
"model": "Ferrari Maranello",
"year": 1963,
"color": "red",
"buyValue": 3500000,
"seatsQty": 2,
"doorsQty": 2
}
````http://localhost:3000/cars`
GET /cars
Esse endpoint retorna uma lista com todos os carros cadastrados.`http://localhost:3000/cars`
GET /cars/id
Esse endpoint retorna um carro específico através de seu id.
Para isso, substitua o `id` do endpoint, pelo id do carro que você deseja buscar.
`http://localhost:3000/cars/id`PUT /cars/id
Esse endpoint é responsável pela alteração de um carro específico.
Para isso, substitua o `id` do endpoint, pelo id do carro que você deseja alterar.
O corpo da requisição deve ter o seguinte modelo:
```json
{
"model": "Fiat Uno",
"year": 1963,
"color": "blue",
"buyValue": 3500,
"seatsQty": 4,
"doorsQty": 4
}
```
`http://localhost:3000/cars/id`DELETE /cars/id
Esse endpoint deleta um carro específico através de seu id.
Para isso, substitua o `id` do endpoint, pelo id do carro que você deseja excluir.
`http://localhost:3000/cars/id`POST /motorcycles
Nessa rota você pode cadastrar uma motocicleta nova.
Para isso, utilize o formato abaixo no body da requisição:
```json
{
"model": "Honda CG Titan 125",
"year": 1963,
"color": "red",
"buyValue": 3500,
"category": "Street",
"engineCapacity": 125
}
```
`http://localhost:3000/motorcycles`GET /motorcycles
Esse endpoint retorna uma lista com todas as motos cadastradas.`http://localhost:3000/motorcycles`
GET /motorcycles/id
Esse endpoint retorna uma moto específica através de seu id.
Para isso, substitua o `id` do endpoint, pelo id da motocicleta que você deseja buscar.
`http://localhost:3000/motorcycles/id`PUT /motorcycles/id
Esse endpoint é responsável pela alteração de uma moto específica.
Para isso, substitua o `id` do endpoint, pelo id da motocicleta que você deseja alterar.
O corpo da requisição deve ter o seguinte modelo:
```json
{
"model": "Honda CG Titan 125",
"year": 1963,
"color": "black",
"buyValue": 3500,
"category": "Street",
"engineCapacity": 125
}
```
`http://localhost:3000/motorcycles/id`DELETE /motorcycles/id
Esse endpoint deleta uma motocicleta específica através de seu id.
Para isso, substitua o `id` do endpoint, pelo id da moto que você deseja excluir.
`http://localhost:3000/motorcycles/id`---
Projeto desenvolvido por [Thais R Kotovicz](https://www.linkedin.com/in/thaiskotovicz/).