An open API service indexing awesome lists of open source software.

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.

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/).