diff --git a/README.md b/README.md index 8c37e9c..00783fb 100644 --- a/README.md +++ b/README.md @@ -1 +1,214 @@ -# TaskOn +# 🌱 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: +```bash +pip install -r requirements.txt +``` +--- + +## πŸ—‚οΈ Project Structure +```bash + +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.