This is a submission for Weekend Challenge: Dog Days Edition
What I Built
Pawford Academy โ Where good dogs become great dogs! ๐พ
A native iOS app built with SwiftUI that helps dog owners track their puppy's training journey. The app features an AI-powered voice coach powered by ElevenLabs that cheers your dog on after every training session, a daily mood tracker, and a graduation certificate when your pup completes all their sessions.
The idea came from a personal place. I had a black Labrador named Blacky when I was growing up โ he was my best friend. Building Pawford Academy was a way to honor that memory and create something genuinely useful for dog lovers everywhere. Whether you have a Golden Retriever, a Husky, a Chow Chow, or a Labrador like Blacky โ every dog deserves to graduate from Pawford Academy! ๐
Key features:
- Dog profile setup with name, breed (16 options!), and age
- Daily mood tracker with 6 moods (Happy, Playful, Tired, Grumpy, Anxious, Calm)
- Training session logger for 10 classic commands (Sit, Stay, Shake, Roll Over, and more)
- ElevenLabs AI voice encouragement after every session and mood selection
- Session complete celebration screen with paw print progress tracker (๐พ๐พ๐พ)
- Graduation certificate when all sessions are complete โ complete with dog's name, breed, and Class of 2026!
Demo
๐ฅ Watch the full demo here:
Note: The simulator recording doesn't capture audio โ the ElevenLabs voice encouragement plays live in the app after each action! Judges who run the app will hear Pawford speak after every mood selection and training session. ๐
๐ GitHub: https://github.com/gamya-hub/PawfordAcademy
Code
gamya-hub
/
PawfordAcademy
SwiftUI puppy training app with ElevenLabs AI voice โ built for the DEV Weekend Challenge: Dog Days Edition ๐พ
๐พ Pawford Academy
Where good dogs become great dogs!
A beautiful SwiftUI iOS app that helps dog owners track their puppy's training journey โ complete with AI-powered voice encouragement using ElevenLabs, mood tracking, training session logging, and a graduation certificate when your pup completes all their sessions! ๐
Built for the DEV Weekend Challenge: Dog Days Edition ๐
โจ Features
๐ถ Dog Profile Setup
- Set up your dog's name, breed, and age
- Choose from 16 popular breeds including Golden Retriever, Labrador, Husky, Chow Chow and more
- Beautiful onboarding screen with warm orange gradient design
๐ Daily Mood Tracker
- Track how your dog is feeling each day with 6 mood options: Happy, Playful, Tired, Grumpy, Anxious, and Calm
- ElevenLabs AI voice responds to each mood selection with a warm, encouraging message
- Mood badge displayed on the home screen
๐ Training Session Logger
- Log training sessions for 10 classic commands: Sit, Stayโฆ
How I Built It
Tech Stack:
- SwiftUI โ Native iOS UI with warm orange gradient design throughout
- ElevenLabs API โ Text-to-speech voice encouragement using the Bella voice
- AVFoundation โ Audio playback for the ElevenLabs generated speech
-
Combine โ Reactive state with
@PublishedandObservableObject - URLSession โ Async networking for ElevenLabs API calls
The ElevenLabs integration was the most exciting part. Every time a user logs a training session or selects a mood, the app sends the text to the ElevenLabs API and plays back the warm, encouraging response. The voice counts down remaining sessions to graduation and delivers a special announcement when the dog completes all sessions.
Here's how simple the API call is in Swift:
let url = URL(string: "https://api.elevenlabs.io/v1/text-to-speech/\(voiceId)")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue(apiKey, forHTTPHeaderField: "xi-api-key")
let body: [String: Any] = [
"text": text,
"model_id": "eleven_multilingual_v2",
"voice_settings": ["stability": 0.5, "similarity_boost": 0.75]
]
The app was built entirely from scratch during the challenge weekend. The graduation flow was my favourite feature to build โ the paw print progress tracker (๐พ๐พ๐พ filling up one by one) gives users a clear, delightful sense of progress toward their dog's big day.
One thing I'm proud of: The app uses @Published and ObservableObject for the ElevenLabs service, which means the UI shows a "Pawford is speaking..." indicator while the voice is playing โ a small detail that makes the AI feel alive and present.
Prize Categories
Best Use of ElevenLabs โ ElevenLabs powers the entire voice coaching experience in Pawford Academy. Every mood selection, every training session logged, and every graduation milestone is celebrated with a warm AI voice response generated in real time using the ElevenLabs text-to-speech API.
This article was written by me; AI was used to improve grammar and readability.
Top comments (4)
What I like most here is that ElevenLabs isnโt being used just because โAI voiceโ sounds cool โ it actually fits the experience.
Training is repetitive by nature, so giving immediate voice feedback after each session can make the app feel much more alive than a normal tracker. The little โPawford is speakingโฆโ state is also a nice touch; those tiny feedback details are usually what separate a demo from something that feels like a real product.
And building it around the memory of Blacky gives the project something no API can generate: a reason for existing. ๐พ
Really nice combination of SwiftUI, voice interaction, and a genuinely personal idea. Good luck with the challenge! ๐
"A reason for existing" is exactly the framing that makes this comment mean so much, because that's what I kept coming back to while building it. The ElevenLabs integration could have been a gimmick, but training really is repetitive, and the voice feedback after each session was the difference between an app that tracks and an app that encourages. Those are genuinely different things.
The "Pawford is speaking..." indicator was one of those small details that felt almost too minor to bother with, but you're right that it's exactly the kind of thing that makes a demo feel like a product. The user knows something is happening, the app feels alive rather than frozen, and the moment the voice comes through it lands properly instead of feeling like it came from nowhere.
And yes, Blacky is the whole reason this exists. Thank you for seeing that. ๐ค๐พ๐ธ
Some comments may only be visible to logged-in visitors. Sign in to view all comments.