Skip to content

🌱 TaskOn β€” Friendly Pomodoro timer app with visual progress, audio alerts, and OOP/SOLID design for focused productivity.

License

Notifications You must be signed in to change notification settings

KumudithaSilva/TaskOn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌱 TaskOn β€” Pomodoro Timer App

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.


πŸŽ“ Purpose

  • πŸ§‘β€πŸ’» 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.

🧠 Key Features

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

πŸ“Έ TaskOn App Output (UI Preview)

image

✨ Features

  • ⏱️ 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.log and console.
  • πŸ“¦ Lightweight β€” runs with Python standard libraries and pygame.

πŸ“Œ How It Works

  1. Press ▢️ Start β†’ a short tick countdown begins.
  2. Timer alternates between:
    • Work sessions πŸ§‘β€πŸ’»
    • Short breaks β˜•
    • Long breaks 🌿 after several work sessions.
  3. 🎢 Audio alerts notify when time’s up.
  4. βœ… Checkmarks track completed work sessions.
  5. Press ⏸️ Reset anytime to clear progress.

🎯 App Flow Overview

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

πŸ”§ Core Functionalities

βœ… TaskManager

  • Tracks session repetitions and decides whether the next is work, short break, or long break.

βœ… Timer

  • Handles countdown logic (tick + main timer).
  • Triggers callbacks to update UI and play sounds.

βœ… TaskOnUI

  • Tkinter-based user interface with buttons, logos, and timers.
  • Displays countdowns, alarm messages, and checkmarks.

βœ… AudioService

  • Plays notification sounds for transitions.

βœ… ResourceLoader

  • Dynamically loads images and icons from assets/.

πŸ–₯️ System Requirements

  • Python 3.8+
  • Dependencies:
    • tkinter (built-in with Python)
    • pygame (for audio)

Install dependencies with:

pip install -r requirements.txt

πŸ—‚οΈ Project Structure

TaskOnApp/
β”œβ”€β”€ 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

πŸ“¦ Future Enhancements

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


🀝 Contributing

  • 🍴 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!


πŸ”€ Git Flow Workflow

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

Future branch structure :

  • ✨ feature/* β€” For developing new features, branched off task_oop
  • πŸ› οΈ release/* β€” For preparing releases, branched off task_oop
  • 🩹 hotfix/* β€” For urgent bug fixes, branched off master

Typical workflow (future plan):

  1. πŸ“₯ Pull the latest changes from task_oop
  2. 🌟 Work on your changes (directly on task_oop for now)
  3. πŸ”€ Open a Pull Request (PR) to merge into task_oop
  4. βœ… After review and testing, merge PR into task_oop
  5. πŸš€ When ready for release, create a release/* branch from task_oop for final testing and polishing
  6. πŸŽ‰ Merge release/* into master and tag the new version
  7. ⚑ For urgent fixes, create a hotfix/* branch off master
  8. πŸ”„ Merge hotfix/* back into both master and task_oop

This workflow helps maintain stable releases while supporting safe feature development and quick fixes as the project grows.


πŸ’‘ Inspiration

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.

About

🌱 TaskOn β€” Friendly Pomodoro timer app with visual progress, audio alerts, and OOP/SOLID design for focused productivity.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages