COMPETING FOR: "Staying Sane at Home"
The inspiration for this project came from the concept of a journal tracker, in which one draws a calendar along with a set of goals and checks whether the goal was accomplished or not day by day, like so:
Although this is a very good and creative way of keeping up with your goals, it takes a lot of work to setup and it can be frustrating if you have poor drawing skills like us.
What it does
With the journal tracker in mind, we decided to create a web application that allows for habit tracking without the extra step of having to draw it on An often times overpriced journal.
We also took the world’s current isolation state into account and made it so not only can you create your own goals (challenges), but you can also join in on challenges created by other people and improve alongside them. Our web application contains a score system (Roovies) that increases every time a goal is accomplished, which is then used for ranking people participating on the same challenge; we figured this would be a good way to further encourage the user on their improvement journey, as well as create a community-like environment where every participant is striving to reach the same goal.
How we built it
Our application can be divided in three parts: 1) An C# ASP.NET back-end where we used technologies such as Entity Framework Core and LINQ to interact with; 2) Our PostgreSQL DB that was setup with ElephantSQL on AWS; and 3) Our ReactJS front-end.
Utilising a model-view-controller architecture, our front-end makes requests to the back-end which will then interact with the DB. We also configured CI/CD pipelines for our application on Azure DevOps to be deployed to an Azure App Service under a free-license.
Challenges we ran into
Our team had some trouble setting up the CI/CD pipeline for the project. We were initially using Google Cloud, but ultimately changed to using the Azure Portal because of the quick setup they provide for ASP.NET applications.
Accomplishments that we are proud of
What we learned
In this project we learned how to setup and manage a SQL database and a CI/CD pipeline. We also learned some embellishment techniques with react bootstrap, such as creating a limited array of colours for an unlimited amount of cards, a static backdrop modal, and so on.
What's next for improov
Next, we plan to create a calendar display for better goal visualisation, as well as implement a data visualisation platform that provides more insight on the user’s improvement based on their goal completion, such as percent improvement and cumulative/daily progress. We also plan to enhance the community experience offered by the web app, such as implementing chat rooms in each joined challenge.