VictorTarnovski / clean-tdd-finances

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Clean Finances API

Essa API foi baseada nos ensinamos 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 construídas

  1. Cadastro
  2. Login
  3. Criar conta bancária
  4. Criar cartão de crédito/débito
  5. Consulta conta bancária por id
  6. Criar transação
  7. Listar transações pelo id da conta bancária

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
  • 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
  • Bcrypt
  • JsonWebToken
  • Coveralls
  • Validator
  • Express
  • Supertest
  • Husky
  • Lint Staged
  • Eslint
  • Standard Javascript Style
  • Nodemon
  • Rimraf
  • In-Memory MongoDb Server
  • MockDate
  • Module-Alias
  • Copyfile
  • Bson ObjectId

Features do Node

  • API Rest com Express
  • Log de Erro
  • Segurança (Hashing, Encryption e Encoding)
  • CORS
  • Middlewares
  • Nível de Acesso nas Rotas (Admin, User e Anônimo)
  • Deploy no Render
  • Servir Arquivos Estáticos

Features do Git

  • Alias
  • Branch
  • Amend
  • Tag
  • 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)
  • Cobertura de Testes
  • Mocks
  • Stub

About


Languages

Language:TypeScript 99.7%Language:JavaScript 0.2%Language:Shell 0.1%Language:Dockerfile 0.0%