WLED Swift Library (wledlib run 9)

📋 WLEDLIB_ROADMAP_RUN9

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: Developers need a simple, reliable…

ULO-DOCUMENTATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of feature documentation as an organized specification of a project's capabilities.
CIO-DOCUMENTATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Features document structure that lists and describes each functional capability of the project.
SIO-SWIFT-DOCUMENTATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Features section in project documentation for a Swift project.

Milestone Install and verify the Swift development environment

Install Xcode (includes Swift, iOS Simulator) and Git; open Terminal and verify with `swift --version`, `git --version`, and `xcode-select -p`.

ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of Swift Package Manager as a tool for managing dependencies and building Swift packages.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift package architecture using Swift Package Manager to manage modules and dependencies.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package definition with Swift Package Manager in Swift.
ULO-TESTING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the role of Swift Package Manager in defining and running test targets.
CIO-TESTING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a test suite organized into SPM test targets that verify WledHost behavior.
SIO-SWIFT-TESTING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement unit tests in Swift Package Manager using XCTest for WledHost methods.
ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand versioning rules for Swift packages, including semantic versioning and dependency resolution.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a dependency configuration using SPM that specifies version ranges for WledLib.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package manifest in Swift Package Manager that declares version constraints for external dependencies.
ULO-PACKAGE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the structure of PackageDescription as the declarative API for defining Swift packages and their dependencies.
CIO-PACKAGE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift package manifest using PackageDescription that specifies products, targets, and external dependencies.
SIO-SWIFT-PACKAGE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a package manifest with PackageDescription in Swift Package Manager, declaring library and executable targets.

Milestone Clone the base-project repository

In Terminal, run `git clone <repo-url>` then `cd` into the project folder. List the files to confirm the structure you will be working with.

ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand versioning rules for Swift packages, including semantic versioning and dependency resolution.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a dependency configuration using SPM that specifies version ranges for WledLib.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package manifest in Swift Package Manager that declares version constraints for external dependencies.
ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of Swift Package Manager as a tool for managing dependencies and building Swift packages.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift package architecture using Swift Package Manager to manage modules and dependencies.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package definition with Swift Package Manager in Swift.

Milestone Build the base-project with Swift Package Manager

Run `swift build` at the project root to compile the library.

ULO-PACKAGE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the structure of PackageDescription as the declarative API for defining Swift packages and their dependencies.
CIO-PACKAGE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift package manifest using PackageDescription that specifies products, targets, and external dependencies.
SIO-SWIFT-PACKAGE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a package manifest with PackageDescription in Swift Package Manager, declaring library and executable targets.
ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of Swift Package Manager as a tool for managing dependencies and building Swift packages.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift package architecture using Swift Package Manager to manage modules and dependencies.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package definition with Swift Package Manager in Swift.

Milestone Learn minimal Swift and URLSession with a small demo

Create a temporary SwiftUI app (single screen) or command-line tool: use variables, types, functions, if/for, and a Text view; make a simple URLSession GET…

ULO-PROGRAMMING_LANGUAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand how Swift's protocol-oriented design and result builders form the foundation for SwiftUI's declarative API.
CIO-PROGRAMMING_LANGUAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a custom SwiftUI component that leverages view composition, state management, and environment values.
SIO-SWIFT-PROGRAMMING_LANGUAGE-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a SwiftUI-based interactive component in Swift, utilizing state and binding mechanics and declarative view construction to create dynamic layouts.
ULO-UI_FRAMEWORK-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the component hierarchy and view lifecycle in SwiftUI's declarative framework.
CIO-UI_FRAMEWORK-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a SwiftUI interface that adapts to different device sizes and appearance modes.
SIO-SWIFT-UI_FRAMEWORK-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a responsive SwiftUI layout in Swift using stacks, frames, and adaptive modifiers.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-CONCURRENCY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of concurrency as the concurrent execution and scheduling of tasks through dispatch queues.
CIO-CONCURRENCY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a concurrent execution model that uses DispatchQueue to schedule tasks on appropriate threads.
SIO-SWIFT-CONCURRENCY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a DispatchQueue-based concurrency mechanism in Swift.

Milestone Map the library repository

