WLED Swift Library (wledlib run 12)

📋 WLEDLIB_ROADMAP_RUN12

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 Swift library to…

ULO-METHODOLOGY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the principles of Design Thinking, a human-centered methodology for creative problem solving.
CIO-METHODOLOGY-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a Design Thinking workshop plan that includes empathize, define, ideate, prototype, and test phases.
SIO-SWIFT-METHODOLOGY-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a Design Thinking approach in a Swift project by creating a prototype for user feedback.
ULO-USER_EXPERIENCE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of user experience as a holistic measure of usability, accessibility, and satisfaction in software interaction.
CIO-USER_EXPERIENCE-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a user-centered design process using Design Thinking, including empathy mapping, prototyping, and iterative testing for a Swift app.
SIO-SWIFT-USER_EXPERIENCE-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement the 'Design Thinking' keyword in Swift by conducting a user research session and translating findings into a SwiftUI interface prototype.
ULO-DOCUMENTATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the practices of writing documentation for Swift libraries, including the use of DocC to generate interactive documentation from source comments.
CIO-DOCUMENTATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a documentation structure for a WLED control library that includes API reference, usage guides, and examples, organized in a DocC catalog.
SIO-SWIFT-DOCUMENTATION-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement documentation using the Documentation.docc folder, adding markdown files and doc comments to generate a DocC archive for the SWIFT platform.

Milestone Install and verify Xcode + Swift toolchain

Install Xcode from the App Store, open Terminal, and run `swift --version` to confirm the Swift compiler is available.

ULO-DEVELOPMENT_TOOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the role of Xcode as an integrated development environment for Swift, including its project management, code editing, and debugging features.
CIO-DEVELOPMENT_TOOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a project setup in Xcode that organizes source files, resources, and build configurations for a Swift package, ensuring seamless integration with Swift Package Manager.
SIO-SWIFT-DEVELOPMENT_TOOL-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a build configuration in Xcode that compiles a Swift package, runs unit tests, and produces a distributable framework on the SWIFT platform.
ULO-COMMAND_LINE_INTERFACE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the command-line interface capabilities of the Swift Package Manager, including subcommands for initialization, building, testing, and dependency management.
CIO-COMMAND_LINE_INTERFACE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a command-line tool that wraps Swift Package Manager operations to automate common development tasks, such as generating documentation or running benchmarks.
SIO-SWIFT-COMMAND_LINE_INTERFACE-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a custom command-line interface using Swift Package Manager's executable target, parsing arguments and invoking build/test commands on the SWIFT platform.
ULO-PROGRAMMING_LANGUAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core features of Swift as a programming language, including type safety, optionals, and protocol-oriented design.
CIO-PROGRAMMING_LANGUAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift class hierarchy that leverages protocols and extensions to achieve code reuse.
SIO-SWIFT-PROGRAMMING_LANGUAGE-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a Swift program in Xcode that uses optionals and guard statements to handle missing values.

Milestone Clone the base project from the repository

Use `git clone <repo-url>` to get the provided base project locally, then `cd` into the project directory.

ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of version control as a system for tracking changes, enabling collaboration, and maintaining project history.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Git branching strategy and commit workflow tailored for a Swift project, ensuring clean integration and release management.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement the 'Git' keyword in Swift by initializing a repository, committing changes, and managing branches using command-line tools.
ULO-COMMAND_LINE_INTERFACE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the command-line interface capabilities of the Swift Package Manager, including subcommands for initialization, building, testing, and dependency management.
CIO-COMMAND_LINE_INTERFACE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a command-line tool that wraps Swift Package Manager operations to automate common development tasks, such as generating documentation or running benchmarks.
SIO-SWIFT-COMMAND_LINE_INTERFACE-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a custom command-line interface using Swift Package Manager's executable target, parsing arguments and invoking build/test commands on the SWIFT platform.

Milestone Build the project with Swift Package Manager

Run `swift build` in the project root to compile the library and verify the setup works without errors.

