Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Desafio Técnico - Jitterbit Jr Dev

NotificationsYou must be signed in to change notification settings

jpsilveira11/Jitterbit-JrDev-Challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio Técnico - Jitterbit Jr Dev

Tecnologias utilizadas

Stacks

Desafio Técnico para a posição de Dev Jr.Documentação disponivel emaqui.


API de Gerenciamento de Pedidos

Uma API RESTful construída com Node.js e Express para gerenciar pedidos com integração MongoDB e documentação automática via Swagger.

🎯 Visão Geral

Esta API implementa um sistema completo de gerenciamento de pedidos com operações de Criar, Ler, Atualizar e Deletar (CRUD). Ela trata transformação de dados, armazena pedidos em MongoDB e fornece documentação interativa de API via Swagger UI.

Deploy em Produção:Render

✅ Funcionalidades Implementadas

Endpoints Obrigatórios ✓

  • POST/order — Criar um novo pedido
  • GET/order/:id — Recuperar pedido por ID (passado como parâmetro na URL)
  • GET/order/list — Listar todos os pedidos
  • PUT/order/:id — Atualizar pedido por ID
  • DELETE/order/:id — Deletar pedido por ID

Banco de Dados

  • MongoDB para armazenamento persistente de dados
  • Mongoose ODM para validação de schema e modelagem de dados
  • Transformação automática de dados do formato de requisição para o banco de dados

Transformação de Dados

As requisições recebidas são automaticamente transformadas:

Entrada (Request Body):

{"numeroPedido":"v10089015vdb-01","valorTotal":10000,"dataCriacao":"2023-07-19T12:24:11.5299601+00:00","items": [    {"idItem":"2434","quantidadeItem":1,"valorItem":1000    }  ]}

Armazenado no Banco (Transformado):

{"orderId":"v10089015vdb","value":10000,"creationDate":"2023-07-19T12:24:11.529Z","items": [    {"productId":2434,"quantity":1,"price":1000    }  ]}

Funcionalidades Adicionais ✓

  • Swagger UI — Documentação interativa de API em/api-docs
  • Variáveis de Ambiente — Configuração segura via.env
  • Tratamento de Erros — Mensagens de erro compreensíveis e códigos HTTP apropriados
  • Pronto para Produção — Configurado para deploy em Render

🚀 Começando

Pré-requisitos

  • Node.js 18.x ou superior
  • MongoDB (Atlas ou instância local)
  • npm ou yarn

Instalação

  1. Clone o repositório:

    git clone https://github.com/jpsilveira11/Jitterbit-JrDev-Challenge.gitcd Jitterbit-JrDev-Challenge
  2. Instale as dependências:

    npm install
  3. Crie o arquivo.env:

    MONGO_URI=mongodb+srv://<usuario>:<senha>@cluster.mongodb.net/jitterbit?retryWrites=true&w=majorityPORT=3000
  4. Gere a documentação Swagger:

    npm run swagger
  5. Inicie o servidor:

    npm start

A API estará rodando emhttp://localhost:3000 e o Swagger UI emhttp://localhost:3000/api-docs


📚 Endpoints da API

1. Criar Pedido

POST/order

Requisição:

curl -X POST http://localhost:3000/order \  -H"Content-Type: application/json" \  -d'{    "numeroPedido": "v10089015vdb-01",    "valorTotal": 10000,    "dataCriacao": "2023-07-19T12:24:11.5299601+00:00",    "items": [      {        "idItem": "2434",        "quantidadeItem": 1,        "valorItem": 1000      }    ]  }'

Resposta (201 Criado):

{"_id":"64dab8a0f6b7183237d307f6","orderId":"v10089015vdb","value":10000,"creationDate":"2023-07-19T12:24:11.529Z","items": [    {"productId":2434,"quantity":1,"price":1000,"_id":"64daba7d05bcc674899dc5bf"    }  ]}

2. Obter Pedido por ID

GET/order/:id

Exemplo:

curl http://localhost:3000/order/v10089015vdb

Resposta (200 OK):

{"_id":"64dab8a0f6b7183237d307f6","orderId":"v10089015vdb","value":10000,"creationDate":"2023-07-19T12:24:11.529Z","items": [...]}

Resposta de Erro (404 Não Encontrado):

{"error":"Pedido não encontrado."}

3. Listar Todos os Pedidos

GET/order/list

Exemplo:

curl http://localhost:3000/order/list

Resposta (200 OK):

[  {"_id":"64dab8a0f6b7183237d307f6","orderId":"v10089015vdb","value":10000,"creationDate":"2023-07-19T12:24:11.529Z","items": [...]  },...]

4. Atualizar Pedido

PUT/order/:id

Exemplo:

curl -X PUT http://localhost:3000/order/v10089015vdb \  -H"Content-Type: application/json" \  -d'{    "value": 15000,    "status": "completed"  }'

Resposta (200 OK):

