A cross-platform multi-timer application for productivity, cooking, interval training, and task management. Run multiple independent countdown timers simultaneously with notes, reordering, and audio-visual alerts.
Built natively on each platform for the best user experience.
- Multiple Independent Timers in a scrollable list
- Full Controls: Start, Pause, Reset per timer with editable names
- Time Picker: Set durations via hours, minutes, seconds inputs
- Timer Notes: Add and edit notes per timer
- Toolbar: Add, Delete, Move Up/Down, Clear All
- Alerts: Audio and visual notification when a timer reaches zero
- Auto-Save: Timer states persist automatically across restarts
- Dark Theme: Consistent dark styling across all platforms
- Database Support: SQLite and PostgreSQL with configuration UI
| Java Swing (Desktop) | Python Curses (Terminal) |
|---|---|
![]() |
![]() |
| Platform | Technology | Directory | Run Command |
|---|---|---|---|
| Java Desktop | Java Swing + FlatLaf | /swing/ |
java -jar multi-timer.jar |
| Android | Kotlin / Jetpack Compose | /android/ |
Build APK via Gradle |
| Windows Desktop | C# / WPF (.NET 8) | /windows/ |
dotnet run |
| iOS | Swift / SwiftUI | /swiftui/ |
Open in Xcode |
| Linux Terminal | Python Curses | /curses/ |
python -m multi_timer |
cd swing
mvn clean package
java -jar target/multi-timer.jarRequires JDK 17+.
cd android
./gradlew :app:assembleDebugInstall the APK from app/build/outputs/apk/debug/. Requires JDK 17 and Android SDK.
cd windows
dotnet runOr publish a standalone EXE:
dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=trueRequires .NET 8 SDK.
cd swiftui
open MultiTimer.xcodeprojBuild and run in Xcode (Cmd+R). Requires macOS and Xcode.
cd curses
pip install -e .
python -m multi_timerRequires Python 3.8+. Keys: A Add, D Delete, N Notes, R Reset, Enter Toggle, Q Quit.
Each platform persists timer data automatically:
| Platform | Default Storage | Location |
|---|---|---|
| Java Swing | JSON file | ~/.multi-timer/timers.json |
| Android | SharedPreferences | App internal storage |
| Windows WPF | JSON / SQLite / PostgreSQL | %APPDATA%/multi-timer/ |
| iOS SwiftUI | UserDefaults | App container |
| Python Curses | JSON file | ~/.multi-timer/timers.json |
Windows WPF supports configurable storage backends (JSON, SQLite, PostgreSQL) via the Settings dialog. PostgreSQL passwords are encrypted at rest using DPAPI.
- CI (
ci.yml): Builds all platforms on every push - CD-CI (
cd-ci.yml): Auto-increments version and tags on push to main - Release (
release.yml): Builds and publishes all 5 platform artifacts to GitHub Releases
Versioning follows X.Y format. Version is stored in the VERSION file.
All code review and design uses FreeModelRouter with the arbiter/workers pattern:
# Review all platforms (5 workers + arbiter per group, parallel)
python3 tools/full_review.py
# Review specific platforms
python3 tools/review.py android windows
# Full pipeline: design -> review -> meta-review -> fix -> verify
python3 consensus.py full- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit changes (
git commit -m 'Add my feature') - Push (
git push origin feature/my-feature) - Open a Pull Request
MIT License. See LICENSE for details.
All code and architecture generated by free AI models via FreeModelRouter arbiter/workers consensus.


