TaskOn is a lightweight, user-friendly productivity app built with Python and Tkinter, following the Pomodoro Technique to help you manage your time effectively. Unlike simple timers, TaskOn is built with Object-Oriented Programming (OOP) principles and follows SOLID design practices to ensure:
- π οΈ Maintainability β easy to update & extend
- π Reusability β modular classes for timer, UI, audio, and task logic
- π§© Scalability β add new features (themes, persistence, reports) without breaking existing code
It helps you stay productive with focused work sessions, refreshing breaks, audio notifications, and visual progress tracking.
TaskOn makes focus rewarding with visual checkmarks, audio cues, and simple controls β turning productivity into a habit.
- π§βπ» Stay focused with structured work & break sessions.
- π Prevent burnout with short and long breaks.
- π± Track your progress visually with checkmarks & icons.
- π§ Promote habit building with repetition + reinforcement.
- π οΈ Demonstrate a real-world OOP + SOLID Python project.
- β±οΈ Automated Pomodoro sessions (Work β Short Break β Work β Long Break).
- π¨ Minimal Tkinter-based UI with start/reset controls.
- π Audio alerts for session transitions.
- β Checkmarks to celebrate completed work sessions.
- βοΈ Customizable durations (work, short/long breaks, repetitions).
- π Session logging β activities logged in console &
app.log.
- β±οΈ Pomodoro Timer β Work, Short Break, and Long Break sessions.
- π¨ Minimal & Clean UI powered by Tkinter.
- π Audio Notifications with sound cues for session transitions.
- πΏ Visual Feedback β progress checkmarks and dynamic logos.
- βοΈ Customizable Configurations (session durations, repetitions, countdowns).
- π Built-in Logging β records actions in
app.logand console. - π¦ Lightweight β runs with Python standard libraries and
pygame.
- Press
βΆοΈ Start β a short tick countdown begins. - Timer alternates between:
- Work sessions π§βπ»
- Short breaks β
- Long breaks πΏ after several work sessions.
- πΆ Audio alerts notify when timeβs up.
- β Checkmarks track completed work sessions.
- Press βΈοΈ Reset anytime to clear progress.
βΆοΈ Play β Starts timer.- β³ Tick countdown β Quick prep before session begins.
- β±οΈ Work timer β Focus until alarm.
- πΏ Break timers β Short or long depending on progress.
- β Completion tracking β Adds checkmarks to UI.
- βΈοΈ Reset β Clears timers, progress, and starts fresh.
- Tracks session repetitions and decides whether the next is work, short break, or long break.
- Handles countdown logic (tick + main timer).
- Triggers callbacks to update UI and play sounds.
- Tkinter-based user interface with buttons, logos, and timers.
- Displays countdowns, alarm messages, and checkmarks.
- Plays notification sounds for transitions.
- Dynamically loads images and icons from
assets/.
- Python 3.8+
- Dependencies:
tkinter(built-in with Python)pygame(for audio)
Install dependencies with:
pip install -r requirements.txtTaskOnApp/
βββ taskon/ # Main application package
β βββ __init__.py
β βββ main.py # Entry point
β βββ app.py # App logic coordinator
β βββ timer.py # Timer logic
β βββ task_manager.py # Pomodoro/task session controller
β βββ ui.py # Tkinter UI
β βββ audio_service.py # Audio abstraction layer
β βββ config.py # Configurable durations
β βββ resources.py # Loads icons/audio
β βββ logger.py # Centralized logging
β βββ assets/ # Static files
β βββ audio/ # .wav, .mp3 files
β βββ images/ # .png, .ico files
β
βββ tests/ # Unit tests
β βββ __init__.py
β βββ test_timer.py
β βββ test_task_manager.py
β
βββ dist/ # Built files (output)
β βββ TaskOnApp.exe # Windows executable (PyInstaller)
β βββ taskonapp-0.1.0-py3-none-any.whl # Python package
β
βββ build/ # PyInstaller build cache
β βββ ...
β
βββ .github/ # GitHub Actions workflows
β βββ workflows/
β βββ taskon-tests.yml # CI/CD (test, Sonar, PyInstaller)
β
βββ .gitignore # Ignore build files, __pycache__, etc.
βββ README.md # Project overview, setup, usage
βββ requirements.txt # Runtime dependencies (pygame, etc.)
βββ MANIFEST.in # Includes assets in Python package
βββ pyproject.toml # Modern build system config
βββ TaskOnApp.spec # PyInstaller config file
-
π¨ Modern UI Themes β Add dark mode & customizable color schemes.
-
π Custom Alerts β Allow users to upload/select their own sounds.
-
π Productivity Analytics β Track sessions completed & generate reports.
-
π Cross-Platform Sync β Save sessions & configs to the cloud.
-
π Task Notes β Attach quick notes/todos to each work session.
-
π΄ Fork the repo
-
π± Create a feature branch
-
π οΈ Commit changes
-
π€ Push branch & open Pull Request
-
We welcome UI tweaks, new features, bug fixes, and documentation improvements!
The development process follows a Git Flow style workflow to keep development organized and efficient. Currently, it uses these branches:
- πΏ
masterβ Stable, production-ready code (released versions) - π±
task_oopβ Main development branch for ongoing work
- β¨
feature/*β For developing new features, branched offtask_oop - π οΈ
release/*β For preparing releases, branched offtask_oop - π©Ή
hotfix/*β For urgent bug fixes, branched offmaster
- π₯ Pull the latest changes from
task_oop - π Work on your changes (directly on
task_oopfor now) - π Open a Pull Request (PR) to merge into
task_oop - β
After review and testing, merge PR into
task_oop - π When ready for release, create a
release/*branch fromtask_oopfor final testing and polishing - π Merge
release/*intomasterand tag the new version - β‘ For urgent fixes, create a
hotfix/*branch offmaster - π Merge
hotfix/*back into bothmasterandtask_oop
This workflow helps maintain stable releases while supporting safe feature development and quick fixes as the project grows.
TaskOn is inspired by Francesco Cirilloβs Pomodoro Technique, designed to help people work with time instead of against it. This project also demonstrates how OOP + SOLID principles can be applied to build a real-world, extensible productivity app.