A Flutter Job Assessment project.
- Ensure you have Flutter installed.
- Install dependencies by running:
flutter pub get
- Run the app:
flutter run
This project follows Clean Architecture with Riverpod for state management. The architecture ensures separation of concerns, modularization, and testability.
- Application Layer: Contains grouped UseCases that handle business logic. If there are API calls, this layer ensures all related actions are grouped together. For example, user management actions like
deleteUser,addUser, etc. - Data Layer: Contains repository implementations and interfaces. This layer interacts with external data sources (e.g., API, local storage) and provides data to the application layer.
- Presentation Layer: Handles the UI, including screens and widgets. UI components do not interact with core logic directly but use providers to access state and logic implicitly.
We use Riverpod for state management, ensuring that:
- The UI does not directly interact with business logic.
- State and Notifier classes are responsible for managing and exposing application state.
- The UI subscribes to state changes via Riverpod providers.
✅ Loose Coupling: The UI is decoupled from business logic. ✅ Scalability: The architecture allows for easy expansion and feature additions. ✅ Testability: Business logic and UI can be tested independently. ✅ Maintainability: Clear separation of concerns improves code readability and maintainability.
- Cached network images are used via
CachedNetworkImageProviderto optimize performance. - API calls and other side effects are properly abstracted within use cases and repositories.