ULO-PACKAGE_MANIFEST-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the role of PackageDescription in Swift's package manager, which defines package metadata and dependencies.
CIO-PACKAGE_MANIFEST-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Package.swift manifest that specifies targets, dependencies, and products for a Swift package.
SIO-SWIFT-PACKAGE_MANIFEST-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a PackageDescription file in Swift that declares a library target and a dependency on WledLib.
ULO-BUILD_PROCESS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the build process in Swift, including compilation, linking, and resource bundling, as orchestrated by the Swift Package Manager.
CIO-BUILD_PROCESS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a build configuration that specifies target dependencies, linker settings, and custom build flags for a Swift package targeting multiple platforms.
SIO-SWIFT-BUILD_PROCESS-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a build script using Swift Package Manager commands to compile, test, and produce a release binary for the SWIFT platform.
ULO-COMMAND_LINE_INTERFACE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the command-line interface capabilities of the Swift Package Manager, including subcommands for initialization, building, testing, and dependency management.
CIO-COMMAND_LINE_INTERFACE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a command-line tool that wraps Swift Package Manager operations to automate common development tasks, such as generating documentation or running benchmarks.
SIO-SWIFT-COMMAND_LINE_INTERFACE-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a custom command-line interface using Swift Package Manager's executable target, parsing arguments and invoking build/test commands on the SWIFT platform.

Milestone Create a minimal Swift demo (Hello World)

Write a simple Swift script (e.g., `hello.swift`) that prints 'Hello WLED' and run it with `swift hello.swift` to practice basic syntax and execution.

ULO-PROGRAMMING_LANGUAGE-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core features of Swift as a programming language, including type safety, optionals, and protocol-oriented design.
CIO-PROGRAMMING_LANGUAGE-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Swift class hierarchy that leverages protocols and extensions to achieve code reuse.
SIO-SWIFT-PROGRAMMING_LANGUAGE-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a Swift program in Xcode that uses optionals and guard statements to handle missing values.
ULO-BASIC_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core functionalities of the Foundation framework in Swift, such as data serialization, date handling, and file management, which serve as the base for many applications.
CIO-BASIC_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a data model for a WLED control library that leverages Foundation types like Data, Date, and URL for robust and interoperable data handling.
SIO-SWIFT-BASIC_LIBRARY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a class that uses Foundation's JSONEncoder and JSONDecoder to serialize and deserialize WLED command payloads, running on the SWIFT platform.

Milestone Explore the project structure and architecture

Inspect the `Sources/WledLib` folder: DataStructs, Discovery, ProtocolExtensions, Protocols, UpdateProtocols, WledHost.

ULO-PACKAGE_MANIFEST-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the role of PackageDescription in Swift's package manager, which defines package metadata and dependencies.
CIO-PACKAGE_MANIFEST-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Package.swift manifest that specifies targets, dependencies, and products for a Swift package.
SIO-SWIFT-PACKAGE_MANIFEST-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a PackageDescription file in Swift that declares a library target and a dependency on WledLib.
ULO-ARCHITECTURE_PATTERN-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of the Swift Package as an architecture pattern that promotes modularity, dependency management, and code reuse in Swift projects.
CIO-ARCHITECTURE_PATTERN-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a modular Swift Package structure with separate targets for core functionality, extensions, and tests, ensuring clear boundaries and minimal coupling.
SIO-SWIFT-ARCHITECTURE_PATTERN-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a Swift Package with multiple targets and dependencies using the SWIFT platform, configuring the package manifest to expose public APIs.
ULO-BASIC_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core functionalities of the Foundation framework in Swift, such as data serialization, date handling, and file management, which serve as the base for many applications.
CIO-BASIC_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a data model for a WLED control library that leverages Foundation types like Data, Date, and URL for robust and interoperable data handling.
SIO-SWIFT-BASIC_LIBRARY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a class that uses Foundation's JSONEncoder and JSONDecoder to serialize and deserialize WLED command payloads, running on the SWIFT platform.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Milestone Understand the development loop and debug basics

Learn to build (`swift build`), run (if app, but here use a test or script), and debug with `print` or breakpoints in Xcode.

