A progressive Node.js framework for building efficient and scalable server-side applications.
Nest framework TypeScript starter repository.
- Visão Geral
- Funcionalidades
- Tecnologias
- Arquitetura
- Pré-requisitos
- Instalação
- Configuração
- Monitoramento (ELK Stack)
- Testes
- API Documentation
- Estrutura do Projeto
- Troubleshooting
ecnologias desejadas • NodeJs • NestJs • TypeScript.
Objetivo O objetivo consiste na criação de uma carteira financeira em que os usuários possam realizar transferência de saldo. Teremos apenas um tipo de usuário que pode enviar ou receber dinheiro de qualquer outro.
- NestJS
- PostgreSQL
- Docker
- ELK Stack (Elasticsearch, Logstash, Kibana)
- APM Server
- JWT para autenticação
Arquitetura padrão do NEST.js (MVC)
- Node.js (v16+)
- Docker e Docker Compose
- NestJS CLI (
npm i -g @nestjs/cli)
- Clone o repositório
- Copie o
.env.examplepara.env - Configure as variáveis de ambiente
# Iniciar todos os serviços
docker-compose up -d
# Verificar logs
docker-compose logs -f- Acesse
http://localhost:5601 - Navegue até "Observability" > "APM"
Os logs são divididos em três categorias:
- my-app.log: Logs gerais da aplicação
- transaction-audit.log: Logs de transações
- transaction-reversal-audit.log: Logs de reversões
- Acesse
http://localhost:5601 - Navegue até "Stack Management" > Index Management > Name_Index > Discover Index
-
Erro de conexão com o banco:
- Verifique as variáveis de ambiente
- Confirme se o container do PostgreSQL está rodando
-
Logs não aparecem no Kibana:
- Verifique se os arquivos de log foram criados
- Confirme se o Filebeat está rodando
O objetivo consiste na criação de uma carteira financeira em que os usuários possam realizar transferência de saldo. Teremos apenas um tipo de usuário que pode enviar ou receber dinheiro de qualquer outro.
• Criar cadastro • Criar autenticação • Usuários podem enviar ou receber dinheiro • Validar se o usuário tem saldo antes da transferência. • A operação de transferência deve ser uma transação passível de reversão em qualquer caso de inconsistência ou por solicitação do usuário.
• Atente-se para cumprir: • Segurança • Saber argumentar suas escolhas • Conhecimento de padrões (design patterns, SOLID) • Modelagem de dados
• Uso de Docker • Testes de integração • Testes unitários • Documentação • Monitoramento e logging
Obs: Certifque-se de ter o node instalado em sua máquina e nestjs. Para instalar o nestjs, execute o seguinte comando: npm i -g @nestjs/cli
Acesse a branch main no projeto e execute o comando abaixo para instalar as dependências do projeto:
$ yarn 1- Acesse a branch developer ou main
2- para configurar o projeto cria um arquivo .env na raiz do projeto e coloque as seguintes variáveis de ambiente presentes no arquivo .env.example:
obs: há um arquivo init.sql na raiz do projeto com o nome do banco de dados já configurado. Caso querira definir outro nome para o banco de dados, altere o nome do banco de dados no arquivo init.sql também.
3- Para a configuração do monitoramento do sistema crie os seguintes 3 arquivos na pasta logstash presente na raíz do projeto. my-app.log, transaction-audit.log, transaction-reversal-audit.log
4- Caso você esteja usando a via docker as variáveis de ambiente deverão estar setadas de acordo com as instruções do arquivo .env.example
OBS: para executar os testes de loggers set a variável de ambiente LOG_RUlES de acordo com o arquivo .env.example. Além disso, set a variável de ambiente NODE_ENV para test.
# unit tests
$ yarn run test
# e2e tests
$ yarn run test:e2e
# test coverage
$ yarn run test:cov# development
$ yarn run start
# watch mode
$ yarn run start:dev
# production mode
$ yarn run start:prod
Acesse o endereco: http://localhost:{port}/api para visualizar a documentação do swagger
OBS: para acessar o swagger é necessario que a variável de ambiente NODE_ENV esteja em modo de development.
execute o comando abaixo para subir o container
docker-compose up -d