A minimalist workout timer app designed specifically for set-based workouts like ab/core training, HIIT, and interval training. Focus on your workout while Workout Set Timer handles the timing automatically.
Created by Yusufhan SaΓ§ak as an open source project demonstrating modern Flutter development practices while providing real value to the fitness community.
- Custom Set Configuration: Set any number of sets (1-20)
- Flexible Duration: Configure set duration from 10 seconds to 5 minutes
- Smart Rest Intervals: Automatic rest periods after every N sets
- Auto-Progression: Automatically moves between sets and rest periods
- Background Support: Continue workouts with screen locked or app in background
- Audio Alerts: Clear sound notifications for set start/end and rest periods
- Modern UI: Dark theme with beautiful gradients and intuitive controls
- One-Tap Start: Simple interface focused on workout flow
- Progress Tracking: Visual progress bar and set counter
Beautiful dark theme with modern gradients and intuitive controls
- Flutter 3.5.3 or higher
- Dart SDK 3.5.3 or higher
- Android Studio / Xcode for device testing
-
Clone the repository
git clone https://github.com/JosephDoUrden/settimer.git cd settimer -
Install dependencies
flutter pub get
-
Run the app
flutter run
# Debug APK
flutter build apk --debug
# Release APK
flutter build apk --release
# App Bundle for Play Store
flutter build appbundle --release# Open in Xcode
open ios/Runner.xcworkspace
# Build from command line
flutter build ios --release-
Configure Settings: Tap the settings button to customize:
- Total number of sets
- Duration per set
- Rest duration
- Rest interval (after how many sets)
-
Start Workout: Tap the play button to begin
-
Hands-Free Operation: The app automatically handles:
- Set countdown
- Rest periods
- Moving to next set
- Workout completion
-
Control Options:
- Pause: Pause the current timer
- Reset: Reset to beginning
- Settings: Modify configuration (only when stopped)
Workout Set Timer follows clean architecture principles with MVC pattern:
lib/
βββ controllers/ # Business logic and state management
β βββ timer_controller.dart
βββ models/ # Data models
β βββ timer_model.dart
βββ services/ # External services
β βββ audio_service.dart
β βββ background_service.dart
βββ views/ # UI components
β βββ timer_view.dart
βββ main.dart # App entry point
- State Management: Provider pattern with ChangeNotifier
- Audio: flutter_ringtone_player for system sounds and notifications
- Background Processing: App lifecycle management with timer synchronization
- UI: Material Design 3 with custom dark theme and animations
- Platform Integration: Native iOS audio session and Android wake lock support
Workout Set Timer embraces minimalism with a focus on:
- Zero Distraction: Clean interface without unnecessary elements
- Workflow: Automatic progression eliminates manual intervention
- Visual Clarity: High contrast dark theme with accent colors
- Accessibility: Large touch targets and clear visual hierarchy
- Primary (Work):
#00D4AA- Energizing teal - Secondary (Rest):
#FF6B35- Calming orange - Background:
#0A0A0Ato#2A2A2Agradient - Text: White with varying opacity for hierarchy
- Sets: 3
- Set Duration: 30 seconds
- Rest Duration: 10 seconds
- Rest Interval: Every 1 set
- Total Sets: 1-20
- Set Duration: 10-300 seconds
- Rest Duration: 5-120 seconds
- Rest Interval: 1-5 sets
- Minimum SDK: API 21 (Android 5.0)
- Target SDK: API 34 (Android 14)
- Permissions: WAKE_LOCK, VIBRATE
- Features: Background processing, system sounds
- Deployment Target: iOS 12.0+
- Orientation: Portrait only
- Background Modes: background-processing, background-fetch
- Audio: Background audio session support
- Timer counts down correctly
- Set transitions work automatically
- Rest periods trigger at correct intervals
- Background mode maintains timer
- Sound alerts play at appropriate times
- Settings persist between sessions
- App handles orientation locks
- No crashes during extended use
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow Flutter best practices
- Maintain clean architecture separation
- Add tests for new features
- Update documentation for API changes
- Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- Material Design for UI inspiration
- flutter_ringtone_player package for audio functionality
- Provider package for state management
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Website: yusufhan.dev
Yusufhan SaΓ§ak
- LinkedIn: Yusufhan SaΓ§ak
- Twitter: @0xSCK
- Medium: My Medium Profile
- Website: yusufhan.dev
For business inquiries, please use LinkedIn or the contact form on my website.
Workout Set Timer - Focus on your workout, let us handle the timing. πͺ
Built with β€οΈ using Flutter







