Many to-do lists provide basic task tracking, and sometimes use gamification to promote productivity. However, to the best of our knowledge, none of them provide substantive visual insights into user productivity as a function of work environment at scale.
What it does
Taskful functions just like many to-do lists. All you have to do is enter in your to-do list as a series of tasks. When you begin working on a task, press the start button. When you finish a work session, press the stop button, and you will given a series of prompts regarding your productivity and work environment. This data is sent through machine learning algorithms, and visualized so that you can see what work environments help you be the most productive.
How we built it
The web interface for Taskful uses Vue.js to provide the user with a modern interface that provides PWA behavior and native install.
The backend for Taskful is written in Rust, a systems programming language that is blazing fast and provides robustness and safety guarantees. It uses rocket to serve the API and diesel to manage the postgresql database.
The machine learning aspect of Taskful is written in Python, supported by Keras and Tensorflow. It reads from the postgresql database, trains and predicts using a deep neural network, and submits data to the MicroStrategy API for visualization.
Challenges we ran into
When working with a data visualization product, there are two main types of challenges: challenges for the engineer and challenges for the analyst.
Regarding engineering challenges, we had difficulty getting together the server backends built from scratch in the time frame. Hard, persistent work combined with pair programming helped us overcome this.
Regarding data challenges, we had no issues uploading, maintaining, and visualizing the data via the MicroStrategy API and the corresponding mstrio Python package, beyond learning the environment. The MicroStrategy team here at VandyHacks was essential to our getting-up-to-speed this weekend. However, this meant that the main data challenge fell onto how exactly to represent the data for users to best understand what's happening. We've learned that these types of high-level data science decisions take years of experience to master to be able to deliver meaningful statistics to users at scale.
Accomplishments that we're proud of
Building a robust backend that can handle anything
I'm proud of the integration of mstrio to allow for live pushes to the MS server for quick visualizations.
Assisting in designing a User-Friendly Application.
What we learned
I learned that data visualization is an art and takes a ton of experience to make super clean and easy. I also learned a few very basic RESTful API calls from Python and how to set up a mini server in Python using Bottle.
I learned how to use the rocket and diesel frameworks, and how to design a RESTful API
I furthered my understanding of the nooks and crannies of Vue. This was my first time at a hackathon and my first time working on a team, so I learned a lot about git and github--how to setup a pull request, rebase, etc.
I learned more about using Bootstrap-Vue.
What's next for Taskful
Taskful will benefit from online learning and many active users. The more users which enter data, the better the deep learning model will be able to predict and assist users to being more productive in the way that suits them best.
Live updates graphically for the visualizations would be a plus too, as well as a robust user authentication system.
Further development into what kinds of analytics are useful for users to see would be a great step for the future as well.