Grindstone To Goals was inspired by the need to solve several problems that led to less things being accomplished in a day. We needed a better way to organize our day-to-day tasks which would help us complete more in less time.
First, we realized that many tasks we need to do are repeated throughout a month or year, such as paying various bills every 10 days, taking out the recycling every two weeks, and replacing household air filters every 90 days. It is hard to keep track of each item’s schedule and for many tasks there is some flexibility in when they are actually completed.
Secondly, to-do lists are troublesome and unwieldly. We had lists that would fill an entire sheet of paper; tasks were completed in a different order than the list. Once the list filled up, starting another page meant rewriting unfinished items on a new page. Plus, long lists can be overwhelming when you know everything can’t be done in one day.
Last, when we had scheduled tasks in Outlook calendar, they were not on the to-do list. It is easier to plan what to do in a day when everything that needs to be done is in one place.
What it does
Grindstone To Goals is a multi-platform personal productivity tool that enables users to manage their to-do list by only showing them tasks that currently need to be done (hiding those that need to be done sometime in the future) and empowering them to select which will be done today. Tasks can be organized and categorized into pools so they are easy to find and similar tasks are in a group.
In addition to user entered tasks, user’s Outlook calendar tasks and appointments for each day are added using Microsoft Graph. Once today’s list is set up, the user can focus his/her energy on completing those tasks without having to sift through the “backlog”. Users start each day with a clean slate and unfinished tasks can be selected on another day. As reoccurring tasks are completed, the system calculates the next time that they will need to be done and will hide them from the pools until then. The end result is less worrying about if you remembered everything that needed to be done today, and more time enjoying life.
How we built it
Grindstone To Goals is a multi-platform system featuring an ASP.NET backend that exposes a SignalR hub as the primary interface to client applications. It uses Microsoft Graph to sync data with users’ Microsoft Office account, specifically Microsoft Outlook Calendar. The backend is written in C#, using Entity Framework 6 for access to a SQL Server 2012 database. The web interface was written using Angular2 with Typescript and extensively utilizes features provided in the HTML5 and CSS3 standards. The desktop client utilizes C#, .NET, and WPF. We also plan to have a mobile applications written with Xamarin in the future.
Challenges we ran into
Accomplishments that we're proud of
Our biggest accomplishment is creating an easy to use task management system that we want to use in our personal lives. We also overcame some hard to solve technical challenges. Successfully creating a highly modularized and extensible system on a brand new cutting edge platform was important to us and we did it in just a few months. We are happy that we were able to overcome our difficulties with authentication and integrate the Microsoft Graph API. We hope to make more enhancements in the future using Microsoft Graph.
What we learned
We learned a lot about how to use the Microsoft Graph API and authenticate users using the OAuth2 protocol. We also gained a lot of knowledge regarding how to utilize the Angular2 platform, how to develop with the Typescript language, and how to integrate those two technologies into a .NET based project instead of the Node.JS environment they are typically run in.
What's next for Grindstone To Goals
In the very near future we will be adding “Contacts” support so that users can see other user’s tasks and even collaborate by assigning tasks to each other. To assist in finding the other users we plan on using the Graph API to suggest people to connect and collaborate with. We will also be releasing a mobile client application for UWP, Android, and iOS.