Bond app screenshot
← Back to Projects

Bond — Group Habit Tracker

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.

Flutter Dart Firebase GitHub ↗ App Store ↗
Habit Bank A curated list of habit ideas to help you get started in Bond.
Download ↓

Overview

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 💕

moment moment

Project Goals

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.

Tech Stack

  • Flutter & Dart — Cross-platform mobile framework for a consistent iOS-first experience.
  • Firebase Firestore — Real-time NoSQL database syncing check-ins across all Room members instantly.
  • Firebase Auth — Handles account creation, sign-in, and session management.
  • Firebase Cloud Messaging — Push notifications for streak reminders and group activity.

UI-UX

A stage I love: UI/UXing

Features

Rooms System

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.

Daily - Weekly Check-ins & Streaks

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.

Real-time Sync

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.

New Summer'26 Updates ☀️ - July'26

🌻 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!

Challenges

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.

Learning and Takeaways

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 🥳

moment moment

💕 Shout out to my amazing friends and collegues for sharing the joy with me 💕