What you're going to build

Welcome to PawWalk Academy β€” Android edition

By the end of this course you will have built PawWalk β€” a real Android 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/android, and every lesson here teaches you to rebuild a real piece of it, file by file.

You need zero Kotlin, Android, or Jetpack Compose knowledge to start. We begin with "what is a variable" and end with an AI assistant that can draft a booking for you.

Already done the iOS track? Great β€” the concepts rhyme on purpose (let β†’ val, @State β†’ remember), so a lot of this will feel like a second pass. Never touched Swift either? Also fine β€” this course assumes nothing.

The app, in one screenshot tour

  • Auth β€” sign up / log in as a dog owner or a walker. Sessions survive app restarts thanks to encrypted on-device storage.
  • Home β€” a designed dashboard with your walk stats and recent walks.
  • 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 screen showing the walk happening in real time, fed by GPS.
  • AI assistant β€” chat with an assistant that can draft a booking for you.

How the pieces talk

The Android 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 Android side. It's the exact same backend the iOS app talks to.

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 Kotlin code you write will mirror it precisely.