Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/adolligit/car-shop

Car Shop é um projeto idealizado pela escola @Tryber e desenvolvido pelos alunos (como eu). É uma API REST desenvolvida em TypeScript que utiliza o ODM Mongoose para consultar o banco de dados não relacional MongoDB.
https://github.com/adolligit/car-shop

api api-rest backend docker expressjs mongodb nodejs oop oop-principles openapi-documentation openapi3 solid typescript

Last synced: 30 days ago
JSON representation

Car Shop é um projeto idealizado pela escola @Tryber e desenvolvido pelos alunos (como eu). É uma API REST desenvolvida em TypeScript que utiliza o ODM Mongoose para consultar o banco de dados não relacional MongoDB.

Awesome Lists containing this project

README

        

Car Shop

Car Shop é uma *API Rest* que consulta o banco de dados não relacional MongoDB através do *ODM* Mongoose.

Esta API é um *CRUD* feito com os princípios da *Programação Orientada á Objetos (POO)* e seu propósito é simular o gerenciamento de um sistema de uma concessionária de veículos.

Este projeto foi desenvolvido em **Node.js + Express.js + TypeScript**, utilizando **Mongoose.js** para comunicação com o banco de dados **MongoDB**. Além disso, foram realizados testes nas camadas *Model, Controller e Service* com **Mocha + Chai + Sinon**.

## Como eu faço para executar este projeto?
Primeiro de tudo, clone o projeto na sua máquina local e entre na pasta do projeto:
```bash
git clone [email protected]:Adolligit/car-shop.git && cd ./car-shop
```
Depois instale as dependências:
```bash
npm install
```
### Instalação
🚨 As versões descritas nas instalações são **fortemente recomendadas**. No entanto, caso queira tentar em uma versão diferente, considere a possível aparição de erros durante a execução do projeto.

Escolha abaixo um tipo de instalação:

Instalar com Docker 🐳
Requisitos
Você deve possuir as seguintes ferramentas:


  • Docker: v24.0.2

  • Docker Compose: v2.19.0

⚠️ Se você estiver usando **Linux**, desative o **MongoDB** localmente para evitar conflitos de porta:
```bash
systemctl stop mongod
```


1. Crie e inicie os contêiners:
```bash
docker compose up -d
```
2. Entre no contêiner da aplicação:
```bash
docker exec -it car_shop bash
```
---

Instalar localmente 💻
Requisitos
Você deve possuir as seguintes ferramentas:


  • npm: v9.6.7

  • Node: v20.3

  • MongoDB: v6.0

Se você usa **Linux**, verifique se o serviço do **MongoDB** esta ativo:
```bash
systemctl status mongod
```
Caso esteja desativado, substitua **status** por **start** no comando acima.


1. Crie o arquivo .env na pasta raiz
```bash
touch .env
```

2. Copie e cole as informações a seguir:

```bash
# MongoDB
MDB_URI=
MDB_HOST=127.0.0.1
MDB_PORT=27017
MDB_NAME=CarShop

# API
API_PORT=3001
```
> 🗣️(Dica): Você pode conectar a aplicação com um banco remoto, adicionado a URI do banco em **MDB_URI**.


### Execução
⚠️ Os comandos a seguir podem ser executados dentro do Container ou localmente.

Iniciar o projeto em modo de desenvolvimento (com **nodemon**):
```bash
npm run dev
```

Executar a cobertura de testes:
```bash
npm run test:dev
```

Executa os testes e depois criar a pasta **./coverage** que contém um relatório:
```bash
npm run test:coverage
```
> 🗣️(Dica): Utilizando a extensão **Live Server** no Visual Studio Code, você poderá visualizar a página com o relatório navegando até pasta criada e abrindo o arquivo **index.html** no navegador.

Executar o **ESLint** para verificar os erros do código estático:
```bash
npm run lint
```

## Testando o CRUD
Você pode utilizar qualquer Client API para testar o Car Shop, contudo, eu disponibilizei a documentação com OpenAPI (Swagger) para que você saiba quais rotas existem dentro do projeto e como testa-las.

Desta forma, quando a API estiver em execução, você poderá visitar http://127.0.0.1:3001/v1/docs/ e visualizar a página da documentação e testar a API.

NodeJs

> 🗣️(Dica): O banco de dados não esta populado. Portanto é uma boa ideia começar cadastrando os dados.

## Linguagens e ferramentas:


NodeJs
Express
TypeScript
Mongoose
Mongo
Mocha
Chai
Sinon

## Agradecimento
Agradeço a [@tryber](https://github.com/tryber) pela idealização do projeto, pois desta forma foi possível colocar em prática meus conhecimentos sobre a criação de API Rest e foi, sem dúvida, uma experiência de projeto extremamente importante para o meu desenvolvimento profissional.