top of page

Final Project: Habit Tracker


THE IDEA

Tracking habits is crucial when you want to establish new ones. It takes up to three months of consistent repetition until it becomes engrained. Seeing the progress motivates you and helps you stick to them. This app allows you to keep a visual streak of completed days and see the development of your completion rates week over week.

FEATURES

  • Manage habits: create unlimited habits, edit/delete existing ones

  • View habit streaks in a eekly and monthly calendar

  • See status in a dashboard with weekly completion rates

  • Check off habits completed for each day

  • Filtering for habits by category, persistent filters

  • Fuzzy Search

  • Random gif of the moment

TECHNOLOGY

  • Web Framework: Rails

  • Front End: React

  • Database: Postgres

  • Deployment: Heroku

  • State Management: Redux

  • AJAX Handler: redux-thunk

  • Frontend design: Semantic

  • Data visualization: Recharts

  • Hints: Intro.js

What did you learn?

1./ Even simple features can take much longer than expected. Especially as a budding developer we have little experience with production time frames. Building a simple functioning CRUD app took me so much longer than planned. It makes sense that our very first time to draft the timeline for an app would not work out as planned. Firstly, we do not have the experience to correctly estimate production of features, and secondly we will be encountering mostly errors that we are solving for the very first time.

Which leads me to the next point.

2./ Accepting one's own pace:

What I had imagined to be done at the end of the day never met my expectations. It was painful to realize what can be done in 24 hours. So I had to accept that my initial plan would not work out as imagined and scale down my MVP. Not only once or twice, but multiple times. The app's functionalities were reduced every single day until there was a bare skeleton. Once this was done I started to build on top of that and add features one by one. Accepting and moving on is good.

What was the most difficult part?

Dealing with frustration: Debugging for hours and not seeing any progress

What was the funnest part?

1./ Building a calendar from scratch: There was no calendar library that was flexible enough to meet my customization needs. So I built my own calendar with plain old Javascript logic. It took a while to work out the kinks, but when it worked, it felt amazing.

2./ Implementing random Gifs: a minor feature that is just silly can be so much fun and motivating to work on!

3./ Taking on the challenge of Redux:

Redux was a freshly taught topic just right before our project. And most of us felt quite wonky with it, it would take more than a couple of days to wrap your head around. We had the choice to either implement it or not. I chose to use redux in my final project, not because I thought my app would need it but because I wanted to solidify my knowledge. Although it made setting up the app more time consuming I felt very proud when Redux was integrated and I was understanding it better and better.

How would version 2.0 look like?

  • Add user authorization and authentication with jwt

  • Pagination

  • Categories can be managed by user (delete and edit)

  • New schedules types: Fixed (e.g. "I want to complete this habit every Monday and Friday") and repeating ("I want to complete this habit every other day/every week once")

  • Add 404 page

  • User can add other user as friends who are going to hold you accountable

  • User chat

  • Admin flow

You Might Also Like:
bottom of page