iOS app — designed, built and launched solo
MoodSpark
A two-minute daily ritual, with a friend called Sparky.
Mood tracking feels like data entry and motivation apps feel generic. MoodSpark turns two minutes of morning scrolling into one matched quote, a one-tap check-in and one tiny challenge. On-device AI, 10 languages, live on the App Store.

- 49days from first commit to the App Store
- 10languages, 834 strings, full RTL
- 0servers behind the AI voice chat
- 16shareable quote-card designs
The problem
Two kinds of apps, both easy to quit
Mood trackers ask you to fill in a form about your feelings. Motivation apps send the same quote to everyone. Either way, by week two most people stop opening them.
My bet: people already spend two minutes scrolling every morning. If those two minutes felt personal, warm and fast, they could become a ritual worth keeping.
The idea
One quote. One tap. One tiny step.
- 01Pick a motivational style, or take the 2-minute quiz
- 02Get one quote matched to you, every morning
- 03Check in your mood with a single tap
- 04Finish one small challenge and keep the streak
Four styles (Achiever, Dreamer, Thinker, Connector) shape every quote, challenge and gradient. Sparky, a white lightning bolt, celebrates the good days and comforts the hard ones.



Research
87 screens before a single new pixel
For the redesign I ran 23 searches on Mobbin and studied 87 reference screens from Finch, How We Feel, Duolingo, Calm and others. Three findings changed the product:
- 01
Buying Plus ended with nothing to look at
So upgrading now ends in a Welcome-to-Plus moment, with a crown and confetti.
- 02
Sparky was used like a sticker, not a character
He got a voice, a speech bubble and nine poses, from proud to sleepy.
- 03
Logging a mood felt like filling in a form
Now one tap floods the whole screen with that mood’s colour.
Character
Sparky, a friend rather than a feature
Sparky is warm and brief: “Time’s up, kindly.” He is clearly a friendly companion, not a therapist; the app says so and points to real help when it’s needed.






On-device AI
Talk to Sparky, privately
I wanted a voice chat that felt like ChatGPT but sounded like MoodSpark. It listens with Apple’s SpeechAnalyzer, thinks with the on-device Foundation Models, and answers with the system voice.
There is no server and no per-message cost, and nothing you say leaves the phone. On iPhones without Apple Intelligence, and in Arabic, a scripted fallback keeps the conversation going.

Focus
A focus timer that lives on your Lock Screen
Version 1.1 added Focus: set a dial, break a big task into tiny steps, and follow the countdown on the Lock Screen and in the Dynamic Island with a Live Activity. Finishing ends with a celebration and a mood check.






Arabic
Arabic is not a translation
Saudi Arabia and the wider region are a core market, not an afterthought. Every screen mirrors properly, numerals and dates follow the locale, and the App Store keywords even cover the ways people misspell the name, like “مود سبارك”.



Launch
Shipping is a design problem too
A weekly metrics loop
Ship, read four numbers, fix the weakest. Repeat.
The phone must never warm up
A hard performance rule for animations, AI and the focus timer.
Events and campaigns
A World Mental Health Day In-App Event, custom product pages for Duo, Focus and Talk, and an English + Arabic launch kit.
Listening to feedback
When early art read as “only for girls”, I rotated the personas across every campaign.

Built with
- SwiftUI
- Swift 6
- Foundation Models
- SpeechAnalyzer
- ActivityKit
- WidgetKit
- App Intents
- FamilyControls
- HealthKit
- StoreKit 2
- MeshGradient
- Liquid Glass
- XcodeGen
What’s next
MoodSpark 1.2: iPad and Apple Watch
A universal iPad app with a sidebar, menu bar and multiple windows, and an Apple Watch app for check-ins, quotes and “Breathe with Sparky”.
