What you're going to build

Welcome to PawWalk Academy

By the end of this course you will have built PawWalk β€” a real iPhone app where dog owners find walkers, book and pay for walks, and watch their dog's walk live on a map with GPS. It's not a toy: the finished app already lives in this repository at apps/ios, and every lesson here teaches you to rebuild a real piece of it, file by file.

You need zero Swift, SwiftUI, or iOS knowledge to start. We begin with "what is a variable" and end with WebSockets streaming GPS fixes onto a live map.

The app, in one screenshot tour

  • Auth β€” sign up / log in as a dog owner or a walker. Sessions survive app restarts thanks to the iOS Keychain.
  • Home β€” a designed dashboard with your walk stats, streaks, and recent walks with distance sparklines.
  • Walkers β€” browse walkers, their ratings and prices, and book one.
  • Bookings β€” create a booking, watch its status move from pending β†’ confirmed β†’ in progress β†’ completed.
  • Live tracking β€” a map showing the walk happening in real time, fed by GPS over a WebSocket.
  • AI assistant β€” chat with an assistant that can draft a booking for you.

How the pieces talk

The iPhone app is a client. It talks HTTP + JSON to a Python backend (FastAPI) that owns the database. The backend is already built and already running in this repo β€” your job in this course is the iOS side.

You'll see the phrase API contract a lot. It's the agreement about exactly what JSON the backend sends and expects β€” written down in docs/API-CONTRACT.md. The Swift code you write will mirror it precisely.