Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thiagomartins367/trybe-project-car-shop
Projeto de desenvolvimento de uma API Rest, com CRUD, para gerenciar uma concessionária de veículos utilizando o banco de dados MongoDB. :department_store: :blue_car: :car: :pickup_truck:
https://github.com/thiagomartins367/trybe-project-car-shop
docker eslint expressjs jest mongodb mongoose nodejs typescript
Last synced: 9 days ago
JSON representation
Projeto de desenvolvimento de uma API Rest, com CRUD, para gerenciar uma concessionária de veículos utilizando o banco de dados MongoDB. :department_store: :blue_car: :car: :pickup_truck:
- Host: GitHub
- URL: https://github.com/thiagomartins367/trybe-project-car-shop
- Owner: thiagomartins367
- Created: 2023-03-08T20:22:01.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-03-08T21:37:57.000Z (over 1 year ago)
- Last Synced: 2024-04-23T20:33:14.167Z (7 months ago)
- Topics: docker, eslint, expressjs, jest, mongodb, mongoose, nodejs, typescript
- Language: TypeScript
- Homepage:
- Size: 283 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Boas-vindas ao repositório do projeto Car Shop!
Este projeto foi desenvolvido durante o período de Curso da Trybe :rocket:
O projeto tem por objetivo a avaliação e prática dos conhecimentos adquiridos na Trybe, visando o cumprimento do requisitos solicitados.
---
# Descrição
Nesse projeto, foi aplicado os princípios de Programação Orientada a Objetos (`POO`) para a construção de uma API com `CRUD` para gerenciar uma concessionária de veículos.
Isso foi feito utilizando o banco de dados `MongoDB`.# Orientações
🎛 Linter
Para fazer a análise estática do código neste projeto, foi utilizado o linter [ESLint](https://eslint.org/). Assim o código estará alinhado com as boas práticas de desenvolvimento, sendo mais legível e de fácil manutenção!
- Este projeto já vem com as dependências relacionadas ao _linter_ configuradas no arquivo `package.json`
- Para poder rodar o `ESLint` basta executar o comando `npm install` dentro do projeto e depois `npm run lint`.
- Se a análise do `ESLint` encontrar problemas no código, eles serão mostrados no terminal.
- Se não houver problema no código, nada será impresso no terminal.
🛠 Testes
Para executar os testes localmente, digite no terminal o comando `npm test`.
👀**De olho na dica**: especialmente no início, quando a maioria dos testes está falhando, a saída após executar os testes é bastante poluída. Desabilite temporariamente um teste utilizando a função `skip` junto à função `describe`. Como o nome indica, a função a seguir "pula" um teste:
```typescript
describe.skip('...', () => {})```
🐳 Como subir o banco do MongoDB usando Docker
Caso não tenha o MongoDB instalado na máquina e deseje usar o Docker, é só seguir os passos a seguir:
1. Baixe a imagem do MongoDB:
```sh
docker pull mongo
```2. Crie o contêiner do MongoDB:
```sh
docker run --name -p 27017:27017 -d mongo
```3. Confira se o contêiner está rodando:
```sh
docker ps
```
🐳 Rodando no Docker vs Localmente
## Docker
> Rode os serviços `node` e `mongodb` com 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
- Esses serviços irão inicializar um container chamado `car_shop` e outro chamado `car_shop_db`.
- A partir daqui pode-se rodar o container `car_shop` via CLI ou abri-lo no VS Code.> Use o comando `docker exec -it car_shop bash`.
- Ele 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 comando `docker exec` citado acima.⚠ Atenção ⚠ O **git** dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.
⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, o que pode acarretar conflito devido às versões alteradas.
## Localmente
> Instale as dependências [**Caso existam**] com `npm install`
⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, o que pode acarretar conflito devido às versões alteradas.✨ **Dica:** Para rodar o projeto desta forma, é obrigatoriamente ter o `node` instalado no computador.
✨ **Dica:** A versão do `node` utilizada tanto no desenvolvimento quanto no `Dockerfile` é a 16.
👷 Estruturação do projeto
## Estrutura das pastas dentro de `src`
![Estrutura de arquivos](./public/folder_structure.png)
### Arquivos de exemplo
Dentro da pasta `src` foram deixados alguns arquivos de exemplo sendo eles:
- `src/index.example.ts`
✅ Arquivos prontos para uso
- O arquivo `src/connection.ts` possui o código necessário para realizar a conexão com o banco de dados:
```typescript
import mongoose from 'mongoose';const MONGO_DB_URL = 'mongodb://localhost:27017/CarShop';
const MONGO_DB_URL = 'mongodb://mongodb:27017/CarShop';const connectToDatabase = (
mongoDatabaseURI = process.env.MONGO_URI
|| MONGO_DB_URL,
) => mongoose.connect(mongoDatabaseURI);export default connectToDatabase;
```
- O arquivo `src/app.ts` contém o código necessário para subir o servidor:
```typescript
import express from 'express';const app = express();
export default app;
```
⚠️**Importante**: é muito importante que o arquivo `src/app.ts` exporte uma instância do `app express` para que os testes funcionem. ⚠️**
🔥⚠️ Tenha atenção para os seguintes pontos: ⚠️🔥
➡️ A conexão do banco local contida no arquivo `src/connection.ts` deverá estar na seguinte variável, ou no `.env`:
```typescript
const MONGO_URI = 'mongodb://localhost:27017/CarShop';
```