NodeJs Avançado com Clean Architecture, NestJs e Typescript
Módulos do curso:
Introdução;
Apresentação do Curso;
Visão Geral - Clean Architecture e Domain-Driven Design;
Criando o Projeto NestJs;
Configuração do ambiente de desenvolvimento;
Implementando o Módulo de Usuários;
Criação da entidade User;
Testes unitários da entidade User;
Criação da classe abstrata Entity;
Testes unitários da classe Entity;
Validação dos Dados em uma Entidade;
Criação de interface para padronizar a validação de entidades;
Testes unitários da classe de validação com Class Validator;
Visão geral sobre testes de integração;
Implementação da validação da entidade User;
Testes unitários da validação da entidade User;
Testes de Integração da entidade User com a Validação;
Implementando o Repository Pattern;
Visão geral sobre os repositórios;
Criação da abstração com as definições do contrato para repositórios;
Criação da abstração para o repositório InMemoryRepository;
Testes unitários de InMemoryRepository;
Implementação do repositório InMemory para a entidade User;
Criação da abstração com as definições para buscas personalizadas;
Testes unitários do repositório InMemorySearchableRepository;
Implementando os Casos de Usos;
Visão Geral sobre os Casos de Usos (usecases);
Testes unitários dos casos de uso;
Criação do Provider para criptografia de senha - HashProvider;
Testes unitários do Provider para criptografia de senha;
Implementando a Camada de Infraestrutura com os Recursos do NestJs;
Visão geral sobre Services no NestJs;
Implementando o controller de usuários;
Testes unitários do controller de usuários;
Instalando e Configurando o Prisma ORM;
Rodando o servidor Postgres com o Docker Compose;
Definindo o Schema Prisma para o banco de dados;
Implementando o Repositório Prisma da Entidade User;
Testes de integração do Repositório Prisma da Entidade User;
Testes de Integração dos Casos de Uso com o Repositório Prisma;
Implementando os Recursos para Exposição dos Dados aos Clientes;
Implementação da classe UserPresenter;
Testes unitários da classe UserPresenter;
Implementação da classe PaginationPresenter;
Testes unitários da classe PaginationPresenter;
Visão geral sobre testes end-to-end (e2e) no NestJS;
Criando os Testes End-to-End (e2e) de UsersController;
Implementação do interceptor WrapperData;
Implementação do exception filter ConflictErrorFilter;
Testes e2e do exception filter ConflictErrorFilter;
Implementação do exception filter NotFoundErrorFilter;
Testes e2e do exception filter NotFoundErrorFilter;
Implementação do exception filter InvalidPasswordErrorFilter;
Testes e2e do exception filter InvalidPasswordErrorFilter;
Implementando o Módulo de Autenticação com JWT;
Visão geral sobre JSON Web Token e instalação com o NestJs;
Refatoração do service EnvConfigService incluindo variáveis de ambiente do JWT;
Implementação do módulo NestJs para autenticação (AuthModule);
Implementação do serviço NestJs para autenticação (AuthService);
Testes unitários de AuthService;
Visão geral sobre Guards do NestJs;
Implementação do guard AuthGuard;
Refatoração dos testes e2e de UsersController;
Visão geral sobre Swagger e OpenAPI;
Criando a Documentação da API com Swagger;
Instalação e configuração do Swagger com NestJs e Fastify;
Introdução ao processo de Integração Contínua - CI;
Criação do Workflow para rodar testes unitários a cada evento de push;
Criação do Workflow para rodar testes de integração e e2e a cada pull request;
Build e Deploy da API em Ambiente de Produção.