Skip to content

API para controle de ordem de fabricação de produtos, através do serviço SQS da AWS, além da criação de uma lambda que rodará diariamente para gerar relatório dos tempos de cada etapa da fabricação.

Notifications You must be signed in to change notification settings

WanderDinizVeloso/queue-free

Repository files navigation

Queue-free

Projeto criado para colocar em prática os conhecimentos adquiridos ao longo dos últimos 06 (seis) meses, atendendo ao PDI Seedz (Integração - Segundo Semestre - 2023).

Objetivos do PDI:

  • Escolhe um Tema e desenvolver a Documentação de uma Aplicação (Arquitetura) utilizando no mínimo 4 tecnologias diferentes (Exemplo: API, DB, FILA, SERVERLESS, CACHE).
  • Implementar código da aplicação baseada na documentação gerada.

Sobre o Projeto: Desenvolvi uma API para controle de ordem de fabricação de produtos, através do serviço SQS da AWS, além da criação de uma lambda que rodará diariamente para gerar relatório dos tempos de cada etapa da fabricação.


Sumário


Licença

Este projeto esta sobe a licença MIT.


Tecnologias utilizadas

Nodejs

O Node.js é um ambiente de execução do código JavaScript do lado do servidor (back-end).

Quer saber mais? AQUI

Typescript

O TypeScript adiciona sintaxe adicional ao JavaScript para oferecer suporte a uma integração mais estreita com seu editor. Detecte erros mais cedo em seu editor.

Quer saber mais? AQUI

Nestjs

O NestJS é um framework Node.js de código aberto destinado ao desenvolvimento de aplicativos do lado do servidor.

Quer saber mais? AQUI

Docker

O Docker é utilizado para implantar aplicativos dentro de containers virtuais, permitindo que vários aplicativos funcionem em diferentes ambientes complexos.

Quer saber mais? AQUI

Docker Compose

O docker compose é o orquestrador de containers Docker, definindo e executando aplicativos Docker com vários contêineres.

Quer saber mais? AQUI

ESLint

O ESLint é um linter, uma ferramenta de análise estática, para as linguagens Javascript e Typescript.

Quer saber mais? AQUI

Prettier

O Prettier é um formatador de código opinativo que impõe um estilo consistente analisando seu código.

Quer saber mais? AQUI

Mongodb

O MongoDB é um software de banco de dados orientado a documentos livre, de código aberto e multiplataforma.

Quer saber mais? AQUI

Mongoose

O Mongoose é uma biblioteca de programação orientada a objetos JavaScript que cria uma conexão entre o MongoDB e o ambiente de tempo de execução JavaScript Node.js

Quer saber mais? AQUI

Semantic-release

O semantic-release automatiza todo o fluxo de trabalho de lançamento do pacote, incluindo: determinar o próximo número de versão, gerar as notas de lançamento e publicar o pacote.

Quer saber mais? AQUI

Eu tenho um repositório que auxilia de forma prática a instalação e execução da ferramenta. Bora acessar? ;) AQUI

Conventionalcommits

O Conventional Commits define um conjunto de regras para criar um histórico de commit explícito.

Quer saber mais? AQUI

Commitlint

O Commitlist é uma ferramenta que verifica se suas mensagens de commit atendem ao formato do Conventional Commits.

Quer saber mais? AQUI

Eu tenho um repositório que auxilia de forma prática a instalação e execução da ferramenta. Bora acessar? ;) AQUI

Husky

O husky é uma ferramenta que executa scripts personalizados no seu repositório.

Quer saber mais? AQUI

Eu tenho um repositório que auxilia de forma prática a instalação e execução da ferramenta. Bora acessar? ;) AQUI

Localstack

O Localstack emula serviços em da AWS localmente.

Quer saber mais? AQUI

Serverless/serverless-localstack

O serverless é uma ferramenta de linha de comando (CLI) que auxilia no desenvolvimento de AWS lambdas.

Quer saber mais? AQUI

AWS SQS

O Amazon Simple Queue Service (SQS) é um serviço de gerenciamento de filas em nuvem.

Quer saber mais? AQUI

AWS lambda

O AWS Lambda é um serviço orientado a eventos que permite executar códigos sem servidor

Quer saber mais? AQUI

Swagger

Ferramenta que facilita a documentação de API's.

Quer saber mais? AQUI


