A full-stack mobile social app where friends send anonymous compliments and try to guess who sent them. Built with React Native, Expo, and Supabase.
- Anonymous Compliments - Send compliments to friends without revealing your identity
- Guessing Game - Recipients get 3 guesses to identify the sender
- Hints System - Spend tokens for hints (first letter, join date, level)
- Full Reveal - Use tokens to instantly reveal the sender
- Friends System - Add friends via username, QR code, or shareable link
- Friend Circles - Create groups for targeted compliment sending
- Weekly Leaderboard - Compete for top spots with category winners
- User Profiles - Levels, badges, streaks, and stats
- Daily Drops - Limited compliments refresh daily (encourages daily use)
- Streak System - Maintain streaks by sending compliments daily
- Streak Freezes - Purchase with tokens to protect your streak
- Badge Collection - Unlock 20+ badges for achievements
- Token Economy - Earn tokens through activity, spend on features
- Secret Admirer - Send custom anonymous messages (3 tokens)
- Secret Admirer Chat - Back-and-forth anonymous messaging with auto-reveal after 6 messages
- In-App Purchases - Buy token packs (ready for App Store)
- Push Notifications - New compliments, friend requests, streak warnings
- Daily Drop Reminders - Morning notification when new drops are available
- Podium Notifications - Alert when you make the weekly top 3
- React Native with Expo SDK 54
- Expo Router - File-based navigation
- TypeScript - Full type safety
- Moti - Fluid animations
- Expo Haptics - Tactile feedback
- Supabase - PostgreSQL database
- Row Level Security - Secure data access policies
- Real-time Subscriptions - Live updates for compliments & friends
- Edge Functions - Server-side logic (RPC functions)
- Anonymous data handling - Sender info hidden until revealed
- Rate limiting - Prevent spam and abuse
- Optimistic UI updates - Instant feedback
- Offline-friendly - Graceful degradation
- Real-time sync - Supabase subscriptions
oomf/
├── app/ # Expo Router screens
│ ├── (auth)/ # Authentication flow
│ ├── (tabs)/ # Main tab navigation
│ │ ├── index.tsx # Home - received compliments
│ │ ├── send.tsx # Send compliments
│ │ ├── friends.tsx # Friends management
│ │ └── profile.tsx # User profile & settings
│ ├── compliment/[id] # Compliment detail & guessing
│ ├── user/[username] # User profiles
│ ├── leaderboard/ # Weekly rankings
│ ├── shop/ # Token purchases (IAP)
│ └── secret-admirer/ # Anonymous chat
├── components/
│ └── ui/ # Reusable UI components
├── hooks/ # Custom React hooks
│ ├── useCompliments.ts # Compliment CRUD & guessing
│ ├── useFriends.ts # Friend management
│ ├── useTokens.ts # Token economy
│ ├── useStreaks.ts # Streak tracking
│ ├── useLeaderboard.ts # Weekly rankings
│ └── ...
├── lib/
│ ├── supabase.ts # Database client
│ ├── notifications.ts # Push notification handling
│ └── constants.ts # Theme & config
├── store/
│ └── authStore.ts # Zustand auth state
└── supabase/
└── migrations/ # 22 SQL migration files
users- User profiles with stats, streaks, tokenscompliments- Anonymous compliments with guessing statetemplates- Compliment templates by categoryfriendships- Friend connections & requestsfriend_circles- Custom friend groups
badges- Achievement definitionsuser_badges- Earned badgestoken_purchases- IAP transaction recordssecret_admirer_chats- Anonymous conversationsuser_podium_status- Leaderboard tracking
| Home | Send | Friends | Profile |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Guessing Game | Leaderboard | Secret Admirer |
|---|---|---|
![]() |
![]() |
![]() |
Coming soon - Demo video will be added here
- Node.js 18+
- Expo CLI
- Supabase account
# Clone the repo
git clone https://github.com/YOUR_USERNAME/oomf.git
cd oomf
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Add your Supabase URL and anon key
# Run the SQL migrations in Supabase SQL Editor
# (migrations are in supabase/migrations/)
# Start the app
npx expo startEXPO_PUBLIC_SUPABASE_URL=your_supabase_url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key- React Native mobile development with Expo
- PostgreSQL database design with Row Level Security
- Real-time data synchronization patterns
- Gamification systems (streaks, badges, leaderboards)
- Anonymous systems - hiding data while maintaining relationships
- In-App Purchases implementation
- Push notifications setup and handling
- Add photo compliments
- Group compliments (send to multiple friends)
- Compliment reactions with animations
- Dark/light theme toggle
- Analytics dashboard
MIT License - feel free to use this as inspiration for your own projects!
Built with React Native, Expo, and Supabase






