← Back to list

Turning Productivity into a Social Quest

A few weeks ago, I found myself in a deep productivity slump. I had some goals in mind, but I did not feel like doing them. So, like any…

Pratik Limbekar · 2026-05-09 06:25 · 11 claps · 5.9 min read
#habit-tracking #habit-tracking-apps #web-development #software-development #side-project
Open on Medium ↗
Wiki topics: 🌐 · Web Development 🔒 · Cybersecurity 🚀 · Self Improvement ⏱️ · Productivity

Turning Productivity into a Social Quest

A few weeks ago, I found myself in a deep productivity slump. I had some goals in mind, but I did not feel like doing them. So, like any developer, my first instinct was to find a tool to fix it. I scoured the web and downloaded the top-rated habit-tracking apps, meticulously set my goals, and… stopped attending them after three days. Anticlimactic, I know.

The problem wasn’t the data tracking or the lack of features; it was the distinctive lack of compulsion and accountability. These apps felt like private spreadsheets with a good UI — dry, clinical, and lonely. There was no one to impress, no one to let down, and the “reward” for consistency was a number on a screen that only I could see. The responsibility and accountability factor was zero. When you are the only person who knows you skipped your morning run, it is incredibly easy to negotiate with yourself. “I’ll just do double tomorrow,” you say, but tomorrow never comes.

I realized that for a habit tracker to work for someone with my kind of personality, it needed two things that the apps I used lacked: Social Accountability and Gamification. Emphasis on the Social Accountability.

And so, I built Habbit.

The goal was to create a productivity app where consistency feels like winning a quest and skipping a day feels like a missed opportunity in a larger, shared game. Some key points that distinguish Habbit from other apps:

  • Social Accountability: The app transforms habit tracking from a private chore into a shared social experience where your consistency is visible to your inner circle.
  • Instant Gratification: A points and leveling system rewards micro-actions immediately, triggering the dopamine hit needed for retention.
  • Platform Ubiquity: Ensures the app is “one-tap” away. One of the important parts of why I wanted Habbit to be installable on smartphones and accessible through the web.

Habbit solves the previously mentioned problems and shortcomings by introducing Social Pressure, you know, the healthy kind. By joining Circles and participating in Challenges your progress is broadcast to your peers. The psychological shift from tracking for myself to performing for the team is the secret ingredient to stay productive. When your friend “cheers” your 7-day water-drinking streak, or you get a notification that a rival has overtaken you in a DSA challenge, the compulsion to stay consistent becomes real (speaking from experience).

About the design: Using AI-assisted design prompts, I developed a unique Sketchbook aesthetic. Every card, button, and input field in the app is wrapped in a hand-drawn, irregular border.

Figure: Home page of the Habbit Application

Figure: Home page of the Habbit Application

  • I tried to introduce a tactile feel. The use of paper-like textures and subtle shadows gives the UI a physical presence.

“We aren’t just tracking data; we are drawing the blueprints for our future selves”. This quote that I just made up reminds the user that their habits are a work in progress, a sketch that they are refining every single day.

Which is why the name Habbit — inspired from the Hobbits from the Lord of the Rings. Similar to how the small hobbits of the shire were able to conquer Sauron, your small consistent habits will win you the world.

After completing the core features of the web app, I faced a dilemma. I knew Habbit had to be a mobile experience. Habit logging needs to happen at the gym, in the kitchen, or right before bed, places where a laptop — or Google Chrome, for that matter — is rarely opened.

I started building a React Native version to mirror the website, but as a solo developer, I quickly hit a wall. Maintaining two completely separate codebases while rapidly iterating on features was exhausting. Every change required double the testing and double the deployment effort.

Then I discovered PWAs. A Progressive Web App is a website built with web technologies that offer a native app-like experience. These are installable, work offline, and load instantly. It was the perfect middle ground for a project of this scale. By converting the React web app into a PWA, I achieved:

  • A Single Source of Truth. One codebase to rule them all (hello Sauron). Any fix pushed to the web is instantly available on mobile. A very happy me indeed.
  • Home Screen Installation: Using a manifest.json and Service Workers, users can (technically) install Habbit directly from the browser to their homescreen. It gets a native icon, a splash screen, and runs without browser bars, providing that “native app” feel.
  • Notifications: By integrating Firebase Cloud Messaging (FCM), I could still send native-style push notifications. Whether it’s a Streak Protection warning at 10:00 PM or an alert that someone has overtaken your rank on a leaderboard, the app stays top of mind for the user.

