Skip to content

Repository files navigation

Multi-Timer Pro

Multi-Timer Pro

Java Swing Android Python Curses SwiftUI WPF .NET 8 License: MIT

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.


Features

  • 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

Screenshots

Java Swing (Desktop) Python Curses (Terminal)
Swing Curses

Platform Support

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

How to Run

Java Swing

cd swing
mvn clean package
java -jar target/multi-timer.jar

Requires JDK 17+.

Android

cd android
./gradlew :app:assembleDebug

Install the APK from app/build/outputs/apk/debug/. Requires JDK 17 and Android SDK.

Windows WPF

cd windows
dotnet run

Or publish a standalone EXE:

dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true

Requires .NET 8 SDK.

iOS SwiftUI

cd swiftui
open MultiTimer.xcodeproj

Build and run in Xcode (Cmd+R). Requires macOS and Xcode.

Python Curses

cd curses
pip install -e .
python -m multi_timer

Requires Python 3.8+. Keys: A Add, D Delete, N Notes, R Reset, Enter Toggle, Q Quit.


Storage

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/CD

  • 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.


Development

FMR Consensus Tools

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

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Commit changes (git commit -m 'Add my feature')
  4. Push (git push origin feature/my-feature)
  5. Open a Pull Request

License

MIT License. See LICENSE for details.


All code and architecture generated by free AI models via FreeModelRouter arbiter/workers consensus.

About

Cross-platform multi-timer app for Android, iOS, and Windows - built with Expo/React Native and multi-AI consensus via FreeModelRouter

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages