This Flutter project provides a dashboard for displaying images of dogs. It allows users to view random images of dogs by breed and sub-breed, as well as a list of images by breed and sub-breed.
Users can select a breed and view a random image of a dog from that breed.
Users can select a breed and view a list of images of dogs from that breed.
Users can select a breed and a sub-breed (if available) and view a random image of a dog from that specific category.
Users can select a breed and a sub-breed (if available) and view a list of images of dogs from that specific category.
The project follows the Model-View-ViewModel (MVVM) architecture. This architecture separates the business logic and data layer from the user interface, making the code more maintainable and testable.
Represents the data and business logic of the application.
Represents the UI of the application. It observes the ViewModel.
Acts as a link between the Model and the View. It handles the business logic and provides data to the View.
The codebase adheres to best practices in Flutter development, ensuring readability, scalability, and maintainability. The project uses:
- Dio: For making network requests.
- Riverpod: For state management and dependency injection.
- Logger: For logging and debugging.
The project includes unit tests and integration tests to ensure the reliability and performance of the application. Tests cover critical functionalities, end-to-end user flow and components.
The project includes CI/CD configuration for automated building, testing, and artifact generation for Android, Web, and Windows platforms. This ensures that every change in the codebase is automatically tested and verified, maintaining the overall quality of the application.
- Clone the repository.
- Navigate to the project directory.
- Run
flutter pub get
to install dependencies. - Run
flutter run
to start the application.