The codebase is overall well-structured, demonstrating a clear understanding of Swift's asynchronous programming model and best practices like encapsulation, and separation of concerns. You have highlighted potential improvement areas through comments, especially concerning image handling, which still needs resolution. Implementing improvements related to repeated patterns could enhance code maintainability and readability.
- **Alamofire:** An HTTP networking library written in Swift that simplifies making network requests. It may be worth comparing if it provides additional benefits.
- **Moya:** A network abstraction layer built on top of Alamofire which provides additional features to handle network requests in a more organized manner.
- **Combine framework's URLSession:** With the Combine framework, you can handle HTTP networking tasks concurrently efficiently, simplifying error handling and response data parsing.