{"_id":"64dab8a0f6b7183237d307f6","orderId":"v10089015vdb","value":15000,"creationDate":"2023-07-19T12:24:11.529Z","items": [...],"status":"completed"}

5. Deletar Pedido

DELETE/order/:id

Exemplo:

curl -X DELETE http://localhost:3000/order/v10089015vdb

Resposta (200 OK):

{"message":"Pedido deletado com sucesso"}

📖 Documentação Swagger

A documentação interativa de API está disponível em:

  • Local:http://localhost:3000/api-docs
  • Produção:https://sua-url-render.onrender.com/api-docs

Teste todos os endpoints diretamente da interface Swagger UI!


🏗️ Estrutura do Projeto

Jitterbit-JrDev-Challenge/├── api.js                 # Aplicação Express principal├── swagger.js             # Configuração e geração do Swagger├── swagger_output.json    # Documentação de API gerada├── models/│   └── order.js           # Schema Mongoose de Pedidos├── package.json           # Dependências e scripts├── .env                   # Variáveis de ambiente (não no repo)└── README.md              # Este arquivo

Arquivos Principais

api.js — Servidor Express com todos os endpoints CRUD e tratamento de erros

models/order.js — Schema Mongoose definindo a estrutura de Pedidos:

{orderId:String,value:Number,creationDate:Date,items:[{productId:Number,quantity:Number,price:Number}]}

swagger.js — Configuração que auto-gera a documentação de API


🛠️ Scripts Disponíveis

# Inicia o servidornpm start# Gera/regenera documentação Swaggernpm run swagger# Executa testesnpmtest

🚀 Deploy em Render

Pré-requisitos

  • Conta MongoDB Atlas e string de conexão
  • Conta GitHub com o repositório

Passos

  1. Garanta que todas as mudanças estejam commitadas:

    git add.git commit -m"feat: API completa de pedidos com Swagger"git push
  2. Crie um Web Service no Render:

    • Acesserender.com
    • Entre com GitHub
    • Clique em "New" → "Web Service"
    • Selecione seu repositório GitHub
    • Configure:
      • Name:jitterbit-order-api
      • Runtime: Node
      • Build Command: (deixe em branco)
      • Start Command:node api.js
  3. Adicione Variáveis de Ambiente:

    • No dashboard Render → Service Settings → Environment
    • Adicione:MONGO_URI = sua string de conexão MongoDB Atlas
  4. Deploy:

    • Clique em "Create Web Service"
    • Ative "Auto-Deploy" para deploys automáticos em push no GitHub
  5. Acesse:

    • API:https://sua-url.onrender.com
    • Swagger UI:https://sua-url.onrender.com/api-docs

📊 Tecnologias Utilizadas

TecnologiaPropósito
Node.jsRuntime JavaScript
ExpressFramework web
MongoDBBanco de dados NoSQL
MongooseODM para MongoDB
Swagger UI ExpressDocumentação interativa de API
Swagger AutoGenAuto-gera specs OpenAPI
dotenvGerenciamento de variáveis de ambiente

✨ Qualidade de Código

  • Bem organizado — Separação clara de responsabilidades
  • Comentado — Funções e lógica principais documentadas
  • Tratamento de erros — Blocos try-catch compreensivos com mensagens significativas
  • Códigos HTTP — Códigos de status apropriados para cada operação
  • Convenções de nomenclatura — Nomes claros e descritivos de variáveis e funções
  • Histórico Git — Commits organizados com mensagens descritivas

🔐 Variáveis de Ambiente

Crie um arquivo.env no diretório raiz (nunca commite este arquivo):

MONGO_URI=mongodb+srv://usuario:senha@cluster.mongodb.net/dbname?retryWrites=true&w=majorityPORT=3000NODE_ENV=development

📝 Notas

  • O camponumeroPedido é automaticamente transformado emorderId removendo o sufixo-01
  • Datas são convertidas para formato ISO para consistência
  • Todos os campos numéricos (IDs de itens, quantidades, preços) são adequadamente tipados
  • A API trata requisições concorrentes com segurança usando async/await

👨‍💻 Autor

JP Silveira


📄 Licença

ISC


🎓 Requisitos do Desafio Atendidos

Obrigatório ✓

  • API RESTful com Node.js e JavaScript
  • Operações CRUD para pedidos
  • Endpoints obrigatórios (Criar, Obter por ID)
  • Integração MongoDB
  • Transformação de dados do input para formato de banco
  • Tratamento de erros e códigos HTTP apropriados
  • Repositório público no GitHub

Opcional ✓

  • Endpoint para listar todos os pedidos
  • Endpoint para atualizar pedido
  • Endpoint para deletar pedido
  • Documentação Swagger/OpenAPI
  • Deploy em produção (Render)

Última Atualização: 30 de Novembro de 2025 [★彡]


[8]ページ先頭

©2009-2025 Movatter.jp