Skip to content

NodeJS API with Typescript, TDD, Clean Architecture, Design Patterns and SOLID principles.

License

Notifications You must be signed in to change notification settings

giovanivrech/advanced-node-api

Repository files navigation

GPLv3 License Open Source Generic badge

Advanced Node with facebook API integration


This API is part of professor Rodrigo Manguinho's (Mango) training 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-driven programming) as a working methodology, Clean Architecture to distribute responsibilities in layers, always following the SOLID principles and, whenever possible, applying Design Patterns to solve some common problems. My main goal with this training is to improve my skills in testing and clean architecture.

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
  • Command
  • Dependency Injection
  • Abstract Server
  • Composition Root
  • Builder
  • Template Method
  • Singleton
  • Chain of Responsibility
  • Proxy

Code Smells (Anti-Patterns)

  • Blank Lines
  • Comments
  • Data Clumps
  • Divergent Change
  • Duplicate Code
  • Inappropriate Intimacy
  • Feature Envy
  • Large Class
  • Long Parameter List
  • Middle Man
  • Primitive Obsession
  • Refused Bequest
  • Shotgun Surgery
  • Speculative Generality

Methodologies and Designs

  • TDD
  • Clean Architecture
  • DDD
  • Refactoring
  • Conventional Commits
  • GitFlow
  • Modular Design
  • Dependency Diagrams
  • Use Cases

Libs and Tools

  • NPM
  • Typescript
  • Git
  • Jest
  • Ts-Jest
  • Jest-Mock-Extended
  • TypeORM
  • AWS-SDK
  • Multer
  • UUID
  • Axios
  • Postgres
  • JsonWebToken
  • Express
  • Cors
  • Supertest
  • Husky
  • Lint Staged
  • Eslint
  • Standard Javascript Style
  • Rimraf
  • In-Memory Postgres Server
  • Module-Alias
  • Npm Check
  • Travis CI
  • Coverals
  • DotEnv
  • Ts-Node-Dev

Typescript Features

  • Advanced POO
  • Strict Mode
  • Interface
  • TypeAlias
  • Namespace
  • Utility Types
  • Path Modularization
  • Settings
  • Build

Typescript Features

  • Unit Tests
  • Integration Tests
  • Test Coverage
  • Test Doubles
  • Mocks
  • Stubs
  • Spies
  • Fakes