MCPcopy Index your code
hub / github.com/rmanguinho/clean-ts-api

github.com/rmanguinho/clean-ts-api @3.0.0 sqlite

repository ↗ · DeepWiki ↗ · release 3.0.0 ↗
363 symbols 924 edges 245 files 0 documented · 0%
README

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

Clean Node API

alt text


Link para o curso completo

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.

Link para a documentação da API

APIs construídas no treinamento

  1. Cadastro
  2. Login
  3. Criar enquete
  4. Listar enquetes
  5. Responder enquete
  6. Resultado da enquete

Princípios

  • 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

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
  • Swagger
  • Bcrypt
  • JsonWebToken
  • Faker
  • Coveralls
  • Validator
  • Express
  • Apollo Server Express
  • Graphql
  • Graphql ISO Date
  • 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

Features do Node

  • Documentação de API com Swagger
  • API Rest com Express
  • GraphQL com Apollo Server
  • 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
  • Servir Arquivos Estáticos

Features do GraphQL

  • Types
  • Queries
  • Mutations
  • Resolvers
  • Directives
  • Scalars
  • Plugins

Features do Git

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

Features do Typescript

  • POO Avançado
  • Interface
  • TypeAlias
  • Namespace
  • Utility Types
  • Modularização de Paths
  • Configurações
  • Build
  • Deploy
  • Uso de Breakpoints

Features de Testes

  • Testes Unitários
  • Testes de Integração (API Rest & GraphQL)
  • Cobertura de Testes
  • Test Doubles
  • Mocks
  • Stubs
  • Spies
  • Fakes

Features do MongoDb

  • 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

Extension points exported contracts — how you extend this code

Controller (Interface)
(no doc) [8 implementers]
src/presentation/protocols/controller.ts
Decrypter (Interface)
(no doc) [2 implementers]
src/data/protocols/cryptography/decrypter.ts
LoadSurveyResult (Interface)
(no doc) [2 implementers]
src/domain/usecases/load-survey-result.ts
EmailValidator (Interface)
(no doc) [2 implementers]
src/validation/protocols/email-validator.ts
Request (Interface)
(no doc)
src/main/config/custom-modules.d.ts
Validation (Interface)
(no doc) [5 implementers]
src/presentation/protocols/validation.ts
Hasher (Interface)
(no doc) [2 implementers]
src/data/protocols/cryptography/hasher.ts
Authentication (Interface)
(no doc) [2 implementers]
src/domain/usecases/authentication.ts

Core symbols most depended-on inside this repo

serverError
called by 18
src/presentation/helpers/http-helper.ts
load
called by 15
tests/presentation/mocks/mock-survey.ts
mockAddAccountParams
called by 14
tests/domain/mocks/mock-account.ts
ok
called by 13
src/presentation/helpers/http-helper.ts
forbidden
called by 11
src/presentation/helpers/http-helper.ts
mockAuthenticationParams
called by 11
tests/domain/mocks/mock-account.ts
auth
called by 11
tests/presentation/mocks/mock-account.ts
add
called by 10
tests/data/mocks/mock-db-survey.ts

Shape

Class 130
Method 107
Function 95
Interface 31

Languages

TypeScript100%

Modules by API surface

tests/data/mocks/mock-db-survey.ts15 symbols
tests/data/mocks/mock-db-account.ts15 symbols
tests/presentation/mocks/mock-survey.ts12 symbols
tests/data/mocks/mock-cryptography.ts12 symbols
src/infra/db/mongodb/query-builder.ts10 symbols
tests/presentation/mocks/mock-account.ts9 symbols
src/infra/db/mongodb/survey-mongo-repository.ts7 symbols
src/infra/db/mongodb/account-mongo-repository.ts7 symbols
tests/presentation/mocks/mock-survey-result.ts6 symbols
tests/data/mocks/mock-db-survey-result.ts6 symbols
src/presentation/helpers/http-helper.ts6 symbols
tests/main/decorators/log-controller-decorator.spec.ts5 symbols

Dependencies from manifests, versioned

@shelf/jest-mongodb1.2.1 · 1×
@types/bcrypt3.0.0 · 1×
@types/express4.17.9 · 1×
@types/express-serve-static-core4.17.14 · 1×
@types/faker5.1.4 · 1×
@types/graphql14.5.0 · 1×
@types/graphql-iso-date3.4.0 · 1×
@types/jest26.0.15 · 1×
@types/jsonwebtoken8.5.0 · 1×
@types/mongodb3.5.34 · 1×
@types/node14.14.10 · 1×
@types/supertest2.0.10 · 1×

Datastores touched

(mongodb)Database · 1 repos
clean-node-apiDatabase · 1 repos

For agents

$ claude mcp add clean-ts-api \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact