MoodPraiser - Fun habit tracker to keep everyone accountable
Acquire a habit through the power of praise

Search for a command to run...
Acquire a habit through the power of praise

Thanks Andrew Baisden! Thanks for sharing about Daylio ๐
Loved the idea! Amazing project!โจโจ
Started using this app. Going to use it regularly now!
This is an amazing article. I canโt believe that such a great article can be written in such a short time. Itโs awesome. โค๏ธ
Thanks Michael Hsu! I can't believe it either! It must be the magic of the hackathon. You should give it a try!
The article appeared in my Hashnode feed and it didn't disappoint! ๐ฅ
Really great and useful application! ๐
By the way, what do you think about Chakra UI? ๐
Hi Catalin Pit! Glad that you enjoyed it! I think Chakra UI accelerates UI development! I feel it has gathered the pros of tailwindcss and Material UI together.
Thanks Tapas Adhikary for trying it out!
Hi Candy, just discovered this project. I know it's kinda late but it's an amazing project and I absolutely love it!
Thanks Victoria Lo! Glad that you liked it. ๐
This seems like a great idea! Nice job Candy Tsai.
I'm about to check it :)
Thanks Eleftheria Batsou, hope youโll find it fun!
Thanks Jade Suntoro ๅฎ็็พ! Yeah I should add notification features to the roadmap!
It's Candy Again! Hello Hashnoders! After having so much fun building MoodPraiser for the #harperdbhackathon, and here I am again for the #auth0hackathon! Big thanks to Hashnode for hosting these events and this time 'round I even persuaded friends t...
Looking back, this might be a dumb question, but thatโs what blog notes are for ๐คฃ tl;dr &: Used as an operator to get the address of a variable * in Type: Used to define the type as a pointer (e.g., *int) * in Expression: Used as an operator to d...

It's Candy Again! Hello Hashnoders! After having so much fun building MoodPraiser for the #harperdbhackathon, and here I am again for the #auth0hackathon! Big thanks to Hashnode for hosting these events and this time 'round I even persuaded friends t...

What is a Lightning Talk? Stealing this from Wikipedia: Lightning talks are designed to be short presentations between five and ten minutes long, but are usually capped at five minutes. Lightning talks usually accept sign-ups after the conference h...

Lately, I've been setting up my new Mac and thought that it would be a good chance to log down what I needed to install for future reference. This post will be updated from time to time as I install back all the apps that I use daily. Must-to-have ap...

Here comes Piglet!

On this page
I'm Candy. Super excited to share MoodPraiser with y'all! Huge thanks to the #harperdbhackathon to keep me motivated throughout the month. It definitely wasn't easy to pick up the keyboard after work every day.
MoodPraiser is a simple, useful and fun habit tracker that keeps you and your friends accountable for each other by giving praises y'all deserve to reach your goal!
Guess what? This wasn't intended to be a habit tracker in the first place! The project name gives itself away as a "mood" praiser. Yup! It was supposed to be a mood tracker. What happened?
I've always wanted to build a super simple mood tracker so I came up with the name during early June. Then I left the name and the project there to hang until I realized I wouldn't be able to complete it in time because I wasn't working on it. ๐
I believe a lot of people are like me:
Let's call this the deadly "start a new habit" loop.
In order to escape the loop, MoodPraiser became a habit tracker with me being the first user. Here I am, participating in a hackathon with a project to make sure I complete the hackathon. How hilarious! ๐
To make things more fun, a praise feature was implemented so that we can receive praises from friends and families to keep ourselves going. Also, it's a good chance to get them to signup and get themselves out of the loop!
That's the story of how MoodPraiser turned into a habit tracker to keep everyone out of the deadly "start a new habit" loop!



Yay the mood part is still alive, tied together with the habit tracking!

Step 1: Copy the praiser link

Step 2: Share it with your friends
Step 3: Praise your friends back

After having the project idea in mind with some basic features, it's time for implementation! It's my first time releasing a side project to the public with the front end and back end all built on my own.
HarperDB exposes a REST API along with example code and a Postman collection to start out, it was super easy to follow. I didn't find the need to use a wrapper library. CRUD operations can be called easily without much hassle.
Below is the how I structured the database to save all the data I needed for MoodPraiser to work.

One thing that I'd like to mention was when I was altered the database schema, such as removing columns from a table, sometimes I was unable to delete rows in the database after that. Due to the project hasn't been released yet, my tentative solution was reconstructing the table.
I'm awful with SQL queries and have always wanted to practice it in a real project instead of following tutorials. Truly love the HarperDB Studio since we can try out queries directly from the GUI. Although complicated queries are not supported, but it fulfills most of my use cases in the project.

Currently going live with absolutely 0 tests written. Here's what I'm relying on currently:
Will be planning to add tests and run CI with GitHub actions in the future.
Anyone and everyone! You can use it by yourself and praise yourself, or let your friends join in the fun as well!
Application data such as user profiles, habits and praises are saved in HarperDB. Passwords goes through Google if you choose Google login and Auth0 if you register an account with them. MoodPraiser don't have access to all passwords.
Feel free to ask about anything in the comments below!
MoodPraiser is an open source project so you're more than welcome to contribute ideas, report issues or send in pull requests!
Kudos for reading this far! Love to know what you think about the article and the project.
This is also is my first post on Hashnode! Extremely thrilled that I joined in time to participate in the hackathon.
Shameless plug: Moodpraiser