Version 1.0 — First usable release
A personal interval workout timer for iPhone, built with SwiftUI.
Goal: start fast, few steps, works offline. Not a social fitness platform.
This is a daily-driver MVP you can use for real workouts — not just a prototype.
- Large countdown with WORK / REST phase and current round
- Configurable settings:
- WORK: 5–300 seconds (default 20)
- REST: 5–300 seconds (default 10)
- ROUNDS: 1–99 (default 8)
- Estimated Time shown before you start (includes every WORK; REST only between rounds)
- Voice cues:
- WORK starts → “Start”
- REST starts → “Rest”
- Workout complete → “Congratulations!”
- Beeps at 3 / 2 / 1 seconds
- Completion summary: Workout Time, Total Time, and completed rounds
- Settings live on a separate screen so the timer stays uncluttered
- Accounts / cloud sync
- Apple Watch
- Persistent workout history
- Background / lock-screen timing
- Social features, nutrition, or course marketplaces
| Area | Choice |
|---|---|
| UI | SwiftUI |
| State | @Observable |
| Audio | AVFoundation (bundled .wav files) |
| Minimum OS | iOS 17 |
| Device | iPhone |
HIITTimer/
HIITTimerApp.swift # App entry
ContentView.swift # Main timer + completion summary
SettingsView.swift # WORK / REST / ROUNDS
TabataTimer.swift # Timer state machine + stats
WorkoutAudio.swift # Sound playback
Sounds/ # Voice and cue audio
Assets.xcassets/
HIIT Timer.xcodeproj/
- Open
HIIT Timer.xcodeproj - Choose an iPhone simulator or device
- Press Run
If the iOS Simulator runtime is missing:
xcodebuild -downloadPlatform iOSestimatedTotalSeconds =
workDuration × rounds +
restDuration × (rounds − 1)
REST after the final round is not included in the estimate.
No formal open-source license yet.
Built as a personal learning / portfolio project for my own use. A license (for example MIT) can be added later if redistribution terms become useful.