A modern iOS application built with Swift that displays cat breeds with images, supports offline functionality, and provides a seamless user experience.
- Browse Cat Breeds: View a beautiful collection of cat breeds with high-quality images
- Search Functionality: Real-time search by breed ID with debouncing
- Offline Support: Download breeds for offline viewing
- Pull-to-Refresh: Refresh content with smooth pull-to-refresh gesture
- Infinite Scrolling: Automatic loading of more content as you scroll
- Network Monitoring: Real-time network status detection
- Rxswift: Used for downloading and caching images asynchronously.
- SVDProgressHub
- SDImage
- MVVM Architecture: Clean separation of concerns
- Reactive Programming: RxSwift for reactive data flow
- Async/Await: Modern concurrency for network operations
- Local Storage: Persistent data storage
- Unit Testing: Comprehensive test coverage
For details about architecture, please visit this
We chose MVVM (Model-View-ViewModel) because:
- π Fast development: Simple and lightweight, allowing us to implement features quickly.
- π Popular: Widely adopted in the iOS community, with strong support and resources available.
- π§ͺ Easy unit testing: Business logic is separated into the ViewModel, making testing straightforward without relying on UI components.
This makes MVVM a practical choice where both development speed and code quality are priorities. Because of time constraints, I planned to use MVVM - Clean Architecture for larger projects but couldn't
- Clone this repository to your local machine.
git clone https://github.com/hiepcute/CatList.git