Project · Clone of Overcast
Trackcast
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 · 320 min total- 1audio playback75 minConfigure and activate an AVAudioSession for playback · Drive an AVPlayer with play, pause, and seek from an @Observable model
- 2background audio and downloads85 minEnable background audio and wire up the lock-screen now-playing info and remote commands · Run offline episode downloads with a URLSession background configuration
- 3a now-playing Live Activity60 minModel a Live Activity's static and dynamic state with ActivityKit · Start, update, and end a now-playing activity from the player model
AI checkpoints
Review the diff, then grade your fixAI checkpoint — review before you acceptProject 8 · AI checkpoint — the download-progress data race
import Foundation
final class DownloadManager: NSObject, URLSessionDownloadDelegate, @unchecked Sendable {
// Progress for each in-flight download, keyed by task id.
private var progress: [Int: Double] = [:]
var overallProgress: Double {
guard !progress.isEmpty else { return 0 }
return progress.values.reduce(0, +) / Double(progress.count)
}
func urlSession(_ session: URLSession,
… 15 more lines — download or open to review in full