MoviesFeed
iOS app demonstrating TDD, clean architecture
An iOS application built to demonstrate effective development techniques with a focus on Test-Driven Development (TDD), Clean Architecture, reusability, and maintainability.
GitHub repository: aekimov/AEFeed
Overview
Showcases:
- Online & offline movie feed support
- Local caching with timestamp validation
- Review loading for movies
- Separation of concerns through Clean Architecture
- MVP UI pattern with clear loading states
API token from The Movie Database is needed to run the app.
Key Features
1. Always up-to-date online feed
When online, automatically fetch the latest movie feed to ensure a smooth, fresh experience.
2. Offline-first experience
When offline, load the last saved feed from cache, so you can still browse even without internet.
3. Movie reviews
Each movie can display a feed of reviews, offering valuable insight before you decide what to watch.
Dependency Diagram
MVP UI — Loading State Example
Technical Highlights
- Architecture: Clean Architecture with clear boundaries
- Pattern: Model-View-Presenter (MVP)
- Testing: Fully TDD-driven with isolated feature tests
- Caching: Local persistence with CoreData for feed and images, with expiry rules
- Networking: URLSession-based HTTP client with dependency injection