We've all spent a fair share of time seeking out the latest tools to improve our productivity. From growing virtual plants to cutting ourselves off from our favourite apps, it seems like nothing worked well enough. Many apps seek to gamify the productivity experience by rewarding individuals for completing tasks. We wondered if we could create an effective motivator by doing the opposite: punishing users when they failed to complete their goals. We further considered what some effective punishments or motivations that we could leverage might be, and then realized that the greatest motivators are often social. That is, you would be more motivated to follow through on your goal if you’re held accountable to a friend. And, you might be more wary of falling short of your deadlines if failure could result in an embarrassing photo being sent to a friend. Finally, an element of randomness in consequences would keep you on your toes. Thus, the idea for productivity.space was born!
What it does
productivity.space is a platform that allows for the management of your to-do list... with a twist. Similarly to other productivity apps, users are able to add tasks to their to-do list with due dates. Once a task is added, users can enter a "work mode" that lets them concentrate on a specific task.
However, when users fail to complete tasks, productivity.space will pick from a list of hilarious punishments such as sending an embarrassing message or image to friends. With the addition of this twist, users will be motivated to complete more tasks in hopes to avoid these potential consequences. As well, productivity.space is heavily geared towards enforcing accountability. For each task, users choose a friend who will hold them accountable. If they want to edit or complete a task, the app sends a verification code to their accountability buddy, who must send it to them to complete their action. For example, their friend can decide whether you really deserve an extension on your task’s deadline, or whether you’ve just been goofing off.
How we built it
productivity.space is built with an Express/NodeJS backend (which further connects to a CockroachDB database and the voice, SMS, verify, and messaging Vonage APIs) connected to a ReactJS frontend styled using the Bootstrap library and CSS and structured using HTML . The backend is built using Express/NodeJS, using a CockroachDB cloud cluster as a database through Sequelize as an ORM. We primarily used the database to store data related to users (for user authentication), tasks, and friends. We also used the Verify, Voice, SMS, and Messaging Vonage APIs. We used the Verify API for the “accountability buddy” system in our app, where the friend would act as the “second factor” in authenticating task editing and completion. The Voice, SMS, and Messaging APIs were used in different potential punishments, from users receiving a disappointed call from our app to messaging a user’s friends embarrassing photos on Facebook Messenger. Finally, our app was prototyped using Figma and created with the registered domain myproductivity.space using Domain.com!
Challenges we ran into
We were perhaps a bit ambitious in the scope of our project, with this largely being the first full-stack project any of us had done at a hackathon. Additionally, our initial idea wasn’t built with the capabilities of some APIs we had in mind, so we needed to spend more time brainstorming. Of course, it was also a challenge to work together remotely without the ability to quickly glance over at each others’ screens . Once we began developing, we faced some initial challenges connecting to CockroachDB and writing APIs to modify the database, understanding how it functioned as a distributed database, and adapting once we had to move clusters. We also ran into challenges when we tried to add user authentication into the app as it exposed issues in how we had connected to the database initially. We had also never set up user authentication on this stack before, so there was a learning curve in setting everything up. Finally, connecting the backend and external APIs proved to be much more challenging than expected, with various issues with authentication and the CockroachDB being down for a portion of the night, as well as communication with sponsor reps being more difficult to coordinate due to the nature of the hackathon being online,
Accomplishments that we're proud of
- Our frontend and backend/database are actually connected, including working user authentication!
- The scope of the project was really large (from design, frontend, backend APIs, user auth, distributed databases, and external APIs), so we all learned about various parts of the stack.
- We managed to build something we think is a really fun source of motivation
What we learned
- Setting up a full web app from frontend to backend and database, with user auth and external APIs
- New parts of the tech stack for all members
- Improvising and adjusting our idea to make the most out of the given resources and APIs
What's next for productivity.space
- We plan on creating a Chrome extension to allow for convenient access to a user's to-do list.
- We want to hear from our users and incorporate motivational or punishment suggestions.
- We’re hoping to expand our library of punishments so that there’s something for everyone!
- We also hope to add more customizable options for punishments and messages so that the experience can be tailored to each user