https://github.com/williamkoller/clean-ts-api
API em NodeJs usando Typescript, TDD, Clean Architecture, Design Patterns e SOLID principles
https://github.com/williamkoller/clean-ts-api
clean-architecture composite design-patterns mongodb nodejs solid survey tdd typescript typescript-generator
Last synced: 3 months ago
JSON representation
API em NodeJs usando Typescript, TDD, Clean Architecture, Design Patterns e SOLID principles
- Host: GitHub
- URL: https://github.com/williamkoller/clean-ts-api
- Owner: williamkoller
- Created: 2020-03-24T00:26:06.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-22T21:07:23.000Z (almost 3 years ago)
- Last Synced: 2025-04-28T12:45:44.620Z (5 months ago)
- Topics: clean-architecture, composite, design-patterns, mongodb, nodejs, solid, survey, tdd, typescript, typescript-generator
- Language: TypeScript
- Homepage: https://clean-nodejs-api.herokuapp.com/api-docs/
- Size: 1.27 MB
- Stars: 46
- Watchers: 2
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://travis-ci.com/williamkoller/clean-ts-api)
[](https://coveralls.io/github/williamkoller/clean-ts-api?branch=master)
[](https://snyk.io/test/github/williamkoller/clean-ts-api)
[](https://opensource.org/licenses/)
[](https://opensource.org/)

[](https://wakatime.com/badge/github/williamkoller/clean-ts-api)# **Clean Node API**
Essa API faz parte do treinamento do professor Rodrigo Manguinho (Mango) na Udemy.
O objetivo do treinamento é mostrar como criar uma API com uma arquitetura bem definida e desacoplada, utilizando TDD (programação orientada a testes) como metodologia de trabalho, Clean Architecture para fazer a distribuição de responsabilidades em camadas, sempre seguindo os princípios do SOLID e, sempre que possível, aplicando Design Patterns para resolver alguns problemas comuns.
> ## APIs previstas para esse treinamento
1. [Cadastro](./requirements/signup.md)
2. [Login](./requirements/login.md)
3. [Criar enquete](./requirements/add-survey.md)
4. [Listar enquetes](./requirements/load-surveys.md)
5. [Responder enquete](./requirements/save-survey-result.md)
6. [Resultado da enquete](./requirements/load-survey-result.md)> ## Princípios
* 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)
* 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> ## 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
* Coveralls
* Bcrypt
* JsonWebToken
* Validator
* Express
* Supertest
* Husky
* Lint Staged
* Eslint
* Standard Javascript Style
* Sucrase
* Nodemon
* Rimraf
* In-Memory MongoDb Server
* MockDate
* Module-Alias> ## Features do Node
* Log de Erro
* Segurança (Hashing, Encryption e Encoding)
* CORS
* Middlewares
* Nível de Acesso nas Rotas (Admin, User e Anônimo)
* Deploy no Heroku> ## Features do Git
* Alias
* Log Personalizado
* Branch
* Reset
* Amend
* Tag
* Stash
* Rebase
* Merge> ## Features do Typescript
* POO Avançado
* Interface
* TypeAlias
* Utility Types
* Modularização de Paths
* Build
* Deploy
* Uso de Breakpoints> ## Features de Testes
* Testes Unitários
* Testes de Integração
* Cobertura de Testes
* Mocks
* Stubs
* Spies