Roadmap

Phase 2 FOUNDATION & SETUP

Get familiar with the tools, language and project setup

Milestone Frame the problem & understand user needs (Design Thinking)

BEFORE CODING — frame the problem and understand what the user needs (Design Thinking, condensed reading): Core problem: Movie lovers often find it difficult…

ULO-DESIGN_METHODOLOGIES-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Design Methodologies in the context of the project.
CIO-DESIGN_METHODOLOGIES-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Design Methodologies at the model level in the project.
SIO-SWIFT-DESIGN_METHODOLOGIES-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Design Methodologies using 'Design Thinking' on the app platform.

Milestone Install Xcode, Command Line Tools, Git, and verify the Swift toolchain

Open the Mac App Store, install the latest Xcode (or use an existing version).

ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Development Tools in the context of the project.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Development Tools at the model level in the project.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Development Tools using 'Project Navigator' on the app platform.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Version Control in the context of the project.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Version Control at the model level in the project.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Version Control using 'checkout -b' on the app platform.

Milestone Clone the MovieSwift base project and open it in Xcode

In Terminal, navigate to your desired workspace, e.g.

ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Development Tools in the context of the project.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Development Tools at the model level in the project.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Development Tools using 'Project Navigator' on the app platform.
ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Version Control in the context of the project.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Version Control at the model level in the project.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Version Control using 'checkout -b' on the app platform.

Milestone Build and run the app in the iOS Simulator to verify the base project works

