Example iOS app designed using MVVM-C and Clean Architecture. Uses Swift Concurrency.
Example iOS app designed using MVVM-C and Clean Architecture. Uses Swift Concurrency.
The app retrieves images for any search query or tag via the Flickr API. It has three modules: ImageSearch, ImageDetails, HotTags.
![]() |
![]() |
![]() |
Presentation (MVVM): coordinators, UI elements, SwiftUI views, UIKit storyboards, ViewControllers, ViewModels
Domain: entities, use cases, services, interfaces (for use cases, services and repositories)
Data: entity repositories, APIs, API/DB interactors (or network services and storages), adapters
ImageSearch module:
* searchImagesUseCase.execute(imageQuery)
* imageCachingService.cacheIfNecessary(data)
* imageCachingService.getCachedImages(searchId: searchId)
ImageDetails module:
* getBigImageUseCase.execute(for: image)
HotTags module:
* getHotTagsUseCase.execute()
ImageCachingService implements the logic for caching downloaded images and freeing memory. This helps keep the app’s memory usage under control, since there can be a lot of downloaded images, and without caching, the app could quickly accumulate hundreds of MB of memory used. Downloaded images are cached and read from the cache automatically.
iOS version support: 15.0+. Xcode 13.0+, Swift 5.5+