Este projeto consiste no desafio de criação de uma api de transferência.
Para a utilização deste projeto, recomenda-se as seguintes tecnologias:
Para instalar esse projeto:
$ git clone https://github.com/lucsimao/servico-transferencia
$ npm install
- Para iniciar este projeto execute os seguintes comandos:
$ docker-compose up -d
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
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
- Para acessar a o Swagger, após subir o ambiente, acesse a rota /docs
- 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
- Circuit Break
- Transporte dos Loggers para ElasticSearch. Ex: lucsimao/node-api-template
- Monitoramento de Métricas com Prometheus e Grafana. Ex:lucsimao/testlink-facade-api
- Criação de um fake da Api Externa
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
Para a construção deste projeto, foram utilizadas as seguintes referências:
Repositórios
- Repositório do Rodrigo Manguinho do curso NodeJs, Typescript, TDD, DDD, Clean Architecture e SOLID
- Repositório do Waldemar Neto do curso Curso de Node.js completo com Typescript, Jest, TDD, Github
- Repositório pessoal - lucsimao - testlink-facade-api
Cursos/Artigos