/servico-transferencia

Este projeto é um serviço de transferência

Primary LanguageTypeScriptMIT LicenseMIT

Serviço de Transferências

License: MIT codecov Mutation testing badge

Este projeto consiste no desafio de criação de uma api de transferência.

Autor

Sumário

Requisitos

Para a utilização deste projeto, recomenda-se as seguintes tecnologias:

Instalação

Para instalar esse projeto:

$ git clone https://github.com/lucsimao/servico-transferencia
  $ npm install

Inicialização

  • Para iniciar este projeto execute os seguintes comandos:

Docker

  $ docker-compose up -d

Modo desenvolvedor

Configurar o banco de dados

  $ docker-compose up -d database database-dashboard
  $ npm run db:schema:generate
  $ npm run db:migrate:dev
  $ npm run start:dev

Test

Para executar os testes desse projeto, você deve rode os seguintes comandos:

  • Unit Tests

    $ npm run test:unit
    

    or

    $ yarn test:unit
    
  • Functional Tests

  $ docker-compose up -d database database-dashboard
  $ npm run db:schema:generate
  $ npm run db:migrate:dev
$ npm run test:functional
$ yarn test:functional
  • Mutation Tests
$ npm run test:mutation
  • Lint
$ npm run lint
  • Find Dead Code
$ npm run lint:deadcode
  • Style Check
npm run style:check
npm run style:fix

Documentação

  • Para acessar a o Swagger, após subir o ambiente, acesse a rota /docs

Features Implementadas:

  • Post - Transfer
  • Persistência de Dados
    • Postgres
  • Gestão de dependências via gerenciador de pacotes (npm)
  • Utilização de Eslint
  • Testes Unitários
  • Documentação com OpenApi
  • Github Actions
  • Graceful Shutdown
  • Logger
  • Rate Limiter
  • Docker Compose
  • Ts-Prune
  • Testes de Mutação

Implementações Futuras/Pendentes

Tecnologias

Para a construção deste projeto, foram utilizadas as seguintes tecnologias:

  • TypeScript
  • Node.js
  • Visual Studio Code- Text editor with following plugins installed: DotENV, ESLint, GitLens e vscode-icons.
  • Jest - Para a execução dos testes
  • Supertest - Para testes funcionais da api
  • Nock - Para mock de apis externas
  • ESLint - Para análise estática do código do projeto.
  • Prettier - Para formatação automática do projeto.
  • Husky - Para aplicação de ci/cd no repositório local.
  • Github Actions - Para a aplicação do ci/cd no projeto.
  • Express - Para a API
  • Joi - Para validação do schema
  • Pino - Para logs da aplicação
  • OpenApi - Para documentação
  • Docker - Para virtualização
  • Stryker - Para verificação da qualidade dos testes via testes de mutação. Neste projeto foram utilizadas as seguintes tecnologias:
  • Joi - Para validação de Schema
  • Prisma - ORM para gerenciamento de banco de dados
  • TsPrune - Para verificação de código morto

Referências

Para a construção deste projeto, foram utilizadas as seguintes referências:

Repositórios

Cursos/Artigos