Skip to content

Latest commit

 

History

History
353 lines (240 loc) · 10 KB

README_pt-br.md

File metadata and controls

353 lines (240 loc) · 10 KB

Projeto Car Shop 🚙🛵

🇺🇸 Click here to access the English version.

Sumário

  1. Sobre o Projeto
  2. Tecnologias
  3. Funcionalidades
  4. Como Executar o Projeto
  5. Endpoints
  6. Sobre a Trybe
  7. Contato

Sobre o Projeto

Projeto 27 do curso de Desenvolvimento Web da Trybe.

Neste projeto, foi desenvolvida uma API para gerenciamento de uma concessionária de veículos, que permite realizar as operações de criação, visualização, atualização e deleção (CRUD) de carros e motos.

A aplicação foi desenvolvida utilizando Node.js e TypeScript, e o banco de dados escolhido foi o MongoDB. A conexão com o banco de dados foi feita através do framework Mongoose, ODM (Object-Document Mapping) que facilita as interações com o MongoDB.

Para garantir a qualidade do código, foram aplicados princípios importantes de desenvolvimento de software, como POO (Programação Orientada a Objetos), SOLID e DDD (Domain Driven Design). Com isso, a aplicação torna-se mais escalável e performática.

Para assegurar que o código funcione adequadamente, foram criados testes unitários com a abordagem BDD (Behavior-driven development). Esse processo garante que a aplicação esteja sempre em bom estado e pronta para receber atualizações.


Tecnologias

💻 Desenvolvimento

🧪 Testes

✨ Alinhamento e qualidade de código


Funcionalidades

  • Criar, listar, atualizar e deletar carros.
  • Criar, listar, atualizar e deletar motos.

Como Executar o Projeto

Para rodar o projeto, siga os passos abaixo.

  1. Clone o repositório;
git clone [email protected]:garciaagui/car-shop.git
  1. Navegue até a raiz do projeto;
cd car-shop/

🔘 Agora, decida se o projeto será rodado localmente ou via Docker.

💽 Localmente
  1. Certifique-se que você tenha o node instalado na versão 16 ou superior. Confira aqui a documentação oficial.

  2. Na raiz do projeto, instale as dependências do projeto.

npm install
  1. Configure as variáveis de ambiente:
  • Renomeie o arquivo .env.example (disponível na raíz do projeto) para .env;
  • Configure as variáveis para o seu contexto local.
  1. Para iniciar o servidor, utilize o comando abaixo.
npm run dev
  • Para executar os testes, você pode utilizar os dois comandos abaixo.
// Comando 1
npm run test:mocha

// Comando 2 - Neste comando você tem acesso à cobertura dos testes
npm run test:coverage
🐋 Docker
  1. Certifique-se que você tenha o docker-compose instalado na versão 1.29 ou superior. Links oportunos caso você precise instalar ou atualizar: Tutorial DigitalOcean e documentação oficial;

  2. Suba os containers executando o comando abaixo. Dois containers serão inicializados: car_shop (node) e car_shop_db (mysql).

docker-compose up -d
  1. Acesse a CLI do container car_shop com o comando abaixo ou abra-o no VS Code. Para a última opção, recomendo a extensão da Microsoft Dev Containers.
docker exec -it car_shop bash

⚠️ A partir de agora, TODOS os comandos (scripts) disponíveis no package.json (incluindo o npm install) devem ser executados DENTRO do container car_shop.

  1. Instale as dependências do projeto.
npm install
  1. Para iniciar o servidor, utilize um dos comandos abaixo.
npm run dev
  • Para executar os testes, você pode utilizar os dois comandos abaixo.
// Comando 1
npm run test:mocha

// Comando 2 - Neste comando você tem acesso à cobertura dos testes
npm run test:coverage
  • Para o contexto de teste local, siga os passos abaixo.
  1. Renomeie o arquivo .env.example (disponível na raíz do projeto) para .env;
  2. Configure as variáveis para o seu contexto local.

