Tribe Tracker
Social habit challenges with a grounded AI coach
At a glance
Role
Solo design + engineering, app and backend
Stack
- React Native + Expo
- TypeScript
- Redux Toolkit
- Supabase Realtime
- Vercel serverless + Cron
- OpenAI GPT-4o-mini
Overview
Tribe Tracker is a React Native app where you create habit challenges, invite your people, and compete on points, streaks, and leaderboards, with an AI coach that reads your actual check-in data and tells you what to fix this week. Habit apps are easy; habit apps that work offline, sync a group leaderboard, run real-time chat, and coach you honestly are not.
Coaching that reads the numbers
The coaching pipeline is the part I'm proudest of. The backend assembles each user's last 14 days of per-habit check-ins, streak math, and leaderboard position into a structured prompt; GPT-4o-mini returns a JSON synopsis that is schema-validated against the input (IDs must match; malformed items are dropped). The result is specific: which habit is slipping, whether the leaderboard gap is mathematically closable in the days remaining, and one concrete ask for the week.
If the model is unavailable, a deterministic stats-based fallback produces the same shape from the raw numbers, so coaching never silently fails. A Vercel Cron job posts an AI-written Monday recap into each active challenge's group chat.
Offline-first with a social layer
Every action applies optimistically through Redux and persists to AsyncStorage immediately; a custom sync middleware pushes changes in the background, queues failures, and retries with exponential backoff. On top of that: real-time group chat per challenge (Supabase postgres_changes with a polling fallback), DMs with a request/accept flow, typing indicators, read receipts, and deep-link invites.
Design details
- Light/dark/system theming with an animated tab-bar indicator
- Badges and level progression tuned to reward consistency
- Onboarding wizard that ranks public challenges against stated goals
- Local push for reminders and streak warnings; email via Supabase Edge Functions