Skip to content

🧼 NodeJs API with Typescript, TDD, Clean Architecture, Design Patterns and SOLID Principles

Notifications You must be signed in to change notification settings

RaFaTEOLI/clean-ts-api

Repository files navigation

Build Status Coverage Status Known Vulnerabilities js-standard-style GPLv3 License Open Source

Clean Typescript Node API

Link to full course


This API was made during a course by Rodrigo Manguinho at Udemy.

The course's objective is to show how to create an API with a well defined architecture and also decoupled, using TDD for testing, Clean Architecture to organize the code and distribute the responsability across layers, always following the best design patterns.


APIs developed in the course

  1. Sign Up
  2. Login

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
  • Singleton

Methodologies and Designs

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

Libraries and Tools

  • NPM
  • Typescript
  • Git
  • Docker
  • Jest
  • MongoDb
  • Travis CI
  • Swagger
  • Bcrypt
  • JsonWebToken
  • Faker
  • Coveralls
  • Validator
  • Express
  • Apollo Server Express
  • Graphql
  • Graphql ISO Date
  • Graphql Scalars
  • Graphql Tools
  • Supertest
  • Husky
  • Lint Staged
  • Eslint
  • Standard Javascript Style
  • Sucrase
  • Nodemon
  • Rimraf
  • In-Memory MongoDb Server
  • MockDate
  • Module-Alias
  • Copyfiles
  • Npm Check
  • Bson ObjectId
  • Apollo Server Integration Testing

Node Features

  • API Documetation with Swagger
  • Rest API with Express
  • GraphQL Apollo Server
  • Error Log
  • Security (Hashing, Encryption and Encoding)
  • CORS
  • Middlewares
  • Access Levels (Admin, User and Anonimous)
  • Heroku Deploy
  • Static Files Serving

GraphQL Features

  • Types
  • Queries
  • Mutations
  • Resolvers
  • Directives
  • Scalars
  • Plugins
  • Resolvers
  • Type Definitions
  • Directives
  • Scalars
  • Plugins
  • Error Handling

Git Features

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

Typescript Features

  • Advanced OOP
  • Interface
  • TypeAlias
  • Namespace
  • Utility Types
  • Paths Modularization
  • Configurations
  • Build
  • Deploy
  • Breakpoints

Test Features

  • Unit Testing
  • Integration Testing (API Rest & GraphQL)
  • Test Coverage
  • Test Doubles
  • Mocks
  • Stubs
  • Spies
  • Fakes

MongoDb Features

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

About

🧼 NodeJs API with Typescript, TDD, Clean Architecture, Design Patterns and SOLID Principles

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages