Application Architecture
The app follows feature driven design and domain driven design principles. The app is divided into multiple features, each feature is a separate module. Each module contains its own business logic, UI, and data layer. The modules are independent of each other and can be developed, and tested, separately.
Project structure
The project structure is as follows:
├── feature
│ ├── application
| | ├── feature_cubit.dart
| | ├── feature_state.dart
│ ├── domain
| | ├── entities
| | | ├── feature_entity.dart
| | ├── repositories
| | | ├── i_feature_repository.dart
│ ├── infrastructure
| | ├── feature_repository_impl.dart
│ └── presentation
| ├── pages
| | ├── feature_page.dart
| ├── components
| | ├── feature_widget.dart
└── configure_dependencies.dart
feature
- Contains the feature module.application
- Contains the state management logic of the feature.domain
- Contains the entities and repositories/contracts of the feature.infrastructure
- Contains the implementation of the repositories.presentation
- Contains the UI of the feature.