Skip to content

warlenpinheiro/clean-node-api

Repository files navigation

Clean Node API with Typescript

This API is part of the training of professor Rodrigo Manguinho (Mango) at Udemy.

The objective of the training is to show how to create an API with a well-defined and decoupled architecture, using TDD (test-oriented programming) working methodology, Clean Architecture to distribute responsibilities in layers, always following the principles of SOLID and, whenever possible , applying Design Patterns to solve some common problems.

Principles

  • 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

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
  • Jest
  • MongoDb
  • Travis CI
  • Swagger
  • Bcrypt
  • JsonWebToken
  • Faker
  • Coveralls
  • Validator
  • Express
  • Supertest
  • Husky
  • Lint Staged
  • Eslint
  • Standard Javascript Style
  • Sucrase
  • Nodemon
  • Rimraf
  • In-Memory MongoDb Server
  • MockDate
  • Module-Alias
  • Copyfiles
  • Npm Check

Node Features

  • API documentation with Swagger
  • Error Log
  • Security (Hashing, Encryption and Encoding)
  • CORS
  • Middlewares
  • Level of Access in Routes (Admin, User and Anonymous)
  • Deploy at Heroku
  • Serve Static Files

Git Features

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

Typescript Features

  • Advanced POO
  • Interface
  • TypeAlias
  • Utility Types
  • Modularization of Paths
  • Build
  • Deploy
  • Breakpoints Use

Features de Testes

  • Unitary tests
  • Integration tests
  • Test Coverage
  • 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

Releases

No releases published

Packages

 
 
 

Contributors