We choose to create Serenity to create a safe space for people to express their thoughts and reflect, as well as work on, their overall mental state. To maintain a healthy mindset it is very important to express your thoughts and reflect on why you feel a certain way, and by creating an application dedicated to this that is accessible, portable, and has built-in features to give an overview of your mental state, we aimed to create a convenient resource for people to practice mindfulness on a daily basis and bring more attention to their mental wellbeing.
What it does
The user can create one or multiple daily journal entries in the app, and they will be saved and categorized by the date of creation. The app then analyzes the journal entries, assigns them a sentiment score based on the mood portrayed in the entries, and assigns a score to each day by taking the average of the individual entry scores. In the calendar view, the result of this sentiment analysis is displayed by coloring each day according to the score. The more red a day is, the worse the mood of the journal entries on that day, and the more green, the better the mood. The color fades from one color to the other, giving a nuanced view of what each day's mood was.
How we built it
To build this project, we used Flutter, Google Cloud, Google Cloud Natural Language API, and Flask.
Challenges we ran into
Some challenges we ran into included creating a database to connect with the backend of our application. We started off with the idea of transferring the storage of the journal entries from a local file to a database, but we found that it would have been too complicated and time-consuming within the short amount of time we had. We also had challenges when trying to set up a virtual machine to post the backend on Google Compute Engine. After much trial and error, it was simply not working and we decided to pivot to a new strategy. Our solution was to host the backend locally and access it through Ngrok. This was much more efficient and served the purpose we needed it for. The final challenge our group faced was the fact that two of our members were new to the Dart programming language. For this reason, the development process involved a lot of learning, watching tutorials, and trial and error.
Accomplishments that we're proud of
First of all, we are proud of completing the project we set out to make. The application runs smoothly and performs the tasks we intended. While it may not be perfect and does not implement every feature in the exact way we imagined, it is a great representation of our idea. We are also proud of having worked past the challenges and setbacks we experienced by thinking creatively and finding new solutions to these problems.
What we learned
Two of our team members were new to Flutter and app development before Hack Western, and through this project, they learned the basics of these topics. We also learned how to communicate with a Google Cloud API through our backend and incorporate this functionality into our application. Another major learning point for us was asynchronous programming. Flutter involves a lot of asynchronous programming, which none of us had a lot of experience with, and through this project we used this concept extensively. Finally, we learned a lot about the process of trial and error in app development, and how to get past hurdles by thinking creatively and finding effective solutions that suit our current needs.
What's next for Serenity
The next feature we would like to implement to improve Serenity would be to connect it to a database to store journal entries in rather than storing them locally in a file. This will allow user authentication, multiple device access, and it will allow Flutter to make full use of its ability to run on multiple platforms, making the application very accessible for those in need. We would also like to provide more resources to users within the app, such as links to mental health blogs, emergency hotlines, and information on available mental health services. Lastly, we would like to improve the app's UI/UX by adding more features for notes such as stickers, filters to sort through existing entries, an option for confidential sharing of notes with a personal therapist, and creating an overall more intuitive and aesthetic design for note previews.