Skip to content

crislerwin/clean-node-api

Repository files navigation

Clean Node API

typescript vitest node pnpm eslint prettier husky lint-staged commitlint standard-version @vitest/coverage-c8


MongoDb
MongoDb
Validator
Validator
SignUpController
SignUpController
<I> Controller
<I> Controller
<I> EmailValidator
<I> EmailValidator
EmailValidatorAdapter
EmailValidatorAdapter
Presentation
Presentation
<I> AddAccount
<I> AddAccount
Domain
Domain
Utils
Utils
<I> Encripter
<I> Encripter
<I> AddUserRepo
<I> AddUserRepo
DbAddAccount
DbAddAccount
Data
Data
Infra
Infra
BCriptAdapter
BCriptAdapter
AddUserMongoRepo
AddUserMongoRepo
LoadUderByEmailRepo
LoadUderByEmailRepo
HttpResponse
HttpResponse
HttpRequest
HttpRequest
BCript
BCript
LoadUserByEmailMongoRepo
LoadUserByEmailMongoRepo
SignUpComposer
SignUpComposer
ExpressRouteAdapter
ExpressRouteAdapter
SignUpRouter
SignUpRouter
App
AppText is not SVG - cannot display

Essa API faz parte do treinamento do professor Rodrigo Manguinho (Mango) na Udemy.

O objetivo do treinamento é mostrar como criar uma API com uma arquitetura bem definida e desacoplada, utilizando TDD (programação orientada a testes) como metodologia de trabalho, Clean Architecture para fazer a distribuição de responsabilidades em camadas, sempre seguindo os princípios do SOLID e, sempre que possível, aplicando Design Patterns para resolver alguns problemas comuns.

APIs construídas no treinamento

  1. Cadastro
  2. Login
  3. Criar enquete

Princípios

  • Single Responsibility Principle (SRP)
  • Open Closed Principle (OCP)
  • Liskov Substitution Principle (LSP)
  • Interface Segregation Principle (ISP)
  • Dependency Inversion Principle (DIP)
  • Separation of Concerns (SOC)
  • Don't Repeat Yourself (DRY)
  • You Aren't Gonna Need It (YAGNI)
  • Keep It Simple, Silly (KISS)
  • Composition Over Inheritance
  • Small Commits

Design Patterns

  • Factory
  • Adapter
  • Composite
  • Decorator
  • Proxy
  • Dependency Injection
  • Abstract Server
  • Composition Root
  • Builder
  • Singleton

Metodologias e Designs

  • TDD
  • Clean Architecture
  • DDD
  • Conventional Commits
  • GitFlow
  • Modular Design
  • Dependency Diagrams
  • Use Cases
  • Continuous Integration
  • Continuous Delivery
  • Continuous Deployment

Bibliotecas e Ferramentas

  • NPM
  • Typescript
  • Git
  • Docker
  • Vitest
  • MongoDb
  • Github Actions
  • Bcrypt
  • JsonWebToken
  • Express
  • Supertest
  • Husky
  • Lint Staged
  • Eslint
  • Standard Javascript Style
  • Tsup
  • Nodemon
  • Rimraf
  • MongoDb Memory Server

Features do Node

  • Documentação de API com Swagger
  • API Rest com Express
  • Log de Erro
  • Segurança (Hashing, Encryption e Encoding)
  • CORS
  • Middlewares
  • Deploy no Heroku

Features do Git

  • Alias
  • Log Personalizado
  • Branch
  • Reset
  • Amend
  • Tag
  • Stash
  • Rebase
  • Merge

Features do Typescript

  • POO Avançado
  • Interface
  • TypeAlias
  • Namespace
  • Utility Types
  • Modularização de Paths
  • Configurações
  • Build
  • Deploy
  • Uso de Breakpoints

Features de Testes

  • Testes Unitários
  • Testes de Integração
  • Cobertura de Testes
  • Test Doubles
  • Mocks
  • Stubs
  • Spies
  • Fakes

Features do MongoDb

  • Connect e Reconnect
  • Collections
  • InsertOne e InserMany
  • Find, FindOne e FindOneAndUpdate
  • DeleteMany
  • UpdateOne
  • Aggregation (Match, Group, Unwind, Lookup, AddFields, Project, Sort)
  • ObjectId
  • Upsert e ReturnOriginal
  • Push, Divide, Multiply, ArrayElemAt, Cond, Sum
  • Filter, Map, Reduce, MergeObjects, ConcatArrays

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages