Giter VIP home page Giter VIP logo

adolligit / car-shop Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 400 KB

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.

Home Page: https://www.linkedin.com/in/adelson-lima

JavaScript 1.17% TypeScript 98.83%
docker expressjs mongodb nodejs oop oop-principles solid typescript api api-rest backend openapi3 openapi-documentation

car-shop's Introduction

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:

git clone [email protected]:Adolligit/car-shop.git && cd ./car-shop

Depois instale as dependências:

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:

systemctl stop mongod

  1. Crie e inicie os contêiners:
docker compose up -d
  1. Entre no contêiner da aplicação:
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:

systemctl status mongod

Caso esteja desativado, substitua status por start no comando acima.


  1. Crie o arquivo .env na pasta raiz
touch .env
  1. Copie e cole as informações a seguir:
# 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):

npm run dev

Executar a cobertura de testes:

npm run test:dev

Executa os testes e depois criar a pasta ./coverage que contém um relatório:

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:

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

car-shop's People

Contributors

adolligit avatar trybe-tech-ops avatar

Stargazers

 avatar

Watchers

 avatar  avatar  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.