Endpoints

Abaixo você pode conferir um detalhamento dos endpoints utilizados no projeto. Para realizar as requisições HTTP e consultar o comportamento de cada endpoint, você pode utilizar a extensão Thunder Client.

ℹ️ Para todos os endpoints que exijam o id dos carros e motos, atente-se que o id é um ObjectId. Saiba mais sobre ObjectId aqui.

Cars

GET /cars

  • Retorna todos os carros registrados no banco de dados.
  • URL: http://localhost:PORT/cars

POST /cars

  • Adiciona um novo carro ao banco de dados.
  • URL: http://localhost:PORT/cars
  • O corpo da requisição deve seguir o formato abaixo:
{
  "model": "Marea",
  "year": 2002,
  "color": "Black",
  "status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
  "buyValue": 15.990,
  "doorsQty": 4,
  "seatsQty": 5
}

GET /cars/:id

  • Retorna o carro cujo id foi passado na URL.
  • Exemplo de URL: http://localhost:PORT/cars/634852326b35b59438fbea2f

PUT /cars/:id

  • Atualiza o carro cujo id foi passado na URL.
  • Exemplo de URL: http://localhost:PORT/cars/634852326b35b59438fbea2f
  • O corpo da requisição deve seguir o formato abaixo:
{
  "model": "Marea",
  "year": 1992,
  "color": "Red",
  "status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
  "buyValue": 12.000,
  "doorsQty": 2,
  "seatsQty": 5
}

DELETE /cars/:id

  • Remove do banco de dados o carro cujo id foi passado na URL.
  • Exemplo de URL: http://localhost:PORT/cars/634852326b35b59438fbea2f

Motorcycles

GET /motorcycles

  • Retorna todas as motos registradas no banco de dados.
  • URL: http://localhost:PORT/motorcycles

POST /motorcycles

  • Adiciona uma nova moto ao banco de dados.
  • URL: http://localhost:PORT/motorcycles
  • O corpo da requisição deve seguir o formato abaixo:
{
  "model": "Honda Cb 600f Hornet",
  "year": 2005,
  "color": "Yellow",
  "status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
  "buyValue": 30.000,
  "category": "Street", // Valores aceitos: "Street", "Custom" ou "Trail"
  "engineCapacity": 600
}

GET /motorcycles/:id

  • Retorna a moto cujo id foi passado na URL.
  • Exemplo de URL: http://localhost:PORT/motorcycles/634852326b35b59438fbea2f

PUT /motorcycles/:id

  • Atualiza a moto cujo id foi passado na URL.
  • Exemplo de URL: http://localhost:PORT/motorcycles/634852326b35b59438fbea2f
  • O corpo da requisição deve seguir o formato abaixo:
{
  "model": "Honda Cb 600f Hornet",
  "year": 2014,
  "color": "Red",
  "status": true, // Não é obrigatório. Se não for inserido, o valor do status será 'false'
  "buyValue": 45.000,
  "category": "Street", // Valores aceitos: "Street", "Custom" ou "Trail"
  "engineCapacity": 600
}

DELETE /motorcycles/:id

  • Remove do banco de dados a moto cujo id foi passado na URL.
  • Exemplo de URL: http://localhost:PORT/motorcycles/634852326b35b59438fbea2f


Sobre a Trybe

"A Trybe é uma escola do futuro para qualquer pessoa que queira melhorar de vida e construir uma carreira de sucesso em tecnologia, onde a pessoa só paga quando conseguir um bom trabalho."

"O programa conta com mais de 1.500 horas de aulas online, aborda introdução ao desenvolvimento de software, front-end, back-end, ciência da computação, engenharia de software, metodologias ágeis e habilidades comportamentais."


Contato

Projeto desenvolvido por Guilherme Garcia. Seguem abaixo minhas redes sociais e meios de contato. 🤘

Gmail Linkedin GitHub Instagram

Voltar ao topo