Trackmymoodfor.me is a database driven website developed through the scrum team framework. As product owner,
I was in charge of bringing the ideas of the project to life and
leading the vision in collaboration with the scrum master. The goal was to create an application where users
can log their moods while studying and receive
feedback and analytics based on their data.
The image below shows the main design for the website. The home page a user is able to create subjects
which can be utlized for their mood entries for analysis. These subjects would be
based off the courses or topics they are studying. The user can then proceed to begin as study session. This
is done by creating a mood entry, where they enter their current mood and energy levels,
with the subject and any possible notes. After studying, they can finish the entry by inputing their final
mood and energy level. After a collection of these entries, they can
move to the analytics page to retrieve statistical analysis and feedback to improve their sessions.
I was directly involved in the development of the main page and analytics page, with complete
implementation of the schedule. As I focused on the main table, I wanted
to ensure the user can have full control over viewing their data. This table allows them to filter and sort
their entries by subject, mood, and energy levels. They also have the ability to
further interact with the table through editing either the subject or notes. All other data is locked in as
this is time-based or mood-based data that should not be
changed to produce better insights on their feelings.
As I was involved in developing the database, it is important to focus on the design and implementation. As
this is a user-based experience, most of the database
revolves around the user. This is found with the user-account, which has a one to many relationship with many
of the aspects of the website. A singular user can make
multiple subjects, mood entries, schedule components, and earn badges. The initial concept for the project
focused only on subjects and mood entries. With bi-weekly meetings
with the shareholder, we were introduced new ideas and topics such as a schedule for time-based analysis in
studying. Also, gamification to enhance user interactivity. This meant the
design for the database had to be scalable and robust. As every aspect utilizes a user_id, this allowed the
scalability and deployment of the database to be flexible.
The design for the database ensures normalization and foreign keys to promote security. Thoughtful design
was put into place and testing made to ensure that the product is safe and secure to
minimize bugs and breakage. The back-end design uses Object-Relational Mapper (ORM) which maps the below
database design into C# for implementation in .NET and Blazor.
Utilizing these libraries with .NET also enhances security as it has implementation to protect against SQL
injection attacks to keep the database safe and secure. As noticed in the user_account, the
passwords are encrypted with a salt and pepper hashing approach to ensure further security. The project is
based on a tri-system appraoch with a front-end, back-end and shared service.
The front-end sends requests to the shared service which communications with the back-end. Using the (ORM)
system, these requests can communicate with the database to retrieve, add, remove, or edit data.
This website was the biggest development project I have had so far in my career. The biggest takeaway I have
gained was utilzing scrum and agile methodologies to produce a
product. My team had daily meetings with weekly retrospectives and planning meetings. I learned a lot about
arranging a team and bringing the project vision to life through
assigning tasks, helping less-experienced team members, and ensuring project flow. Whenever the project was at
a standstill or began to slow, we discussed ways to improve our approach
to weekly sprints.
Developmental skills, I greatly improved in everything back-end. As I was involved with every aspect of
the website, there was a lot that I have not experienced before. This involved
the communication between the database to the backend, as well as how that was influenced by the front-end
design and the tri-service communication with front-end, back-end, and shared service.
As I was directly responsible to developing the database, I learned how the database directly relates to the
back-end design. This was also my first project utilizing the full potential of github,
so I learned a lot about handling pull requests, reviews, and having more dynamic collaboration with
teammates.
This project also offered an opportunity to not only develop a full interactable database, but also work
with data and produce analytics. Through brainstorming with the team, we discussed rather than overloading
the user with data and graphs, we had high focus on user experience. We discussed what few graphs would be
most beneficial for the user to view. These involved their mood over time per subject, hours spent per
subject,
and a mood-trend graph. This trend graph would take the difference before and after sessions for a user's mood
or energy per subject, and calculate whether they tend to feel
better or worse after studying certain topics.
Lastly, this was my first fully implemented deployed website. There was a lot to learn, but I gained many
skills in website design and development. This involved html, css, and
how these interact with C# through .NET. We created a mascot, Kapi the Moodybara, which is a capybara who
changes color based on her mood. We discussed ways to implement her throughout the website.
Skills Learned: