Happiness App
A mood tracking and social journaling app which allows you to keep track of how you are feeling every day and stay connected with your friends.
Happiness App is a mood tracking and social journaling web app created with the goal of encouraging self reflection, fostering stronger connections, and allowing friends to more easily keep in touch. This is done by having users rate how well they feel everyday on a scale of 0 to 10 (in 0.5 increments) as well as leaving a comment summarizing the major events that happened during their day. Each user’s happiness data can then be presented in different forms, such as in graphs, statistics, or a monthly calendar, allowing them to draw insights and reflect on how they have been feeling. Users can also create groups with other users, allowing them aggregate all their happiness data into a shared table + graphs and easily see how everybody is doing. We have found that this was a great way for friends to keep in touch, especially if you don’t see them too often or are on school break.
Other features include:
- Bidirectional infinite scroll interface for quickly viewing and editing happiness entries
- Sidebar easy creation of new happiness entries
- Ability to comment on other user’s happiness entries
- Weekly and monthly graphs for both the user and groups
- Global search over all your happiness entries with filters
- Reads system to see new entries that were created since you last used the app
- Private end-to-end encrypted entries for entering information that you want to keep private
- Reminder emails in case you forget to submit your daily entry
Currently, Happiness App is available as a web app: https://happinessapp.me. More app screenshots can be seen below.
In terms of the tech stack, Happiness App is built using React and TypeScript for the frontend, Flask for the backend, and SQLAlchemy + PostgreSQL for the database. Additionally, throughout the development lifecycle, we used GitHub best practices, creating branches and pull requests for each feature as well as performing thorough code reviews in order to ensure code quality and catch potential bugs. Additionally, I created a CI action on GitHub which automatically runs the API’s test suite on every push to ensure that we never experience any regression based bugs.
Documentation for the RESTful API, which contains for information about the API endpoints, authentication requirements, and request/response schemas, can be found in our API playground, which can be accessed here.
Dev Reflection
Happiness App has come a long way from our inspiration, a shared Google Sheets my friends used to share how we were doing every day. Over roughly one year, we went from a core group of 3 devs which created the MVP (v1) to a group of 4 devs and 3 designers where we completely redesigned the app from ground up (v2).
A crucial aspect of this project, and something I love about it, was its collaborative aspect. Working with others on a larger-scale project like this has helped me to realize the importance of writing good documentation for the API, code reviews, and collaborating with the design team to balance user preferences with features we wanted to add. There was also the constant theme was balancing the usability and practicality of a feature. For example, when I was implementing end-to-end encrypted journals, I had to balance usability with security (ex. how often users should be required to log in). I also had to consider edge cases, such as data loss/recovery concerns if users forget their password. Thinking about questions like this is what I love about working on fun side projects like this!