|
||
---|---|---|
.gitignore | ||
LICENSE | ||
main.py | ||
README.md | ||
ROADMAP |
DoIt
Purpose
I'm kind of an unfocused person. I find it helpful to have some external force encourage me to keep focusing on a task, especially if it's something I have to do and don't really want to do. This is why I use apps like "5217" by Francisco Franco and set reminders for myself on my work calendar. While I have a pretty good memory and generally know what tasks I have to get done and when, I've found that sometimes I just have so much, that I forget to do things here and there. Therefore, I wanted to find some application that could act as a to-do list but also encourage me to focus while I take on these taks. Turns out, no such application exists in the way I want it to. Sure, there are some online or standalone applications, but they all seem to require an account. I don't want to sign up for something which I believe an offline desktop application can do on its own. I don't want a to-do list for everything in my life. I wanted one that is specific to work. If it's synced online, it gets too cluttered and becomes a micromanager for everything in life. This ideal tool may exist but I haven't found it, so I'm making it. In Python.
Functionality
At its core, DoIt is a planner, to-do list, and time manager all rolled into one. It holds you accountable for getting things done and ensures you're actually doing it. It's small, lightweight, easy to use, and always-present. It's designed to kind of bother you by letting you know when you have commitments and how long you have to do them. It guilts you into working when you should be, and demands you take breaks when you can. This improves daily productivity.
Procedure
I'm making this up as I go, and it is very likely to change before development is finished.
Creating a task
To create a task, it's best to add it right as you get it.
- Click "Add Task"
- A new-task dialog appears
- There are 5 required fields
- What: Define your task here
- Due: Input by when it needs to be done
- Duration: Estimate how long the task will take
- Priority: Decide on a priority on a 1-3 scale with 1 being most important
- Description: Describe in more detail your task.
- If you're in a meeting or something and need to not be distracted by the creation of the task, you may click "snooze" at this point.
- The program will add your task to the roster, but will be marked as incomplete
- If the user does not complete the task definition within 15 minutes, the new-task dialog will reappear and will ask the user to complete it.
- If the user snoozes again, the new-task dialog will disappear for 5 minutes.
- Each subsequent snooze will only snooze for 5 minutes after that.
- Save
- Click the save button to add the completed task to the roster.
- There's also a cancel button. Only use this if it turns out you don't need to do the task after all. Do not click it to postpone creating your task. That's what Snooze is for!
Note: It is best to schedule specific tasks using this software. It is not meant to manage entire projects.
The Roster
All your created tasks will appear here. In general, it is best to try to complete the list in sequential order from top to bottom.
- This list is ranked first by priority, second by due date.
- Priority is shown with a numerical ranking and color
- Red = priority 1
- Yella = priority 2
- Green = priority 3
- (If you enable "color blind" mode, green is changed to blue)
- A realtime counter is shown on each task's line, counting down to the task's due-time
- If the task is due more than a day away, the timer is replaced with the due date.
- Tasks will reorganize themselves based upon priority and due date
- When 2x the duration is remaining, the priority automatically increments
- If a task is already priority 1, it will be pushed to the top of the list
- When 1x the duration remains, the priority again increments, or is pushed to the top of the list.
- If a task goes overdue, it will go into a "priority 0" state and turn an unpleasant shade of purple.
Stretch Goals
Notifications
If a task reprioritizes, you run out of time, or a break is recommended, the software will trigger a notification.
Calendar Integration
I don't think this is realistic, but I'd like to allow DoIt to read your system calendar (Outlook, etc.) and assist you in scheduling tasks around your calendar.