Estrutura do Projeto

O projeto está estruturado da seguinte maneira:

├── app.module.ts
├── aws
│   ├── aws-config.ts
│   ├── aws.module.ts
│   └── sqs.service.ts
├── interceptors
│   ├── interface
│   │   ├── common-interceptors.interface.ts
│   │   └── invalid-id.interface.ts
│   └── invalid-id.interceptor.ts
├── lambdas
│   └── report.js
├── main.ts
├── orders
│   ├── dto
│   │   ├── create-order.dto.ts
│   │   └── update-order.dto.ts
│   ├── interface
│   │   └── order.interface.ts
│   ├── orders.controller.ts
│   ├── orders.module.ts
│   ├── orders.service.ts
│   └── schema
│       └── order.schema.ts
├── reports
│   ├── reports.controller.ts
│   ├── reports.module.ts
│   ├── reports.service.ts
│   └── schema
│       └── report.schema.ts
├── status
│   ├── interface
│   │   └── status.interface.ts
│   ├── schema
│   │   └── status.schema.ts
│   ├── status.controller.ts
│   ├── status.module.ts
│   └── status.service.ts
├── tickets
│   ├── interface
│   │   └── ticket.interface.ts
│   ├── schema
│   │   └── ticket.schema.ts
│   ├── tickets.controller.ts
│   ├── tickets.module.ts
│   └── tickets.service.ts
└── utils
    ├── messages-response.ts
    └── redis-times.ts

Swagger

Após iniciar o projeto, seguindo os passos (AQUI), o swagger do projeto estará disponível no localhost:3001.

swagger


Caminho Feliz do Projeto

swagger


Diagrama de Domínio

swagger


Diagrama de Entidade

swagger


Diagramas de Sequência

Orders Create

swagger

Orders Find All

swagger

Orders Find One

swagger

Orders Complete

swagger

Tickets Receive Message

swagger

Tickets Production Complete

swagger

Status Find All

swagger

Reports Find All / Find by Date

swagger


Pré-requisitos

Ferramentas necessárias

Para rodar o projeto, você vai precisar instalar as seguintes ferramentas:

  • Git;
  • Node.js - versão 18.17.0;
  • Docker - versão mínima 20.10.24;
  • Docker Compose - versão mínima 2.17.2;
  • Um editor para trabalhar com o código como VSCode ou outro de sua preferência;

Rodando local

  • Clone do Projeto e instale as dependências

    # Clone este repositório
      # via SSH
    $ git clone git@github.com:WanderDinizVeloso/queue-free.git
    
    # Acesse a pasta do projeto clonado
    $ cd queue-free
    
    # Instale as dependências
    $ npm install
  • Bora iniciar?:

    # Inicie o sistema e suba os contêineres do docker
    $ npm run start:dev
      #obs.: O comando inicia o sistema e sobe os contêineres
    
    # Acesse o swagger
    http://localhost:3001
    
    # Efetue o deploy da Lambda
    $ npm run lambda:deploy
    
    # Execute a lambda
    $ npm run lambda:invoke
    

Quer contribuir com o projeto?

  • Crie uma branch e faça sua contribuição:

    # Crie uma branch a partir da branch main
    $ git checkout -b nome-da-nova-branch
    
    # Adicione as mudanças desejadas com os devidos commits
    $ git add .
        # adiciona as mudanças ao stage do Git
    $ git commit -m 'CommitType:informação do conteúdo do commit'
        # salvando as alterações de cada pequena alteração em um commit.
    $ git push -u origin nome-da-nova-branch
        # adiciona a nova branch no repositório remoto do Projeto
  • Crie um novo Pull Request (PR):

    • Vá até a página de Pull Requests do repositório no GitHub
    • Clique no botão verde "New pull request"
    • Clique na caixa de seleção "Compare" e escolha a sua branch com atenção
    • Clique no botão verde "Create pull request"
    • Adicione uma descrição para o Pull Request
    • Clique no botão verde "Create pull request"
    • Me marque para revisar. :) Wander

Contribuição

Bora entrar para esta lista? ;) AQUI


Autor

minha foto


Wander Diniz Veloso
Desenvolvedor Back-End

About

API para controle de ordem de fabricação de produtos, através do serviço SQS da AWS, além da criação de uma lambda que rodará diariamente para gerar relatório dos tempos de cada etapa da fabricação.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published