Open `Sources/WledLib/` and inspect the folders: `DataStructs` model WLED JSON, `WledHost` handles connections, `ProtocolExtensions` add high-level operations…

ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand versioning rules for Swift packages, including semantic versioning and dependency resolution.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a dependency configuration using SPM that specifies version ranges for WledLib.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package manifest in Swift Package Manager that declares version constraints for external dependencies.
ULO-DOCUMENTATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of feature documentation as an organized specification of a project's capabilities.
CIO-DOCUMENTATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Features document structure that lists and describes each functional capability of the project.
SIO-SWIFT-DOCUMENTATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Features section in project documentation for a Swift project.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.

Milestone Run the build-test-debug loop

For every change, run `swift build` or press Cmd+B, then `swift test` or run a demo app.

ULO-DEVELOPMENT_TOOLS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of Swift Package Manager as a tool for managing dependencies and building Swift packages.
CIO-DEVELOPMENT_TOOLS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift package architecture using Swift Package Manager to manage modules and dependencies.
SIO-SWIFT-DEVELOPMENT_TOOLS-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package definition with Swift Package Manager in Swift.
ULO-TESTING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the role of Swift Package Manager in defining and running test targets.
CIO-TESTING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a test suite organized into SPM test targets that verify WledHost behavior.
SIO-SWIFT-TESTING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement unit tests in Swift Package Manager using XCTest for WledHost methods.
ULO-DEBUGGING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of compile errors as diagnostics generated during Swift compilation.
CIO-DEBUGGING-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a debugging workflow that systematically resolves compile errors by interpreting compiler messages.
SIO-SWIFT-DEBUGGING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement corrections for Compile Errors in Swift by editing source code.

Milestone Use the minimal git workflow

Before starting the first feature, create a branch with `git checkout -b feature/F0-setup`.

ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand versioning rules for Swift packages, including semantic versioning and dependency resolution.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a dependency configuration using SPM that specifies version ranges for WledLib.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a package manifest in Swift Package Manager that declares version constraints for external dependencies.

Milestone Define Device model

Create Device struct that combines State and Info with Codable conformance.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the ObservableObject pattern for propagating state changes in Swift applications.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an observable state model that conforms to ObservableObject and publishes updates to SwiftUI views.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement an ObservableObject class in Swift that manages WLED connection state and publishes changes.
ULO-DOCUMENTATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of feature documentation as an organized specification of a project's capabilities.
CIO-DOCUMENTATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Features document structure that lists and describes each functional capability of the project.
SIO-SWIFT-DOCUMENTATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Features section in project documentation for a Swift project.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.

Milestone Define WledHTTPPost protocol

Create a protocol for types that can be POSTed to the device.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-PROGRAMMING_LANGUAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand how Swift's protocol-oriented design and result builders form the foundation for SwiftUI's declarative API.
CIO-PROGRAMMING_LANGUAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a custom SwiftUI component that leverages view composition, state management, and environment values.
SIO-SWIFT-PROGRAMMING_LANGUAGE-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a SwiftUI-based interactive component in Swift, utilizing state and binding mechanics and declarative view construction to create dynamic layouts.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.

Milestone Add asynchronous GET request

Use URLSession dataTask to fetch WLED data without blocking the caller.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.

Milestone Define WledHost protocol

Create WledHost protocol requiring hostname and factory method for devices.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-PROGRAMMING_LANGUAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand how Swift's protocol-oriented design and result builders form the foundation for SwiftUI's declarative API.
CIO-PROGRAMMING_LANGUAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a custom SwiftUI component that leverages view composition, state management, and environment values.
SIO-SWIFT-PROGRAMMING_LANGUAGE-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a SwiftUI-based interactive component in Swift, utilizing state and binding mechanics and declarative view construction to create dynamic layouts.

Milestone Define Preset model

Create Preset struct with a Codable name field for preset identification.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.

Milestone Conform Device to WledWebSocketData

Add WebSocket path constant and Decodable conformance for Device.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.

Phase 3 BUILD MVP

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

Milestone Define Info and nested structs

Add Info, Leds, and Wifi structs with matching JSON coding keys.