ULO-BUILD_PROCESS-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the build process in Swift, including compilation, linking, and resource bundling, as orchestrated by the Swift Package Manager.
CIO-BUILD_PROCESS-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a build configuration that specifies target dependencies, linker settings, and custom build flags for a Swift package targeting multiple platforms.
SIO-SWIFT-BUILD_PROCESS-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a build script using Swift Package Manager commands to compile, test, and produce a release binary for the SWIFT platform.
ULO-DEBUGGING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the debugging techniques in Swift, such as breakpoints, logging, and runtime inspection, and how they integrate with the build process to identify and fix errors.
CIO-DEBUGGING-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a debugging strategy for a Swift package that includes conditional logging, assertion checks, and a structured approach to reproducing and isolating bugs.
SIO-SWIFT-DEBUGGING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement debug logging and breakpoint-based inspection in a Swift project, using the 'build' command to trigger compilation and runtime diagnostics on the SWIFT platform.
ULO-ERROR_HANDLING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of do-catch error handling in Swift, which propagates and catches runtime errors through explicit syntax.
CIO-ERROR_HANDLING-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a comprehensive error handling model that categorizes failure cases and defines catch blocks for each do-catch scope.
SIO-SWIFT-ERROR_HANDLING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a do-catch block in Swift that catches and handles errors thrown by a network request function.
ULO-DEVELOPMENT_TOOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the role of Xcode as an integrated development environment for Swift, including its project management, code editing, and debugging features.
CIO-DEVELOPMENT_TOOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a project setup in Xcode that organizes source files, resources, and build configurations for a Swift package, ensuring seamless integration with Swift Package Manager.
SIO-SWIFT-DEVELOPMENT_TOOL-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a build configuration in Xcode that compiles a Swift package, runs unit tests, and produces a distributable framework on the SWIFT platform.

Milestone Set up a minimal git workflow

