Most people often find it difficult to stay motivated and productive, and quarantine has only served to exacerbate this issue. Now, more than ever, it’s easy to lose track of time watching youtube videos or scrolling aimlessly through social media.
Many of our peers feel lost and isolated, and this can be very damaging to mental health. With ProductiviTree, we aim to change that by incentivizing and sharing your productivity with your friends, creating an encouraging, supportive environment.
What it does
ProductiviTree is a mobile application where users can share ways that they stay healthy and productive during and after quarantine with their friends while also gaining points towards daily goals.
Why do we want to share our productivity with others? Well, when we have to do homework by ourselves it can be hard to stay on task. But when we're in a study group, we support one another and keep each other accountable. In a survey of our peers, 63% stated that they are more productive when they’re with others. Our group wants to recreate this kind of effect with more things, and on a bigger scale.
On top of that, to further incentivize productivity, the user can gain points for doing tasks in the categories of self-care, community, fitness, and productivity. The accumulated points will automatically be redeemed to plant trees, so users can help the environment while helping themselves.
How we built it
Here is our high level design diagram. We constructed the front end of our application with React Native on Expo to facilitate cross-environment development along with built-in APIs, and the backend using Node.js and Express. We utilized MongoDB to manage user data. For the accompanying website for our app, we used React. We understand that user security is an important issue, hence to ensure user privacy and data security, we used Google Authorization for account creation and sign-in. DevOps are handled with GCP App Engine and Firebase.
We do not anticipate any issues with handling the expected load of users. However, if we receive many more users, our application architecture can be easily scaled for many more users by simply sharding our databases and scaling our servers.
As a team, we spent a long time discussing each of our current strengths and weaknesses, and used this tech stack because it is a combination of technologies that we are familiar with, along with some technologies that we had less experience with. Through this project, we have branched out and learned more while still maintaining and using the skills we had prior.
Challenges we ran into
Over the course of this hackathon, we came across multiple roadblocks and learned a lot while facing them. The main issues we faced were some backend issues and connectivity, but we did also have some front end issues.
We have a complex backend with entities that have multiple relationships with other tables and even their own tables. This is the first time that we’ve dealt with database relativity and it took us a while to figure out the most optimal way to structure our database to maximize efficiency.
For some of our screens, we had to make several API calls where the parameters for one was dependent on the other, or handling data from several APIs based on user selection to create custom states. This would at times slow down our app rendering. To fix this, we learned how to hook handling and state management works and created placeholder components.
We realized that some of our parts for the user profile and friends profile were very similar. To optimize app size and take full advantage of React’s reusability, we decided to create reusable components and call them at the appropriate screen using conditional rendering.
Onboarding with our app is as easy as logging in through your Google account. From there, you can set your daily goal, find other users to follow, and start making your own posts!
For marketing, we can incentivize users to invite their friends by giving them points for each friend they refer with a referral link. We have created an accompanying website that includes app details, demo videos, and links to the listing on the app store.
Though the idea was inspired by our current situation with social distancing, users will still be able to use the app post-quarantine, to keep them productive, motivated, and connected to friends.
What's next for ProductiviTree
As we continue to work on our app, we would like to add daily notifications to remind you to be productive and help the environment. We want to add more interactions for friends, such as challenging each other to do tasks and add “teams” for groups to encourage more friendly competition, and of course, by extension, more productivity.
We would love to partner with environmental organizations to help us plant trees or help the environment in any other ways, because we are all very passionate about creating things that make the world a better place.