// the find
Dimillian/MovieSwiftUI
SwiftUI & Combine app using MovieDB API. With a custom Flux (Redux) implementation.
MovieSwiftUI is a demo movie browser app (TheMovieDB API) built entirely in SwiftUI with a hand-rolled Flux/Redux state container. It's aimed at iOS/macOS developers who want to see what a non-trivial, real-world-shaped SwiftUI app looks like, not people who want a TMDB client to actually use.
The Flux implementation is small and readable — a single ObservableObject root state injected via environment, actions dispatched through a reducer, no third-party state library to learn. It's genuinely multi-target (iPhone, iPad, macOS, tvOS) sharing one codebase, which is a decent reference for SwiftUI's cross-platform story circa 2020. Splitting Backend and UI into separate Swift Packages keeps networking/image-loading logic testable and decoupled from views, which a lot of SwiftUI sample apps don't bother with.
Last commit is from January 2024 and it's built against pre-Observation-framework SwiftUI/Combine — the patterns here (ObservableObject, @Published state blobs, manual Flux) are exactly what Apple's newer @Observable macro was designed to replace, so it reads as dated rather than current practice. No tests anywhere in the tree despite the architecture being reducer-based, which is normally the easiest part of an app to unit test. The Flux store is a single monolithic state object with no apparent reducer composition, which won't scale past demo-app size without becoming a bottleneck for unrelated view updates. It depends on a hardcoded TMDB API key setup with no documented way to configure your own without digging through source.