This application is part of the training of Professor Rodrigo Manguinho (Mango) on Udemy.
The objective of the training is to show how to create an application with Flutter using a well-defined and decoupled architecture, following TDD (test-oriented programming) as a working methodology, Clean Architecture to distribute responsibilities in layers, always following the principles of SOLID and 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)
- 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
- Unit testing
- Widgets testing
- Streams testing
- Integration testing
- Test Coverage
- Test Doubles
- Mocks
- Stubs
- Spies