Project · Clone of Letterboxd
Reeler
A 6-part build: a spec, 3 milestone guides, 1 AI checkpoint, and a defend-your-code rubric. You build it in Xcode on a Mac; each guide walks the exact Swift 6 patterns.
The spec
Milestones
3 steps · 285 min total- 1search, MVVM, and dependency injection60 minDefine an APIClient protocol and inject it into a view model · Build an @Observable @MainActor view model with idle/loading/loaded/failed states
- 2detail screen and load-more pagination55 minNavigate to a detail screen with value-based NavigationStack · Pass a value, not a reference, as the navigation destination
- 3the image cache and your film data75 minBuild an actor-based image cache that is safe under concurrent access · Model your film data (rating, like, watchlist, review) with a SwiftData @Model
AI checkpoints
Review the diff, then grade your fixAI checkpoint — review before you acceptthe leaking image loader
import UIKit
final class PosterLoader {
private(set) var image: UIImage?
var onReload: (() -> Void)?
private let url: URL
private var cache: [URL: UIImage] = [:]
init(url: URL) {
self.url = url
// Store a reload closure the cell can call to force a fresh download.
… 20 more lines — download or open to review in full