Bond turns your daily goals into shared experiences inside Rooms, where you and your friends, family, or teammates support each other, check in, and keep streaks alive together.
We keep streaks for so many daily things… but why not use streaks to actually build better habits and better versions of ourselves? After learning Flutter for a while, I decided to move beyond practice projects and build something real, simple, and impactful. That’s how Bond was born — a social habit tracking app that helps you stay consistent by building habits together with your friends or family. Instead of working alone, you create rooms, track daily streaks, motivate each other, and stay accountable as a group 🔥
The app is live on the App Store and has been used by real groups of friends and study circles. It was my first independently shipped iOS app — from design to deployment, and now continuously maintaining the app, listening to user feedback and iterating on the experience.
Moments of building 💕
Habit trackers are everywhere, but nearly all of them are solo experiences. Bond was built to test one hypothesis: if your friends can see whether you showed up today, are you more likely to show up? The goal was to create the smallest, most friction-free version of that social layer — no complex feeds, no social pressure, just a quiet group that keeps each other honest.
A stage I love: UI/UXing
The core unit of Bond is a Room — a private space you create and invite others into. Each Room has its own set of habits that members track together. You can be in multiple Rooms at once, keeping your fitness group separate from your study group, for example.
Every day or selected days of the week, members tap to mark a habit complete. Bond calculates and displays each person's current streak, building a friendly competitive layer without needing to add any explicit gamification. Seeing a friend on a 30-day streak is motivation enough.
Powered by Firestore's real-time listeners, check-ins appear for all Room members the moment they happen — no refresh needed. This instant feedback loop is what makes the social accountability feel alive rather than like just another database entry.
🌻 Weekly and custom-day habit schedules: Rooms are no longer limited to daily habits!
🌻 Streak restore: Lost your room streak? Recover a lost streak with 2 free restores, then via in-app purchase
🌻 Home screen widgets : See your room's habits and streak at a glance
🌻 Arabic language support : Full app localization in Arabic
🌻 Google Sign-In: Sign up and log in with your Google account
🌻 iPad Version: You can now download Bond on your iPad!
The trickiest part was designing the Firestore data model to keep read costs manageable while still enabling real-time group updates. Early versions queried too broadly, causing slow loads on larger rooms. Restructuring the collections around Rooms (rather than users) fixed both the performance and the cost.
Getting through Apple's App Store review process as an independent developer was also a learning curve — the first submission was rejected over push notification entitlement language, which required reworking the privacy description copy before resubmitting.
Bond was the first project where I owned every layer — design, frontend, backend, and deployment. The biggest lesson was how much the data model shapes the user experience. Getting the Firestore schema right early would have saved several refactoring sessions.
Shipping to the App Store also taught me that the last 10% of a project (store metadata, screenshots, privacy policy, review compliance) takes as long as the first 90%. Real shipping is a different skill from building.
Celebration of first launch 🥳
💕 Shout out to my amazing friends and collegues for sharing the joy with me 💕