ULO-DOCUMENTATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of feature documentation as an organized specification of a project's capabilities.
CIO-DOCUMENTATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Features document structure that lists and describes each functional capability of the project.
SIO-SWIFT-DOCUMENTATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Features section in project documentation for a Swift project.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.

Milestone Define State and Segment structs

Implement State, Segment, and Nightlight to represent lamp status and effects.

ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the ObservableObject pattern for propagating state changes in Swift applications.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an observable state model that conforms to ObservableObject and publishes updates to SwiftUI views.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement an ObservableObject class in Swift that manages WLED connection state and publishes changes.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.

Milestone Conform State to WledHTTPPost

Add SET_PATH and HTTP_PATH for /json/state to enable sending state updates.

ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the ObservableObject pattern for propagating state changes in Swift applications.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an observable state model that conforms to ObservableObject and publishes updates to SwiftUI views.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement an ObservableObject class in Swift that manages WLED connection state and publishes changes.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.

Milestone Add SuccessMessage response

Define SuccessMessage and conform it to WledHTTPResponse for command confirmation.

ULO-RESULT_HANDLING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the result pattern for modeling success and failure outcomes in asynchronous network operations.
CIO-RESULT_HANDLING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a result-handling strategy for WledHost that distinguishes between successful responses and error cases.
SIO-SWIFT-RESULT_HANDLING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a WledHost client in Swift that returns Result types for asynchronous WLED command execution.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.

Milestone Add asynchronous POST request

Encode object to JSON and send via dataTask with completion handlers.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.

Milestone Validate HTTP response

Check status code 200 and Content-Type header for valid server responses.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-ERROR_HANDLING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of runtime error handling in Swift using do-catch blocks.
CIO-ERROR_HANDLING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an error handling strategy using do-catch to separate recoverable errors from failures.
SIO-SWIFT-ERROR_HANDLING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement do-catch blocks to handle errors in Swift.

Milestone Setup Bonjour mDNS browser

Initialize NWBrowser with WLED service type and local network parameters.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.

Milestone Handle browser results

Process added/removed/changed results and update discovered device set.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-RESULT_HANDLING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the result pattern for modeling success and failure outcomes in asynchronous network operations.
CIO-RESULT_HANDLING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a result-handling strategy for WledHost that distinguishes between successful responses and error cases.
SIO-SWIFT-RESULT_HANDLING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a WledHost client in Swift that returns Result types for asynchronous WLED command execution.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.

Milestone Create Presets container

Implement Presets struct with 17 preset slots and computed array of tuples.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.
ULO-STANDARD_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core utilities provided by Foundation for data serialization, date handling, and networking.
CIO-STANDARD_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a data model that uses Foundation protocols and classes for encoding and decoding JSON from WLED responses.
SIO-SWIFT-STANDARD_LIBRARY-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a Foundation-based JSON decoder in Swift to parse WLED state data from a data stream.

Milestone Add presets GET path

Conform Presets to WledHttGet and define /presets.json as its GET path.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.

Milestone Implement generic WebSocket receiver

Create WebSocket task from URLSession and prepare receive handler.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.

Milestone Add recursive receive loop

Decode incoming messages and re-register completion for continuous updates.

ULO-CONCURRENCY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of concurrency as the concurrent execution and scheduling of tasks through dispatch queues.
CIO-CONCURRENCY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a concurrent execution model that uses DispatchQueue to schedule tasks on appropriate threads.
SIO-SWIFT-CONCURRENCY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a DispatchQueue-based concurrency mechanism in Swift.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.

Phase 4 EXPAND

Make it real: real APIs, file persistence, filters

Milestone Add GET endpoint support

Conform Device to WledHttGet and define /json as its GET path.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-PROGRAMMING_LANGUAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand how Swift's protocol-oriented design and result builders form the foundation for SwiftUI's declarative API.
CIO-PROGRAMMING_LANGUAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a custom SwiftUI component that leverages view composition, state management, and environment values.
SIO-SWIFT-PROGRAMMING_LANGUAGE-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a SwiftUI-based interactive component in Swift, utilizing state and binding mechanics and declarative view construction to create dynamic layouts.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.

