Essa aplicativo faz parte do treinamento do professor Rodrigo Manguinho (Mango) na Udemy.
O objetivo do treinamento é mostrar como criar um aplicativo com Flutter usando uma arquitetura bem definida e desacoplada, seguindo 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 aplicando Design Patterns para resolver alguns problemas comuns.
- 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)
 - Command Query Responsibility Segregation (CQRS)
 - Composition Over Inheritance
 - Small Commits
 
- Factory
 - Adapter
 - Composite
 - Decorator
 - Dependency Injection
 - Abstract Server
 - Composition Root
 - Builder
 - Singleton
 - Observer
 - Strategy
 - AAA (Arrange, Act, Assert)
 
- TDD
 - BDD
 - Clean Architecture
 - Reactive Programming
 - GitFlow
 - Modular Design
 - Dependency Diagrams
 - Use Cases
 
- Flutter
 - Flutter Version Management
 - Http
 - Provider
 - GetX
 - Equatable
 - Mockito
 - Mocktail
 - Faker
 - Meta
 - Git
 - Flutter Secure Storage
 - LocalStorage
 - i18n
 - Image Test Utils
 - Network Image Mock
 
- Null Safety
 - Classes
 - Abstract Classes
 - Functions
 - Constants
 - Mixins
 - Extensions
 - Enums
 - Exceptions
 - Futures
 - Streams
 - Constructors
 - Async/Await
 - Stateless Widgets
 - Stateful Widgets
 - Material Theme
 - Assets
 - App Icon
 
- Testes Unitários
 - Testes de Widgets
 - Testes de Streams
 - Testes de Integração
 - Cobertura de Testes
 - Test Doubles
 - Mocks
 - Stubs
 - Spies
 
