A mobile-first web application for Tabata interval training workouts with synchronized audio cues and visual progress indicators.
🌐 Live App: https://astryia.github.io/tabata-timer/
Tabata Timer is a web-based workout timer designed specifically for Tabata interval training. It provides visual and audio guidance throughout your workout, making it easy to follow along without constantly checking the timer. The app features dual circular progress indicators, synchronized audio cues, and optional background music to keep you motivated during your training sessions.
- Customizable Workouts: Configure round duration (1-300 seconds), number of rounds (up to 8), and rest time (0-300 seconds)
- Background Music
- Smart Audio Cues
- Visual Progress Tracking
- Full Control
- Mobile-Optimized
- Add MP3 files to the
Resources/Songs/folder - Run the song list generator script:
node scripts/generate-songs-list.jsThis will automatically scan the Resources/Songs/ folder and generate js/songs-list.js with all available songs. The song list will be automatically populated in the app.
Note: The js/songs-list.js file is auto-generated - do not edit it manually. Always run the script after adding new songs.
- Push your code to a GitHub repository
- Go to repository Settings → Pages
- Under "Source", select "GitHub Actions"
- The workflow in
.github/workflows/deploy.ymlwill automatically deploy on push tomainbranch
- Push your code to a GitHub repository
- Go to repository Settings → Pages
- Under "Source", select the branch containing your code (usually
main) - Select
/ (root)as the folder - Click Save
- Modern browsers with Web Audio API support
- Chrome/Edge (recommended)
- Firefox
- Safari (iOS 11+)
- Mobile browsers (iOS Safari, Chrome Mobile)
The app uses modern web technologies to provide a smooth, responsive experience:
- Web Audio API: Handles all audio playback and mixing, allowing background music and voice cues to play simultaneously
- SVG Progress Circles: Smooth, animated circular progress indicators that update in real-time
- Precise Timing: 100ms update interval ensures accurate timing and smooth visual updates
- Wake Lock API: Prevents your device screen from sleeping during workouts (on supported browsers)
- Mobile-First Design: Responsive layout that adapts to any screen size, optimized for touch interactions
This project is open source and available for personal use.