Inspiration

WolfTasks bridges the gap between class assignments and reminders. Moodle Calendar is set up for assignments where one can export an .ics file to be added as events to one’s calendar. However, one is not reminded of the given assignments until the day beforehand. Google Tasks provides functionality within one’s Google Calendar to create tasks to complete and be notified regarding their deadlines. The WolfTasks Team saw this as an opportunity to automate the process of creating Google Tasks by utilizing the Google Tasks API and creating our own platform, WolfTasks, which takes an .ics file and automatically views, updates, adds the assignments to one’s Google Calendar.

What it does

WolfTasks is broken down into several components: WolfTasksUI, WolfTasksGUI, CalendarAPI, and TasksAPI. The WolfTasksUI provides a User Interface through command line where one can view, add, and remove tasks. The WolfTasksGUI provides a Graphical User Interface through Tkinter that allows the user to select which option they want to provide the .ics file, whether that be the moodle link or the .ics file itself. Then, the user can select which stylistic option they would like their Google Tasks display as. The CalendarAPI parses the .ics file and returns a list of custom tasks. The TasksAPI handles the functionality for the tasks for updating and adding tasks to the calendar. All together, WolfTasks provides two displays: WolfTasksGUI and WolfTasksUI for the user to automate their assignments calendar to their Google Tasks.

How we built it

We first started out by trying to use the Google Tasks API in JavaScript/HTML, but ran into some initial issues. After a little time of deliberation we decided that we were going to switch to using python and creating a local application instead of a web application.

We started by looking at the example documentation that Google Tasks API provides to see how we can make requests to the API. We then expanded on this implementation and used it for the basis of our proof of concept. We created a basic script initially to show how we can list and upload tasks. From there we moved on to making a more modular system utilizing multiple python files to create separate components that we would later bring together in the UI/GUI.

We decided to split up the files based on the processing we needed to do. The first thing we needed to do was process the ics file that is provided either by a url or an actual file. We made use of a python library that parses the file and turns it into a list of events. From there we extracted the data from the events that we needed and turned it into a custom Task object that we made. This task object would hold the details needed to create the task for the Google Task API. This includes the title, description and due date for the tasks.

From there we moved on to interfacing with the Google Tasks API. In this file we made functions that would take in our custom Task objects and add them to the users task list. These functions make calls to the Google Task API using authentication through Google. The functions here are able to add and update tasks.

Lastly we created two UI’s for the project. We have a command line interface and a graphical user interface (GUI). Both GUI’s have the option of loading a file from disk or providing a link to the download for the ics file. There is also an option to change the format of how the task will display in the Google Task list.

Challenges we ran into

Our first challenge we encountered was when trying to use the Google Tasks API to create a simple browser application. We were having trouble making a function that would return all the tasks in a user’s task list. The problem was that the function used a promise to ensure it would be fulfilled which conflicted with the way we were using it. We also found that there were few resources available for helping with the browser Task API. Because of this, we decided to switch to Python as there were more libraries to help us parse through the calendar and more tutorials online. We also didn’t know how we wanted to display our work to the user. We eventually decided to use a Python GUI because it is easier for beginners to use to make a clean user interface. Another challenge we ran into was when parsing through the calendar file. We needed to figure out how to extract information from each event then format it in a way so that we could use the Task API. This required using a Calendar API to get events from an ics file, then process the information from the event in the style the user chose, then putting the information into a custom class called Task.

Accomplishments that we're proud of

The WolfTasks Team is proud of turning our idea into a viable product. ⅔ of our team members are active Google Task users so having this platform increases both our efficiency and productivity because we don’t have to spend time manually entering our assignments, their due dates, and updating the tasks. After completing the project, we are able to say that we learned how to utilize python to help us build this platform as well we learned to use Google Tasks API.

What we learned

Before we started this project, only one of our team members had minimal experience with Python. We all learned a lot about how to use the Python language and how to use different libraries that Python offers. Libraries that we got very familiar with are the Arrow library for dates and times and the Calendar library for looking through an .ics file. We also used Tkinter for the first time to make out GUI. During this process we also worked with the Google Tasks API which we had never used before. We worked with using their functions to allow access to a user’s google account and to add tasks to their task list. Finally, we learned a lot about teamwork during this event. It was sometimes hard to all work together on a project when we had conflicting ideas about what to do. Ultimately, we had to learn to communicate to each other in a thoughtful manner.

What's next for WolfTasks

The next step for WolfTasks is that we would like to create a website for the platform so that the User can easily navigate to WolfTasks.digital, drop in their .ics file or paste their Moodle calendar link, and automatically have the assignments within their Google Tasks, but from a website. By having a website instead of a GUI or UI, it makes it easier to be able to work from varying devices such as on mobile.

Built With

Share this project:

Updates