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