In our society, it’s easy to become swept up in the ever-moving, pressured environments we are often all subject to. Consequently, it’s difficult to remember to take time to take care of our well-being and tend to our personal and spiritual needs. We made this app because we wanted a place where we could take time every day to briefly and conveniently log the highs and lows of everyday life. We’d noticed a lack of motivation and spiritual fulfillment in ourselves and others, especially in these unprecedented times, where establishing a stable support system and maintaining motivation has become difficult. With this app, we hope to provide a platform that encourages people to briefly take the time to enter their thoughts and experiences in day-to-day life, and allows them to reflect and build on themselves.

What it does

The app opens with a yearly timeline, where users can select the year they want to view. This further zooms into months, then a specific date. At this point, users can create a new diary entry, upload images, track their mood for that day, add a new goal, or add a main event, which is the most important central event for that day. Any diary entries the user makes will automatically be evaluated with machine learning and natural language processing and given a score out of 5 for the user’s mood in that entry. If the user would rather hand write diary entries and simply store them on our app, we also offer an in-built OCR feature, which can extract text from an image and store it as a diary entry in our database. When creating an entry of any kind, users also have the option to select it as a favourite entry, should they wish to easily access it at a later date and recapture those memories. They also have the option to view their previous entries, providing them with the opportunity to reminisce on good times and reflect on the bad ones, turning them into opportunities for growth. The app is able to further encourage deeper user introspection by providing general summaries. For example, the user has the option to view their dashboard, in which the most common emotion they experienced in the last month is displayed, based off of the emotions our app finds in their diary entries. Their accomplished goals and their goals in progress are also displayed here. Additionally, they can view all of their favourite entries. For extra support, there is a resources page in which users can find resources that fit their needs. There are hotlines for urgent, immediate help, support groups for ongoing help, relaxation sources to relieve stress and anxiety, and educational resources for those who wish to learn more about mental illnesses.

Another key aspect is the ability to self-host this project (it is open source), so you're in control of your data.

How we built it

To build this application, we used a variety of libraries and frameworks. For the front-end and user interface, we used HTML, the Bulma CSS framework along with other CSS, the templating language Jinja2, and JavaScript. For the back-end part of this application, we used Python and the Flask framework. The Flask-SQLAlchemy library was used with an sqlite database for development, and a PostgreSQL database for production. Furthermore, we used various Python libraries such as NLTK and pytesseract to implement the ML and NLP that we used for analyzing a user’s diary entries. Finally, we used OpenCV, a Python library for image processing, to remove noise and make the images fit for OCR.

Challenges we ran into

We faced a variety of challenges, especially because we experimented with many new concepts during this project. For example, we had to do a considerable amount of research into machine learning, natural language processing, and NLTK. Because of the time frame we were given, it was challenging to learn everything necessary and use that information to carry out our visions. One particularly difficult task was implementing the OCR feature, since we had to remove noise from the image using OpenCV, an image processing library in Python. We also faced some challenges in building the user interface, especially because we had to display many different data types dynamically through Jinja in places like the summary and dashboard page. Finally, we had a very grand vision for the web application, but, unfortunately, the time frame limited our ideas and constrained the extent to which we could carry them out.

Accomplishments that we're proud of

Building a project of this magnitude in just a day was a feat none of us had ever attempted, but we were proud of the result we created in the given time frame. We were able to build a fully-functioning web app with an extensive backend and stunning frontend. We’re also proud of our ability to implement new tools we didn’t have experience with. For example, we implemented OCR using the pytesseract and OpenCV libraries, which allows users to upload images of their hand-written diary entries and scans them to extract text. We were also able to implement machine learning and natural language processing using the NLTK library in order to analyze the users’ diary entries and determine their general mood. As a group, we’re proud of our ability to create a fully functional site that has the potential to do good in our community and make a difference in others’ lives.

What we learned

Creating this web app pushed our limits and required us to learn how to integrate new languages and tools. We learned more about the functionality and implementation of natural language processing and machine learning. We’d previously had knowledge on Bulma, Flask, Jinja, databases, and forms, but the project pushed our limits and required more of us, allowing us to further build our knowledge and strength in these tools. We feel we’ve come out of it as stronger web developers in both back-end and UI implementation. Additionally, implementing the OCR using the pytesseract and OpenCV library was something new to us, and proved to be a challenge that we were eventually able to overcome and learn from.

What's next for You.

Ideally, a modification that could be applied given more time would be personal trackers. In this, users would be given the opportunity to add their own trackers for things such as sleep, finances, fitness, etc., where they could document these aspects. This could encourage them to do these activities for their logs, and help them see patterns in how they approach them, providing the opportunity to alter unhealthy habits. We could also specifically recommend resources for users based on the mood they enter or the average mood for the month, providing them with a direct link to somewhere they can get help and support. We could also add a reminders portion that reminds users of their goals so they are more consistently dedicated to them. It could also provide daily reminders for things such as taking medication. Lastly, the site could be funded through partnerships with other companies, such as the Trevor Project and other mental health advocates, and all profits could go towards mental health support channels.

Share this project: