This API makes part of training of the teacher Rodrigo Manguinho (Mango) on Udemy.
The objective of the training is show to create an API with a defined architecture well and uncoupled, using TDD (Test Drive Development) such as work methodology. Clean Architecture to do responsibility distribution in layer, always following the SOLID principles and, whenever possible, applying Design Patterns to solve some common problems.
- Single Responsibility Principle (SRP)
- Open Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
- Don't Repeat Yourself (DRY)
- Composition Over Inheritance
- Small Commits
- Factory
- Adapter
- Composite
- Decorator
- Dependency Injection
- Abstract Server
- Composition Root
- TDD
- Clean Architecture
- DDD
- Conventional Commits
- GitFlow
- Modular Design
- Dependency Diagrams
- Use Cases
- NPM
- TypeScript
- Git
- Docker
- Jest
- MongoDB
- Bcrypt
- JsonWebToken
- Faker
- Coveralls
- Validator
- Express
- Supertest
- Husky
- Lint Staged
- Eslint
- Standard Javascript Style
- Nodemon
- Rimraf
- In-Memory MongoDb Server
- MockDate
- Module-Alias
- Git alias
- Log error
- Security (Hashing, Encryption e Encoding)
- CORS
- Middlewares
- Integration tests
- Unit tests
- Coverage of tests
- Test Doubles
- Mocks
- Stubs
- Spies
- Deploy with Typescript
- Deploy on Render
- Use breakpoints on Typescript
- Use correct tags on Git
- Fakes
- 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