Goal
Make a lightweight focus-themed game that feels simple, polished, and replayable.
case.study // focuspop
Pop distractions, grow your focus.
A SwiftUI bubble-popping game built for short focus sessions.
FocusPop is a mobile game project designed around quick, lightweight focus sessions. Players enter their name, choose a gameplay mode, pop bubbles before the timer ends, and review their final score, accuracy, duration, and leaderboard result.
game.preview
SwiftUI focus session game

00 // project.overview
FocusPop is a SwiftUI bubble-popping game where users play short timed sessions and pop bubbles to build a score. The game includes two modes, colour-weighted scoring, combo rewards, pause/resume behaviour, result summaries, and a local high-score leaderboard.
Make a lightweight focus-themed game that feels simple, polished, and replayable.
Players pop bubbles before the timer ends, with different colours contributing different score values.
The interface uses soft visuals, rounded cards, and playful feedback to make the game feel calm and friendly.
The project focuses on testable game logic, MVVM state management, local persistence, and reliable UI flows.
01 // gameplay.flow
A simple loop from setup to score review.
active.step
The game starts by asking who is focusing today, so scores can be saved against a local player name.
02 // game.modes
Normal Mode keeps the experience calm, while Moving Mode adds more challenge.
mode.01
mode.02
The two modes help the game feel flexible without adding unnecessary complexity.
03 // technical.build
FocusPop uses a simple but testable SwiftUI architecture.
04 // testing.quality
The project was structured so gameplay logic could be tested separately from the UI.
test.01
XCTest coverage for core gameplay logic.
test.02
End-to-end gameplay flows with stable accessibility identifiers.
Keeping gameplay logic out of the views made the project easier to test, debug, and iterate.
05 // feedback.signal

06 // reflection
Gameplay feels simple to users, but the timer, bubbles, score, pause state, and results need a clear source of truth.
Separating gameplay logic from views made scoring, combo, and generation behaviour easier to verify.
Soft visuals, clear mode choices, and result feedback helped the game feel more polished.
Keeping the game focused on two modes made the experience easier to build, test, and explain.
FocusPop helped me practise building a polished iOS experience where product feel, state management, gameplay rules, persistence, and testing all work together. The project strengthened how I think about small interactive systems and how to make playful interfaces reliable.
FocusPop shows how simple gameplay can still involve thoughtful state management, testable logic, persistence, and UI polish.