We recognized that community is essential for achieving goals and breaking habits, but quarantine and social distancing has made that difficult in this season. We wanted a tool that would help keep people connected and working together while also helping break down large goals into smaller ones.

What it does

Habitity allows you to come together with a group of friends to work on breaking (or making) a habit together. It allows you to join a group together with other people and mark every time you achieve a specific goal (ex. not buying cigarettes while at the store). Each goal awards a certain number of points, and each week the group tries to reach a certain number of points.

How we built it

We used firebase functions to form a backend for secure authentication, while using angular.js (using TypeScript) with firebase to build the frontend.

Challenges we ran into

We had to figure out a good division of labor especially since most of our app was in the frontend, so everyone working on the same file was likely to create merge conflicts. In the end we overcame this by having one person work on the backend with firebase functions, then working on the design for the frontend, while others setup and built individual parts of the frontend.

Accomplishments that I'm proud of

We've kept a fairly high level of production quality in the code, and can use this as a base for future expansions rather than a simple prototype which we would later rewrite from scratch.

What I learned

Martin learned how it's very easy to underestimate how easy it is to complete a goal, and how difficult it is to manage a team (I [Daniel] think he did a great job).

Daniel learned a good bit about the features of firebase, especially the firebase functions, their serverless functions API.

What's next for Habitity

We'd love to add some more advanced social features, including likes for specific goals achieved. We'd also like to let users add their own habits to track with their custom goals (this is very simple to do with the technology, but requires more UI work than we had time for).

We'd also want to get some feedback from experts on the effectiveness of this technique and see if we can get any improvements in the general approach.

Share this project: