Paperclip
Appearance
Paperclip
Minimal, monochrome, friends-only emoji presence app. No chat — just vibes.
iOS: github.com/ejfox/paperclip (SwiftUI) Android: github.com/ejfox/paperclip-android (Kotlin / Jetpack Compose) Backend: Supabase (cross-platform realtime sync)
Concept
You broadcast one emoji to your friends. That's it. No messages, no feeds, no algorithms. Your friends see your vibe. You see theirs. If someone's been 🔥 all week and suddenly goes 😴, you know to check in.
Features
- One emoji broadcast — set your current vibe
- Friends-only feed — add friends via invite codes
- Real-time sync — Supabase realtime across iOS and Android
- Dark monochrome UI — minimal, no visual noise
- Siri Shortcuts (iOS) — set emoji, add friend, watch friend, get status
- Coincidence detection — notifies when you and a friend pick the same emoji
- Home screen widgets — see friends' vibes without opening the app
- Lock screen widgets — iOS 17+ glanceable status
Architecture
| Layer | Tech |
|---|---|
| iOS | SwiftUI, Supabase Swift SDK, WidgetKit, App Intents |
| Android | Kotlin, Jetpack Compose, Supabase Kotlin SDK, Glance widgets |
| Backend | Supabase (Postgres, Realtime, Auth, Edge Functions) |
| Auth | Supabase anonymous auth (no email/password needed) |
Status
- iOS: TestFlight (build 4), App Store submission prepped
- Android: Feature parity with iOS achieved
- Landing page: getpaperclipped.com
Database
Two tables: users (id, display_name, emoji, emoji_updated_at, invite_code) and friends (user_a, user_b). Row-level security so users only see their own friends. Realtime enabled on users table for live emoji updates.
See Also
- Personal APIs — API patterns used across projects