Now onto some more technical aspects: The app is built on the MERN Stack (MongoDB, Express, React, Node.js), but it goes far beyond a simple CRUD application.

  • Socket.io: This is the heartbeat of the social features. The app uses WebSockets to create a live connection between users. When a friend in your “Circle” completes a habit, you see a notification and the update in real-time. Websockets have gathered a lot of interest from my side, and while their use isn’t extensive here, I have found them essential for some of my other projects as well.
  • Firebase Admin SDK: Powering the notification engine, it ensures that users are brought back into the app at critical moments. One of the crucial aspects of the app use-case were the notifications, and I was able to handle them efficiently using Firebase.
  • Atomic MongoDB Operations: Streak calculations and point awarding are handled using atomic operators like $inc and $push. This prevents data corruption during high-concurrency events (like a Quest ending where hundreds of users are checking in simultaneously). This is something I learnt on the fly about, tackling race conditions while toggling habits as completed.
  • Timezone-Aware Date Management: A major focus of my recent development. I stopped relying on server-side Date objects and implemented a strategy that uses Intl.DateTimeFormat combined with the user’s stored timezone to ensure that Today is calculated correctly for everyone around the world.

So, how does the app work?

  • Habits: These are your recurring daily scripts. Think “Meditation,” “Coding,” or “Reading.”
  • Tasks: One-off items that need to be done. Unlike habits, these don’t have streaks but still award points.
  • Circles: These are your private groups. You can invite friends to a Circle to share a private activity feed and compete on a local leaderboard.
  • Challenges: Time-limited events with specific goals (e.g., “7 Days of Early Rising”). These have circle-based leaderboards and high-point rewards for the top finishers.
  • Daily Points: A metric of your effort for the current day. This resets at your local midnight, giving you a fresh start every day.
  • Total Points & Levels: As you earn points, you level up.

Some big challenges I faced during the development of this project:

  • Early in testing, I found that users in different timezones were seeing their progress reset at the wrong time (usually midnight UTC, morning 5:30 here). This was a deal-breaker for a habit app. I overcame this by refactoring the entire PointService to accept a userTimezone parameter, ensuring that every calculation of Today is localized to the user’s physical location, as also mentioned above.
  • Real-Time State Synchronization: In a complex UI like the Dashboard, ensuring that toggling a habit in a Challenges view also updates the main Habits list and the Daily Progress bar was a major hurdle. I implemented a loadData pattern and custom event listeners to ensure the entire frontend remained a consistent reflection of the backend state without requiring manual page refreshes.

Building Habbit has been a lesson in “If it doesn’t exist the way you wanted it to, make it yourself. Why else are you becoming an engineer?” By focusing on the psychological triggers of social accountability and gamified reward systems, I’ve created a tool that I actually want to use every day.

The app is currently in the ‘Friends Testing Phase’, where I ask my friends to use the app for me. I am also refining the social feed interactions and fine-tuning the notification frequency to ensure the app is helpful, not annoying. The journey from a frustrated, unproductive user to the creator of a productivity-driving app has been incredibly rewarding and educational, and ofcourse — productive. I can’t wait to see how the first real user base builds their own Habbit circles and transforms their lives, one sketch at a time.

If you want to try Habbit, reach out — I’d love to add you to a circle. Kindly connect with me on LinkedIn!


메타데이터
post_id
ef49abbea1f4
slug
turning-productivity-into-a-social-quest-ef49abbea1f4
url
https://medium.com/@ipratiklimbekar/turning-productivity-into-a-social-quest-ef49abbea1f4
canonical_url
https://medium.com/@ipratiklimbekar/turning-productivity-into-a-social-quest-ef49abbea1f4
author_url
https://medium.com/@ipratiklimbekar
status
ok
fetched_at
2026-06-09 15:37:30