/CleanSurvey

A Node Typescript API made with Express using a Clear Architechture

Primary LanguageTypeScript

Clean Survey

This API that I am creating is a learning experience obtained in the course applied by professor Rodrigo Manguinho at Udemy.

A great course that seeks to demonstrate in depth all stages of development ,continuous Deployment, continuous integration and continuous delivery

The objective of the training is to show how to create an API with a well-defined and decoupled architecture, using TDD as the 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.

APIs built in the training

  1. SignUp
  2. Login
  3. Survey Creation
  4. Survey List
  5. Survey Reply
  6. Survey Result

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

Methodologies and Designs

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

Frameworks and Tools

  • NPM
  • Typescript
  • Git
  • Docker
  • Jest
  • MongoDb
  • Travis CI
  • Swagger
  • Bcrypt
  • JsonWebToken
  • Faker
  • Coveralls
  • Validator
  • Express
  • Supertest
  • Husky
  • Lint Staged
  • Eslint
  • Standard Javascript Style
  • Nodemon
  • Rimraf
  • In-Memory MongoDb Server
  • MockDate
  • Module-Alias
  • Copyfiles
  • Npm Check

Node Features

  • API documentation with Swagger
  • Error Log
  • Security (Hashing, Encryption e Encoding)
  • CORS
  • Middlewares
  • Access Level on Routes (Admin, User e AnĂ´nimo)
  • Deploy on Heroku
  • Serving Static Files

Git Features

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

Typescript Features

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

Test Features

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

MongoDb Features

  • Connect e Reconnect
  • Collections
  • InsertOne e InsertMany
  • 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