Select an iPhone simulator (e.g.

ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Development Tools in the context of the project.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Development Tools at the model level in the project.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Development Tools using 'Project Navigator' on the app platform.

Milestone Learn minimal Swift and SwiftUI by creating a Hello World app

Create a new SwiftUI project in Xcode (File > New > Project) named `HelloWorld`.

ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Map the MovieSwift project structure, entry point, and architecture

In Xcode's Project Navigator, explore the folder tree under `MovieSwift`.

ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Development Tools in the context of the project.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Development Tools at the model level in the project.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Development Tools using 'Project Navigator' on the app platform.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-ARCHITECTURE_PATTERNS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Architecture Patterns in the context of the project.
CIO-ARCHITECTURE_PATTERNS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Architecture Patterns at the model level in the project.
SIO-SWIFT-ARCHITECTURE_PATTERNS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Architecture Patterns using 'Project Navigator' on the app platform.

Milestone Practice the development loop: edit, run, debug, and fix a basic compile error

Open an existing view like `HomeView.swift`.

ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Development Tools in the context of the project.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Development Tools at the model level in the project.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Development Tools using 'Project Navigator' on the app platform.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-ERROR_PREVENTION_AND_RECOVERY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Error Prevention and Recovery: The learner will be able to identify and design UI features that prevent errors from occurring and provide graceful recovery when errors do occur, including clear error messages, confirmations, and undo support.
CIO-ERROR_PREVENTION_AND_RECOVERY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Error Prevention and Recovery: The learner will be able to identify and design UI features that prevent errors from occurring and provide graceful recovery when errors do occur, including clear error messages, confirmations, and undo support.
SIO-SWIFT-ERROR_PREVENTION_AND_RECOVERY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Error Prevention and Recovery: The learner will be able to identify and design UI features that prevent errors from occurring and provide graceful recovery when errors do occur, including clear error messages, confirmations, and undo support.

Milestone Set up a feature branch and commit your initial work with Git

In Terminal, `cd` into the MovieSwift directory.

ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Version Control in the context of the project.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Version Control at the model level in the project.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Version Control using 'checkout -b' on the app platform.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.

Milestone Define the MoviesMenu enum and the MoviesHome tab container

Create the MoviesMenu enum with cases for popular, topRated, upcoming, nowPlaying, trending, and genres, and give it a title() method.

ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Create the debounced search observable and pagination listener

In MoviesSearch.swift, define MoviesSearchPageListener as a subclass of MoviesPagesListener.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-TIME_BASED_SCHEDULING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Time Based Scheduling: Timer represents a mechanism for scheduling actions after intervals; belongs to the broader time-based scheduling concept.
CIO-TIME_BASED_SCHEDULING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Time Based Scheduling: Timer represents a mechanism for scheduling actions after intervals; belongs to the broader time-based scheduling concept.
SIO-SWIFT-TIME_BASED_SCHEDULING-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Time Based Scheduling: Timer represents a mechanism for scheduling actions after intervals; belongs to the broader time-based scheduling concept.
ULO-PUBLISHER_SUBSCRIBER_MODEL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
CIO-PUBLISHER_SUBSCRIBER_MODEL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
SIO-SWIFT-PUBLISHER_SUBSCRIBER_MODEL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.

Milestone Create DiscoverFilterForm UI skeleton

In DiscoverFilterForm.swift, add the SwiftUI view structure: a NavigationView containing a Form with three sections (settingsSection, buttonsSection…

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.

Milestone Create MyLists screen with custom lists section

Implement MyLists view showing Custom Lists, Wishlist and Seenlist sections.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Set up Fan Club tab and people list scaffold

In HomeView, add the Fan Club tab to the TabView and point the OutlineMenu fanClub case to FanClubHome.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Create MyLists ConnectedView with Props and state mapping

Implement MyLists as a ConnectedView with a Props struct that exposes customLists, wishlist, and seenlist.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Phase 3 BUILD MVP

A runnable product from the start (minimal UI + logic + data)

Milestone Implement MoviesHomeList to fetch and display movies for a selected menu

Create MoviesHomeList as a ConnectedView.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-PUBLISHER_SUBSCRIBER_MODEL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
CIO-PUBLISHER_SUBSCRIBER_MODEL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
SIO-SWIFT-PUBLISHER_SUBSCRIBER_MODEL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.

Milestone Add the search field and movie results to the movies list

In MoviesList.swift, add @State searchTextWrapper (MoviesSearchTextWrapper), @State isSearching, and @State searchFilter (default movies).

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.

Milestone Create DiscoverCoverImage async poster component

Implement DiscoverCoverImage, an @ObservedObject view that renders a movie poster using ImageLoaderCache.shared.loaderFor(path:size:).

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-PUBLISHER_SUBSCRIBER_MODEL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
CIO-PUBLISHER_SUBSCRIBER_MODEL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
SIO-SWIFT-PUBLISHER_SUBSCRIBER_MODEL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.

Milestone Implement DraggableCover swipe gesture card

Create DraggableCover that wraps DiscoverCoverImage and supports a LongPressGesture sequenced with DragGesture.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Build DiscoverView connected to the Store

Implement DiscoverView as a ConnectedView.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Present DiscoverFilterForm from DiscoverView

In DiscoverView.swift, add @State private var isFilterFormPresented = false.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Implement era, genre and country pickers with apply/reset actions

In DiscoverFilterForm.swift, fill settingsSection with three Picker controls: Era (using datesText/datesInt), Genre (using store.state.moviesState.genres), and…

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.

Milestone Create MovieDetail connected view with overview section

Create MovieDetail as a ConnectedView that takes a movieId, maps AppState to movie props, dispatches FetchDetail on appear, and renders a List with the movie…

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.

Milestone Add cast and crew horizontal rows

In MovieDetail's bottomSection, add MovieCrosslinePeopleRow for the cast and crew.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.

Milestone Create MovieButtonsRow with Wishlist and Seenlist toggles

Create a new ConnectedView component MovieButtonsRow.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.

Milestone Integrate MovieButtonsRow into MovieDetail and show add confirmation

Add MovieButtonsRow to the topSection of MovieDetail.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Build CustomListForm to create a new custom list

Implement a form with a TextField for the list name and an optional movie cover picker using SearchField.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.

Milestone Create CustomListRow and CustomListCoverRow display components

Implement CustomListRow to show list name, movie count and cover poster, and CustomListCoverRow to render a movie backdrop for list covers.

ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.

Milestone Implement CustomListDetail for viewing and managing list movies

Build the detail screen with a list of movies from the custom list.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.

Milestone Add follow/unfollow controls for actors and crew

In PeopleRow, display the fan club star when the person is already followed.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.

Milestone Create PeopleDetail as a ConnectedView with profile header and fan club toggle

Create a new SwiftUI view named PeopleDetail conforming to ConnectedView.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Display known works and roles grouped by year

Populate movieByYears in the map function by iterating over the person's movie IDs from state.moviesState.withCrew[peopleId] and…

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.

Milestone Display list sections with custom lists and Wishlist/Seenlist picker

In MyLists.body, build the List UI: add a customListsSection that shows a 'Create custom list' button and a ForEach of props.customLists using NavigationLink +…

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Phase 4 EXPAND

Make it real: real APIs, file persistence, filters

Milestone Add all browse categories with paging and a grid view toggle

Update MoviesHome to use a TabView with PageTabViewStyle for swiping between all movie categories (popular, top rated, upcoming, now playing, trending).

ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Add keyword suggestions and a segmented movie/people filter

Extend Props in MoviesList.swift with searchedKeywords: [Keyword]?

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.

Milestone Show recent searches as instant suggestions

Extend Props in MoviesList.swift with recentSearches: [String] and populate it from state.moviesState.recentSearches when isSearching.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.

Milestone Add DiscoverFilterForm for filtering and saving

Create DiscoverFilterForm with pickers for date era, genre, and country.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Add saved filters list and save/delete actions

In DiscoverFilterForm.swift, extend savedFiltersSection to display savedDiscoverFilters from the store.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Add similar and recommended movies rows

Add MovieCrosslineRow to MovieDetail for similar and recommended movies.

ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Build movie reviews list

Add a reviews count link in MovieDetail's top section that navigates to MovieReviews.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Add posters and backdrops gallery

Add MoviePostersRow and MovieBackdropsRow to MovieDetail's bottom section.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Add swipe-to-add gestures in DiscoverView

In DiscoverView, implement the draggableCoverEndGestureHandler.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.

Milestone Build MyLists screen to manage wishlist and seenlist

Create MyLists as a ConnectedView.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.

Milestone Add sorting and editing of custom lists

Extend CustomListDetail with a sort ActionSheet (MoviesSort) and a header row showing the current sort order.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Show filmography grouped by year and compute fan score

In PeopleDetail.map, build movieByYears from peoplesState.peoplesMovies[peopleId], reading each movie's release year from moviesState.movies, and compute…

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.

Milestone Add fan club membership toggle and fan score display

Enhance the profile header to use the isInFanClub binding to drive the BorderedButton state, and dispatch the corresponding add/remove action on tap.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.

Milestone Add sorting options for wishlist and seenlist

Add a sort button in the navigation bar using Image(systemName: "line.horizontal.3.decrease.circle") that toggles isSortActionSheetPresented.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.

Milestone Enable swipe-to-delete for custom lists, wishlist, and seenlist

Attach .onDelete handlers to the ForEach loops: for custom lists dispatch MoviesActions.RemoveCustomList(list:), for wishlist dispatch…

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Phase 5 POLISH

Robustness: error handling, validation, tests, polish

Milestone Polish the movie list with pagination, loading placeholders, and search

Enhance MoviesList to show redacted placeholder rows while data is loading (movieId == 0), auto-load the next page via a Rectangle onAppear that increments the…

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-PUBLISHER_SUBSCRIBER_MODEL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
CIO-PUBLISHER_SUBSCRIBER_MODEL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.
SIO-SWIFT-PUBLISHER_SUBSCRIBER_MODEL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Publisher-Subscriber Model for UI: How @Published properties broadcast changes to automatically update subscribed views.

Milestone Add loading placeholders, empty states, and pagination

In MoviesList.swift, refine the movie and people sections: while search results are still loading (searchedMovies == nil), show redacted placeholder rows…

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.

Milestone Polish with haptics, background and undo/reset

Enhance DiscoverView with UIImpactFeedbackGenerator on successful swipe and UISelectionFeedbackGenerator during drag.

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.

Milestone Restore current filter values and harden edge cases

In DiscoverFilterForm.swift, add onAppear logic to prefill selectedDate, selectedGenre, and selectedCountry from currentFilter using firstIndex(on:) on…

ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.

Milestone Add wishlist/seenlist actions and success feedback

Add MovieButtonsRow to MovieDetail with BorderedButton for wishlist, seenlist, and custom list actions.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-KEY_VALUE_STORAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
CIO-KEY_VALUE_STORAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
SIO-SWIFT-KEY_VALUE_STORAGE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Key Value Storage: UserDefaults is a persistent key-value store for user preferences; maps to the generic key-value storage concept.
ULO-DATA_MODELS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Data Models in the context of the project.
CIO-DATA_MODELS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to apply Data Models at the model level in the project.
SIO-SWIFT-DATA_MODELS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Data Models using 'ForEach' on the app platform.

Milestone Polish with feedback badges and empty states

Add NotificationBadge feedback to all add/remove actions in MovieDetail and MyLists, animating the badge appearance with withAnimation.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.

Milestone Polish custom list flows with validation and empty states

Add validation to disable the save button when the list name is empty, show meaningful empty states when search has no results or the list has no movies, and…

ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.

Milestone Polish loading, empty, and feedback states

Add redacted placeholders while fan club and popular people lists are loading, show an empty-state message when no people are followed, guard the pagination…

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-TASK_DISPATCH-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Task Dispatch: DispatchQueue handles dispatching tasks for synchronous or asynchronous execution; maps to the generic task dispatch concept.
CIO-TASK_DISPATCH-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Task Dispatch: DispatchQueue handles dispatching tasks for synchronous or asynchronous execution; maps to the generic task dispatch concept.
SIO-SWIFT-TASK_DISPATCH-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Task Dispatch: DispatchQueue handles dispatching tasks for synchronous or asynchronous execution; maps to the generic task dispatch concept.

Milestone Polish people profile with loading and empty states

Refine PeopleDetail by adding empty and loading states.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
CIO-HTTP-HEADER-STATUS · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng phân tích các nhóm status code và HTTP header trong các yêu cầu giao tiếp.
CIO-HTTP-VERSIONS-EVOLUTION · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng so sánh sự khác biệt về hiệu năng giữa HTTP/1.1, HTTP/2 và HTTP/3 QUIC.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Hypertext Transfer Protocol: The learner will be able to explain the HTTP protocol's request/response cycle, methods, status codes, headers, and its role in web communication.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.

Milestone Add create custom list sheet

Add @State private var isEditingFormPresented = false and attach a .sheet(isPresented: $isEditingFormPresented) to the NavigationView in MyLists.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-UNIDIRECTIONAL_DATA_FLOW-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
CIO-UNIDIRECTIONAL_DATA_FLOW-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
SIO-SWIFT-UNIDIRECTIONAL_DATA_FLOW-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Unidirectional Data Flow: SwiftUIFlux is a state management library implementing Redux-style unidirectional data flow; no existing concept covers it.
ULO-LOCAL_VIEW_STATE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-LOCAL_VIEW_STATE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.
CIO-STATE-DECLARE-LOCAL · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng khai báo một biến trạng thái chỉ thuộc về một thành phần giao diện duy nhất và quản lý vòng đời của nó.
CIO-STATE-MUTATE · CONCEPTUAL_IMPL · Bloom: apply
Người học có khả năng thay đổi giá trị của một biến trạng thái để kích hoạt việc vẽ lại giao diện một cách tự động.
SIO-SWIFT-LOCAL_VIEW_STATE-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Local View State: Using @State to manage simple state local to a single view, destroyed when the view disappears.

Milestone Add empty-state placeholders and polish delete feedback

In each section, check if the corresponding array is empty.

ULO-UI_FRAMEWORKS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
CIO-UI_FRAMEWORKS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
SIO-SWIFT-UI_FRAMEWORKS-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Ui Frameworks: UIKit is a user interface framework; it is a specific manifestation of the general UI frameworks concept.
ULO-CORE_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
CIO-CORE_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.
SIO-SWIFT-CORE_LIBRARY-01 · SPECIFIC_IMPL · Bloom: create
The learner will be able to implement Core Library: Foundation is a base framework providing common data types and system utilities; maps to the generic concept of a core library.