2020 was a really tough year for most people. March came by and suddenly we were all in quarantine, trapped at home with nothing to do and nowhere to go. Some of us found things to do, learned new skills, took up interesting hobbies. But unfortunately, not everyone was in either a financial situation or in a mental or emotional state to be able to motivate themselves to do something productive with all their free time. That’s why we came up with the idea of Virtual Grounds.
What it does
Virtual Grounds is a productivity platform that goes beyond simply tracking your daily tasks. We provide the user with all sorts of analytics to help them plan their days and weeks more effectively. Users on our application can easily access their weekly insights to see the hours they slept, the total number of hours spent completing productive tasks, the number of hours dedicated to each category of these tasks, and much more.
Through analysis of this data, we’re able to calculate the estimated amount of free time the user has each week. Now, this is where Virtual Grounds finds its niche in the productivity software market. While many platforms aim to increase productivity and reduce idle time, our goal instead is to emphasize the users planning of their own free time. We don’t want our users cycling through the mundane things in life, rather we want to provide them with opportunities to get out and explore new things. Our user analysis software allows us to see what kinds of personalized activities and hobbies the individual may be most interested in. We then present this data to the users, linking them to sites and programs with these activities, and allowing them to custom pick which activities they are interested in and would like to pursue. The user can then enter chats and groups with like-minded people pursuing these same activities, giving them the chance to network and create friends who will motivate the user to stick with the activity they’ve chosen over the long run. The user then provides Virtual Grounds with some more information, such as the date they would like to start, and their expected weekly commitment. Since all these options are up to the user, they’re free to play around with the settings however they’d like. If they’d like to plan out more activities but spend less time with each of them so that they can fit them all into their schedule, it’s completely up to them. Virtual Grounds adapts and schedules however it’s needed. We don’t plan for the user, the user plans with us.
How we built it
Complex state management was handled through Redux, with asynchronous requests to the server handled with the help of Redux-Sagas
The backend was written in Django, with the help of the Django Rest Framework for HTTP calls to the REST API, Django Channels to create an ASGI, websocket application running in sequence with the WSGI REST API, as well as Django Rest Knox for token authentication, securing the entire project.
Data management, and storage was done through the help of CockroachDB, a cloud-native, NewSQL database. CockroachDB was the better choice over something like PostgreSQL as it offers a Django Engine for ORM operations, distributed transactions, allowing the database to serve more than a single host (beneficial to us in this project), as well as automated scaling.
Challenges we ran into
A large challenge that presented itself was hosting an ASGI and WSGI application on the same server.
This was finally accomplished through redis caching, as well as the use of CockroachDB
Accomplishments that we're proud of
We are really proud that our group was able to collaborate efficiently and effectively due to this year’s virtual setup. It was definitely a unique experience due to the ongoing pandemic but our group was able to successfully complete our hack.
What I learned
Starting with frontend, there were various new features we learned using React and how effective it can be as a frontend framework.
What's next for Virtual Grounds
The next step for Virtual Grounds is to market our application towards University of Waterloo students as a test run to see how our application reacts to high traffic. We plan to advertise our additional features such as Discover Mode, Productivity Analytics and much more for those that become invested in our application. Then we plan on targeting individuals across Ontario, and eventually internationally, in order to help them measure and improve their productivity, as well as take up some new hobbies during their quarantine.
For future software developments, we would like to implement ML that can be trained to provide more activity/hobby suggestions to the user based on the tasks they submit into their calendar and the discussions they have in different activity group chats. As well, we'd like to implement a forum where users can share their experiences of taking up some new hobbies.