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