Create a feature branch (`git checkout -b feature/your-feature`), make changes, commit (`git commit -am "message"`), and push (`git push origin…

ULO-VERSION_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of version control as a system for tracking changes, enabling collaboration, and maintaining project history.
CIO-VERSION_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Git branching strategy and commit workflow tailored for a Swift project, ensuring clean integration and release management.
SIO-SWIFT-VERSION_CONTROL-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement the 'Git' keyword in Swift by initializing a repository, committing changes, and managing branches using command-line tools.

Milestone Define WledHost protocol

Create protocol to represent a WLED device with hostname and factory method.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.
ULO-BASIC_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core functionalities of the Foundation framework in Swift, such as data serialization, date handling, and file management, which serve as the base for many applications.
CIO-BASIC_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a data model for a WLED control library that leverages Foundation types like Data, Date, and URL for robust and interoperable data handling.
SIO-SWIFT-BASIC_LIBRARY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a class that uses Foundation's JSONEncoder and JSONDecoder to serialize and deserialize WLED command payloads, running on the SWIFT platform.

Milestone Define Device struct

Create Codable struct representing the full device state and info.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-BASIC_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core functionalities of the Foundation framework in Swift, such as data serialization, date handling, and file management, which serve as the base for many applications.
CIO-BASIC_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a data model for a WLED control library that leverages Foundation types like Data, Date, and URL for robust and interoperable data handling.
SIO-SWIFT-BASIC_LIBRARY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a class that uses Foundation's JSONEncoder and JSONDecoder to serialize and deserialize WLED command payloads, running on the SWIFT platform.

Milestone Define State struct

Create Codable struct for device state including on/off, brightness, and effects.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of state management in SwiftUI, focusing on how observable objects and property wrappers propagate changes to the UI.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a state management architecture using @Published properties within an ObservableObject to centralize and synchronize app data.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement the '@Published' keyword in Swift by declaring a class conforming to ObservableObject and annotating properties to trigger view updates.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Milestone Define WledWebSocketData protocol

Create protocol for WebSocket data types with a path constant.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.
ULO-NETWORK_COMMUNICATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the fundamentals of network communication in Swift, including sockets, protocols, and data transfer.
CIO-NETWORK_COMMUNICATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a network layer using the Network framework that handles connection establishment and data streaming.
SIO-SWIFT-NETWORK_COMMUNICATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Network framework connection in Swift that sends a message to a remote server.
ULO-BASIC_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core functionalities of the Foundation framework in Swift, such as data serialization, date handling, and file management, which serve as the base for many applications.
CIO-BASIC_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a data model for a WLED control library that leverages Foundation types like Data, Date, and URL for robust and interoperable data handling.
SIO-SWIFT-BASIC_LIBRARY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a class that uses Foundation's JSONEncoder and JSONDecoder to serialize and deserialize WLED command payloads, running on the SWIFT platform.

Milestone Define Preset struct

Create Codable struct for a preset with an optional name.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Phase 3 BUILD MVP

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

Milestone Implement DiscoveryService with NWBrowser

Use NWBrowser to discover _wled._tcp services on the local network.

ULO-NETWORK_COMMUNICATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the fundamentals of network communication in Swift, including sockets, protocols, and data transfer.
CIO-NETWORK_COMMUNICATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a network layer using the Network framework that handles connection establishment and data streaming.
SIO-SWIFT-NETWORK_COMMUNICATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Network framework connection in Swift that sends a message to a remote server.

Milestone Add start and stop methods

Provide startService and stopService to control the discovery process.

ULO-NETWORK_COMMUNICATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the fundamentals of network communication in Swift, including sockets, protocols, and data transfer.
CIO-NETWORK_COMMUNICATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a network layer using the Network framework that handles connection establishment and data streaming.
SIO-SWIFT-NETWORK_COMMUNICATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Network framework connection in Swift that sends a message to a remote server.
ULO-CONCURRENT_EXECUTION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the concept of concurrent execution using DispatchQueue, including serial vs. concurrent queues, quality of service classes, and thread safety.
CIO-CONCURRENT_EXECUTION-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design a concurrency model for a WLED control library that uses DispatchQueue to manage simultaneous network requests and UI updates without data races.
SIO-SWIFT-CONCURRENT_EXECUTION-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a DispatchQueue-based task scheduler that executes WLED commands asynchronously, ensuring thread-safe access to shared state on the SWIFT platform.

Milestone Define Info struct with device details

Add Info struct containing firmware, LED count, network status, and more.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-DOCUMENTATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the practices of writing documentation for Swift libraries, including the use of DocC to generate interactive documentation from source comments.
CIO-DOCUMENTATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a documentation structure for a WLED control library that includes API reference, usage guides, and examples, organized in a DocC catalog.
SIO-SWIFT-DOCUMENTATION-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement documentation using the Documentation.docc folder, adding markdown files and doc comments to generate a DocC archive for the SWIFT platform.

Milestone Conform Device to WledHttGet

Implement WledHttGet protocol for Device to fetch /json endpoint.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.

Milestone Define Segment struct for per-segment control

Add Segment struct to control individual LED segments with colors and effects.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Milestone Conform State to WledHTTPPost

Implement WledHTTPPost protocol for State to send to /json/state.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.
ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of state management in SwiftUI, focusing on how observable objects and property wrappers propagate changes to the UI.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a state management architecture using @Published properties within an ObservableObject to centralize and synchronize app data.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement the '@Published' keyword in Swift by declaring a class conforming to ObservableObject and annotating properties to trigger view updates.

Milestone Conform Device to WledWebSocketData

Make Device conform to WledWebSocketData to receive live state updates.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Milestone Implement getWebsocketReceiver

Add method to create and resume a URLSessionWebSocketTask for the device.

ULO-NETWORK_COMMUNICATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the fundamentals of network communication in Swift, including sockets, protocols, and data transfer.
CIO-NETWORK_COMMUNICATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a network layer using the Network framework that handles connection establishment and data streaming.
SIO-SWIFT-NETWORK_COMMUNICATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Network framework connection in Swift that sends a message to a remote server.

Milestone Define Presets struct with mapping

Add Presets struct to map preset IDs to names using Codable keys.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.
ULO-BASIC_LIBRARY-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the core functionalities of the Foundation framework in Swift, such as data serialization, date handling, and file management, which serve as the base for many applications.
CIO-BASIC_LIBRARY-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a data model for a WLED control library that leverages Foundation types like Data, Date, and URL for robust and interoperable data handling.
SIO-SWIFT-BASIC_LIBRARY-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a class that uses Foundation's JSONEncoder and JSONDecoder to serialize and deserialize WLED command payloads, running on the SWIFT platform.

Milestone Conform Presets to WledHttGet

Implement WledHttGet protocol for Presets to fetch /presets.json.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.

Phase 4 EXPAND

Make it real: real APIs, file persistence, filters

Milestone Handle browse results and create devices

Process added/removed results and instantiate device objects via WledHost factory.

ULO-RESULT_ENCAPSULATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of the Result type in Swift, which encapsulates success or failure with associated values.
CIO-RESULT_ENCAPSULATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a function that returns a Result type to handle asynchronous operation outcomes cleanly.
SIO-SWIFT-RESULT_ENCAPSULATION-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a Result type in Swift that returns either a decoded object or an error from a network call.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Milestone Implement HTTP GET in WledHost

Add get method to perform URLSession data task and decode response.

ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.

Milestone Implement HTTP POST in WledHost

Add send method to encode and POST state data, then handle response.

ULO-NETWORK_COMMUNICATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the fundamentals of network communication in Swift, including sockets, protocols, and data transfer.
CIO-NETWORK_COMMUNICATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a network layer using the Network framework that handles connection establishment and data streaming.
SIO-SWIFT-NETWORK_COMMUNICATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Network framework connection in Swift that sends a message to a remote server.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.

Milestone Handle incoming WebSocket messages

Process string messages, decode to Device, and invoke callbacks.

ULO-NETWORK_COMMUNICATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the fundamentals of network communication in Swift, including sockets, protocols, and data transfer.
CIO-NETWORK_COMMUNICATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a network layer using the Network framework that handles connection establishment and data streaming.
SIO-SWIFT-NETWORK_COMMUNICATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Network framework connection in Swift that sends a message to a remote server.
ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.

Milestone Apply preset via State

Set State.selectedPresetId to the chosen preset ID for activation.

ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Phase 5 POLISH

Robustness: error handling, validation, tests, polish

Milestone Expose discovered devices via @Published

Publish the set of discovered devices for observation by the UI.

ULO-STATE_MANAGEMENT-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of state management in SwiftUI, focusing on how observable objects and property wrappers propagate changes to the UI.
CIO-STATE_MANAGEMENT-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a state management architecture using @Published properties within an ObservableObject to centralize and synchronize app data.
SIO-SWIFT-STATE_MANAGEMENT-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement the '@Published' keyword in Swift by declaring a class conforming to ObservableObject and annotating properties to trigger view updates.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.

Milestone Decode response into Device

Use JSONDecoder to parse the JSON response into a Device instance.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.

Milestone Encode State and handle response

Use JSONEncoder to serialize State and decode SuccessMessage response.

ULO-JSON_SERIALIZATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of JSON serialization and deserialization, which converts Swift objects to JSON data and vice versa.
CIO-JSON_SERIALIZATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a Codable struct that maps JSON keys to Swift properties for seamless encoding and decoding.
SIO-SWIFT-JSON_SERIALIZATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a JSONEncoder in Swift to serialize a custom object into JSON data for a network payload.
ULO-RESULT_ENCAPSULATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the nature of the Result type in Swift, which encapsulates success or failure with associated values.
CIO-RESULT_ENCAPSULATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a function that returns a Result type to handle asynchronous operation outcomes cleanly.
SIO-SWIFT-RESULT_ENCAPSULATION-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement a Result type in Swift that returns either a decoded object or an error from a network call.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.

Milestone Maintain continuous listening loop

Re-register receive handler after each message to keep stream open.

ULO-ASYNC_PROGRAMMING-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the principles of asynchronous programming in Swift, including the use of async/await, actors, and task groups to manage concurrent operations without blocking the main thread.
CIO-ASYNC_PROGRAMMING-01 · CONCEPTUAL_IMPL · Bloom: understand
The learner will be able to design an asynchronous API for controlling WLED stripes that exposes async methods for color changes, brightness adjustments, and status queries, with proper error handling.
SIO-SWIFT-ASYNC_PROGRAMMING-01 · SPECIFIC_IMPL · Bloom: apply
The learner will be able to implement async functions that send commands to WLED stripes via network requests using Swift's concurrency features, as described in the project's async access model.

Milestone Send preset state via HTTP POST

Use send method to post State with the selected preset ID to the device.

ULO-NETWORK_COMMUNICATION-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the fundamentals of network communication in Swift, including sockets, protocols, and data transfer.
CIO-NETWORK_COMMUNICATION-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a network layer using the Network framework that handles connection establishment and data streaming.
SIO-SWIFT-NETWORK_COMMUNICATION-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a Network framework connection in Swift that sends a message to a remote server.
ULO-HTTP_PROTOCOL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the HTTP protocol's request/response cycle, including methods and status codes that govern web communication.
CIO-HTTP_PROTOCOL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design an HTTP request model using URLSession that specifies method, headers, and body for a RESTful API call.
SIO-SWIFT-HTTP_PROTOCOL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a URLSession data task in Swift that sends an HTTP GET request and processes the response status code.
ULO-LED_CONTROL-01 · UNIVERSAL · Bloom: understand
The learner will be able to understand the characteristics of WledLib, a Swift library that provides asynchronous control of WLED light strips.
CIO-LED_CONTROL-01 · CONCEPTUAL_IMPL · Bloom: apply
The learner will be able to design a control interface that abstracts WLED strip operations such as color, brightness, and effects using WledLib.
SIO-SWIFT-LED_CONTROL-01 · SPECIFIC_IMPL · Bloom: analyze
The learner will be able to implement a WledLib call in Swift that changes the color of a WLED strip asynchronously.