
In this first lesson, we set up our BloomBoard project in Xcode and created our initial Post model. We defined core properties like title, image, and creationDate while learning the basics of structs and source control.
In this lesson, we converted our Post model into a SwiftData-ready class by adding the @Model macro and conforming to Identifiable. We also set up automatic IDs and timestamps with an initializer, giving each post unique and trackable data.
In this lesson, we complete our Post model by locking down data with proper scoping, optimizing image storage using @Attribute(.externalStorage), and generating test data for our UI.
In this lesson, we create our first SwiftUI view called PostItemView. We use our test data to preview as we build, display the title with simple styling, format the creation date, and organize everything inside a VStack.
In this lesson, we finished PostItemView by adding a computed property to detect whether a post has an image and showing the correct SF symbol. We grouped the icon and date in an HStack, styled them subtly, and confirmed everything works using our test data.
In this lesson, we built PostListView to display all posts using our PostItemView. We also add an empty-state overlay, set up a SwiftData model container, and used @Query in ContentView so the app can load saved posts.
In this lesson, we start PostEditorView by creating a title input using @State and building a styled TextField for user input. We also add a simple divider to prepare for the image picker coming next.
In this video, we add an image picker to our PostEditorView using PhotosPicker and walk through customizing its UI. We also set up the required Photos permission in Xcode so our app can safely access the user’s library.
In this lesson, we take a working PhotosPicker and load the selected image asynchronously into our app. We’ll convert the picked item into image data, safely update the UI on the main thread, and display the image in our view.
In this lesson, we enhance our PhotoPicker by adding buttons to change and remove images. We’ll update state to reset the picker and use a custom color asset to support both Light and Dark Mode.
In this lesson, you’ll add a toolbar with save and close buttons to your editor. You’ll learn how to use NavigationStack, ToolbarItem, and environment values to dismiss the view and save a new post using SwiftData.
In this lesson, we’ll connect our post editor to the list view and present it with a sheet. You’ll use state, toolbars, and test saving posts with SwiftData, then improve the experience with automatic keyboard focus.
In this lesson, we’ll add swipe-to-delete functionality to our post list using SwiftUI. You’ll learn how to use swipe actions, work with SwiftData’s model context to delete items, and improve the experience by adding a confirmation alert before removing a post.
In this lesson, we’ll create a detail screen for posts. You’ll display the post title, load an image if one exists, show a fallback state when there’s no image, and add a toolbar button to prepare for editing.
This lesson adds navigation from the post list to the detail screen using NavigationPath, NavigationStack, and navigationDestination. We also fix a bug caused by putting a second NavigationStack inside the detail view.
In this lesson, we’ll update PostEditorView so it can support both creating and editing posts. You’ll learn how to use an enum to manage editor modes, reuse existing save logic, and prepare the editor for the full editing flow.
Testing our editor and wrapping up the course.
This hands on course teaches you how to build a real data driven iOS app using SwiftData and SwiftUI. You begin from scratch in Xcode and work step-by-step to create a complete data layer, build SwiftUI interface components, and connect everything with Apple’s persistence tools.
Each lesson is short, clear, and tightly focused usually between 3–6 minutes. Every concept is explained with intention, giving you the why behind each line while keeping the pacing quick and beginner-friendly. The course is also built using the new iOS 26 and Xcode 26, ensuring modern SwiftUI and SwiftData practices that are relevant in today’s iOS ecosystem.
Learning to build a SwiftData powered app is a huge advantage. It teaches you how real apps store, load, and manage data. These are skills you’ll rely on when creating more advanced features. Working with SwiftData also strengthens your understanding of SwiftUI, since modern interfaces depend on dynamic, data driven views. In addition, SwiftData makes prototyping fast and simple, becoming a great way to validate ideas and turn concepts into working apps.
This course is designed for beginners, starting with simple concepts and gradually increasing the challenge as your skills grow. The goal is to help you build confidence, understand the foundations clearly, and level up fast so you can start creating your own apps with real momentum.