Free Course

SwiftUI Foundations
Build Brew Log — Your First Real SwiftUI App

A free, anti-vibe-coding SwiftUI course. 18 lessons, every component you need, and a real coffee-tracking app called Brew Log that ends the course persistent, accessible, and ready for the App Store. Built without AI shortcuts — just the right way to write SwiftUI.

Start Learning

18

Lessons

9

Modules

FREE

No paywalls

~3h

Reading time

Course Content

1

Module 1

Setting the Stage

The mental model that makes SwiftUI click — views as values, body as a function — and a clean Brew Log project structure with the first model in place.

2 lessons

2

Module 2

Views, Modifiers, Layouts

Text, Image, Color, modifier order, stacks and spacers, the layout protocol, ScrollView, ignoresSafeArea — everything that turns three primitives into a real screen.

3 lessons

3

Module 3

Data Flow

@State for owned mutable, @Binding for borrowed, @Observable for structured, @Environment for shared. The 2026 SwiftUI data architecture from one screen to many.

3 lessons

4

Module 4

Controls

Buttons, Menus, Pickers, plus the form-control toolbox — Toggle, Slider, Stepper, DatePicker, ColorPicker, ProgressView.

2 lessons

5

Module 5

Collections & Forms

List, Section, ContentUnavailableView, AsyncImage, and the input toolkit — Form, TextField, TextEditor, @FocusState — to compose a real brew with notes.

2 lessons

6

Module 6

Navigation & Overlays

NavigationStack with value-based links, sheet/alert/confirmationDialog/popover, and the decision tree of which to use when.

2 lessons

7

Module 7

Visual Toolbox

Shapes, gradients, materials, the everyday effect modifiers, plus TabView, .toolbar, and LazyVGrid — the structural visual pieces.

2 lessons

8

Module 8

Persistence

SwiftData — @Model, @Query, ModelContainer — so brews actually survive app restarts.

1 lesson

9

Module 9

Polish & Capstone

Accessibility, Dynamic Type, dark mode, app icon, and the App Store ship checklist. Brew Log v1 is ready.

1 lesson

Comments

Leave a comment

0/1000