Inspiration
I get distracted pretty easily, so I wanted a simple tool that can remind me when I'm not on track without being too intrusive. If you try to search for these kinds of tools, they're usually locked behind small subscriptions. Maybe I'm just stingy but I couldn't see why a seemingly simple tool should require payment to stay focused. That inspired me to create Productivity Tracker, a (currently very) minimal personal focus tool.
What it does
The productivity tracker monitors what application you have currently open and categorizes it as productive or unproductive, based on a blacklist provided by the user. If you spend a certain amount of time (customizable) being unproductive, the program will push a notification to remind you to get focused.
How we built it
I used Python to code the whole project. Some of the libraries I used include CustomTkinter for the GUI, Psutil and ctypes for window detection, plyer for notifications, and threading to run the app in the background.
Challenges we ran into
Figuring out how to detect active windows with Python was definitely a challenge. Keeping the GUI working in the background required some reading on threading. I also spent a long time trying to make the GUI look nice but then decided to go with a very minimalist look and focus on functionality.
Accomplishments that we're proud of
The program actually runs! Aside from that, I learned how to interact with Windows APIs, though in a very limited sense. The app has a lot of potential and can be genuinely useful for many people. The design is also very simple, so I think it shouldn't be too hard to expand on the project.
What we learned
I learned how to create GUIs in Python with customtkinter and access system information with psutil. I also learned how to push notifications to the user. These may seem like small things, but they helped me understand more about how applications interact with the system and how to make simple, useful tools on my own.
What's next for Productivity Tracker
One issue with the program is that currently, you have to go into the code and manually change the blacklist. I want to integrate that into the application window itself. Additionally, it might only work on Windows because of the specific python libraries I used. Another thing I want to implement is the ability to detect specific browser windows, though that may require creating a browser extension. Overall, I want to make it a bit more complex with a polished GUI.

Log in or sign up for Devpost to join the conversation.