Milestone Implement send method

Implement WledHost.send to encode State and POST it via URLSession.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.

Milestone Decode JSON into Codable models

Use JSONDecoder to parse response data into generic WledHTTPGet/Response types.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.

Milestone Invoke completion handlers

Wire data, response, and error into user-provided callbacks for async operation.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-ERROR_HANDLING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of runtime error handling in Swift using do-catch blocks.
CIO-ERROR_HANDLING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an error handling strategy using do-catch to separate recoverable errors from failures.
SIO-SWIFT-ERROR_HANDLING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement do-catch blocks to handle errors in Swift.
ULO-CONCURRENCY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of concurrency as the concurrent execution and scheduling of tasks through dispatch queues.
CIO-CONCURRENCY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a concurrent execution model that uses DispatchQueue to schedule tasks on appropriate threads.
SIO-SWIFT-CONCURRENCY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a DispatchQueue-based concurrency mechanism in Swift.

Milestone Publish discovered devices

Expose discovered devices as a @Published set for SwiftUI observation.

ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the ObservableObject pattern for propagating state changes in Swift applications.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an observable state model that conforms to ObservableObject and publishes updates to SwiftUI views.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement an ObservableObject class in Swift that manages WLED connection state and publishes changes.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.

Milestone Fetch preset list

Use WledHost.get to retrieve and decode the device's preset list.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.

Milestone Handle WebSocket errors gracefully

Propagate failures via handleError and keep task open on success.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-ERROR_HANDLING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of runtime error handling in Swift using do-catch blocks.
CIO-ERROR_HANDLING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an error handling strategy using do-catch to separate recoverable errors from failures.
SIO-SWIFT-ERROR_HANDLING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement do-catch blocks to handle errors in Swift.

Milestone Enable task cancellation and cleanup

Return URLSessionWebSocketTask to allow caller to stop live updates.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-CONCURRENCY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of concurrency as the concurrent execution and scheduling of tasks through dispatch queues.
CIO-CONCURRENCY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a concurrent execution model that uses DispatchQueue to schedule tasks on appropriate threads.
SIO-SWIFT-CONCURRENCY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a DispatchQueue-based concurrency mechanism in Swift.

Phase 5 POLISH

Robustness: error handling, validation, tests, polish

Milestone Fetch and decode via URLSession

Implement WledHost.get to perform GET request and decode JSON into Device.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization as a mapping between Swift types and JSON data.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable model that mirrors the JSON structure for serialization and deserialization.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement JSON encoding using JSONEncoder in Swift.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.

Milestone Add control convenience APIs

Expose State properties to control on/off, brightness, colors, and effects easily.

ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the ObservableObject pattern for propagating state changes in Swift applications.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an observable state model that conforms to ObservableObject and publishes updates to SwiftUI views.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement an ObservableObject class in Swift that manages WLED connection state and publishes changes.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.

Milestone Manage discovery lifecycle

Add start and stop service methods to control the mDNS browser.

ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-CONCURRENCY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of concurrency as the concurrent execution and scheduling of tasks through dispatch queues.
CIO-CONCURRENCY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a concurrent execution model that uses DispatchQueue to schedule tasks on appropriate threads.
SIO-SWIFT-CONCURRENCY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a DispatchQueue-based concurrency mechanism in Swift.

Milestone Apply selected preset

Send State with selectedPresetId via WledHTTPPost to activate a preset.

ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the ObservableObject pattern for propagating state changes in Swift applications.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an observable state model that conforms to ObservableObject and publishes updates to SwiftUI views.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement an ObservableObject class in Swift that manages WLED connection state and publishes changes.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, methods, and status codes.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a URLSession-based HTTP client that maps requests to responses and status codes.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement HTTP requests using URLSession in Swift.
ULO-NETWORKING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of networking as the exchange of data through network APIs.
CIO-NETWORKING-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a networking service layer that encapsulates API endpoints and data transfer.
SIO-SWIFT-NETWORKING-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement network calls using the Network API in Swift.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of LED strip control through asynchronous commands provided by the WledLib library.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a controller layer for WledLib that abstracts LED command sequences.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement LED control commands using WledLib in Swift.