Skip to content

gerpaick/timer-mowcy

Repository files navigation

TimerMówcy ⏱️

TimerMówcy app icon

Open-source timer + stopwatch for speakers, trainers, and debaters.
Works offline. No ads. No accounts. No internet permission.

License Flutter Android Tests Languages

TimerMówcy home screen with timer tiles

✨ Features

  • ⏱️ Configurable timer presets — up to 10 tiles with custom name, duration, and color
  • ⏲️ Stopwatch counting up to 60:00 with auto-stop
  • 🔔 Time-up alerts — vibration + pulsing red overdue counter (keeps counting past zero)
  • 🎨 Customizable tile colors via built-in color picker
  • 📳 Optional vibration toggle (per device)
  • 🔒 Keep screen on while a timer or stopwatch is active
  • 📱 True fullscreen landscape — system bars hidden for maximum visibility
  • 🌗 Light / Dark / System theme toggle
  • 🚫 100% offline — no internet permission, no accounts, no telemetry
  • 🌍 PL + EN localization (Polish native, English complete)

📸 Screenshots

Home (empty) Home with tiles Stopwatch
Home screen empty Home with timer tiles Stopwatch running
Timer countdown Settings Add tile form
Timer counting down Settings screen Add tile form

❓ Why?

Built for debate clubs, Toastmasters meetings, lecture halls, and training sessions where:

  • A timer needs to be readable from across the room
  • Internet access is unreliable or unwanted
  • Multiple preset durations are needed (e.g. 5/7/10-minute speeches)
  • A stopwatch is needed for cross-examination or Q&A

Open-sourced because privacy-first tools for speakers should be accessible to everyone — and because a project this focused is a clean Flutter reference for the community.

📥 Installation

From APK (recommended for end users)

Download the latest APK from GitHub Releases.

Install with ADB:

adb install app-arm64-v8a-release.apk

Or transfer the APK to your phone and install it (enable "Install unknown apps" first).

Which APK? Pick app-arm64-v8a-release.apk for modern phones (99% of devices sold after 2017). Use app-armeabi-v7a-release.apk only for old 32-bit devices. app-x86_64-release.apk is for emulators.

From source

Requirements:

  • Flutter 3.35+ (Dart 3.9+)
  • Android SDK with minSdk 24 (Android 7.0+)
git clone https://github.com/gerpaick/timer-mowcy
cd timer-mowcy/timer_mowcy
flutter pub get
flutter run

🛠️ Building

# Debug (hot reload)
flutter run

# Release APK (single, larger)
flutter build apk --release

# Split per ABI (smaller files, recommended for distribution)
flutter build apk --release --split-per-abi

Output: timer_mowcy/build/app/outputs/flutter-apk/.

🧪 Testing

flutter test              # run unit + widget tests (52 tests)
flutter test --coverage   # generate coverage/lcov.info
flutter analyze           # static analysis (should report "No issues found!")

📦 Dependencies

Package Purpose
shared_preferences Persist tiles + settings
flutter_colorpicker Tile color picker
wakelock_plus Keep screen awake during timer
vibration Haptic feedback on time-up
flutter_localizations i18n infrastructure
intl Locale-aware formatting

🌍 Languages

  • Polski (PL) — native, complete
  • English (EN) — complete

To use the app in English, change your device language or pass --locale=en to flutter run.

📁 Project structure

timer_mowcy/
├── lib/
│   ├── main.dart                    # Entry point + MaterialApp
│   ├── l10n/                        # PL + EN ARB files + generated code
│   ├── screens/                     # Home, Timer, Stopwatch, Config
│   ├── widgets/                     # TileWidget, TimeDisplay, ActionButtons
│   │                                # + ConfigSettingsSection/Form/TileList
│   ├── models/                      # TimerTile
│   └── services/                    # TimerController, StopwatchController,
│                                    # StorageService
├── test/                            # 52 unit + widget tests
└── assets/                          # Source app icon (1024x1024)

🗺️ Roadmap

  • 📸 Add screenshots + GIF demo to README
  • 🎭 Adaptive icon variants (separate foreground + background layers)
  • 🔍 More translations (DE, FR, ES — contributions welcome)
  • 🤖 GitHub Actions CI (see .github/workflows/ci.yml)
  • 📋 Optional: F-Droid submission

🙏 Acknowledgments

Built with these excellent open-source packages:

👤 Author

Gerard RakoczyGitHub profile

🤝 Contributing

See CONTRIBUTING.md.

📝 Changelog

See CHANGELOG.md.

📄 License

Apache License 2.0 — see LICENSE.

Copyright 2025 Gerard Rakoczy

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Open-source timer + stopwatch for speakers, trainers, and debaters. Works offline. No ads. No accounts. No internet permission.

Topics

Resources

License

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors