Skip to content

DogPic is an Android application that demonstrates best practices in modern Android development with XML Views..

Notifications You must be signed in to change notification settings

RysanekRivera/DogPic

Repository files navigation

DogPic




DogPic is an Android application that demonstrates best practices in modern Android development. It fetches data from the Dog API, and displays a comprehensive list of dog breeds. It features an intuitive and user-friendly interface, including:

  • Dynamic Search: Quickly find dog breeds using a responsive search bar that supports real-time filtering.
  • Flexible Layouts: Custom XML views allow for seamless switch between different predefined layout themes.
  • Event Handling: User interactions are managed independently through the ViewModel layer, ensuring that business logic is decoupled from the UI.
  • Reactive Asynchronous Programming: The app leverages Kotlin Coroutines and StateFlow for efficient, non-blocking data fetching and UI updates, ensuring a smooth and responsive user experience. This approach enables the app to handle network latency and large data sets gracefully, while maintaining seamless UI performance.

The app is built using a modular and scalable architecture to ensure maintainability and testability. It leverages modern Android development tools and practices, including:

  • MVVM Pattern: Separating business logic from UI to facilitate testing and maintainability.
  • Multi-Module Architecture: For better separation of concerns, faster build times, and more flexible code management.
  • Clean Architecture: Following Uncle Bob's principles, separating the application into multiple layers (data, domain, and presentation) to achieve a clean and maintainable codebase.
  • Dagger-Hilt: For dependency injection, reducing boilerplate code and improving the testability of the app.

This project reflects industry standards for building scalable, maintainable, and testable Android applications. By adhering to modern development practices and utilizing a clean architecture, making it easily extensible and adaptable to future changes.