Giter VIP home page Giter VIP logo

ludson96 / project-car-shop Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 184 KB

Para este projeto, foram aplicados 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. Utilizando o banco de dados MongoDB através do framework do Mongoose

Dockerfile 0.59% JavaScript 2.68% TypeScript 96.74%
mongodb mongoose typescript bdd chai docker-compose domain-driven-design express mocha odm poo sinon solid tdd

project-car-shop's Introduction

Repositório do projeto Car Shop 🚗

Módulo: BACK-END

Repositório possuí projeto desenvolvido no período que estive na Trybe, abordando os conceitos de API Rest com CRUD completo em TypeScript, com utilização da ODM Mongoose, além de construir o projeto de acordo com o paradigma de orientação a objetos (POO) e SOLID. Docker para rodar o node e mongodb. Utilizando a arquitetura MSC.
Para testar a abordagem foram usados testes via Mocha, Chai, Sinon, com abordagem variando entre TDD e BDD;

Informações de aprendizados

  • Este é um projeto desenvolvido para me ajudar a aprender TypeScript, MongoDB e Mongoose;
  • Segundo projeto usando MongoDB;
  • Primeiro projeto usando Mongoose;
  • Utilizei o Cliente Rest Thunder Client, como extensão, para visualizar o retorno do meu acesso.

Linguagem usadas

NodeJS Docker ESLint TypeScript ts-node Express Mongo Mongoose .ENV Jest Mocha Chai

O que foi desenvolvido

Para este projeto, foram aplicados 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. Em TypeScript, utilizando o banco de dados MongoDB através do framework do Mongoose.

Instruções para instalar e rodar

  1. Clone o repo:

    git clone [email protected]:Ludson96/project-car-shop.git
  2. Entre na pasta do repositório que você acabou de clonar:

    cd project-car-shop
  3. Instale as dependências e inicialize o projeto:

    npm install
  4. Rode os serviços node e db com o comando, através do docker:

    docker-compose up -d

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


docker-compose.yml fornecidos pela Trybe.

project-car-shop's People

Contributors

ludson96 avatar trybe-tech-ops avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.