A social app without a forever feed
HomePlate
A friend-only availability signal for saying available, maybe, or busy, adding a little context, and letting the post expire instead of building a permanent performance of your life.
- Client
- SwiftUI iPhone app
- Identity
- Firebase Authentication and user profiles
- Realtime data
- Cloud Firestore listeners, friendships, posts, and waves
- Delivery
- Firebase Cloud Functions and push notifications
The project
What it does
HomePlate is designed around a much smaller social question: are your actual friends free right now? A person posts available, maybe, or busy, optionally adds a note, activity, or location, and shares it only across accepted friendships. The signal expires rather than accumulating into a public history.
Firebase Authentication owns account identity, while Firestore holds profiles, friend relationships, availability posts, and waves. Swift view models maintain live listeners and translate that shared state into the feed. Friend codes and QR codes make the graph explicit, and Cloud Functions handle push delivery without turning the app into an open follower network.
Built around
Product principles
Small, current, useful
Availability answers a present-tense question and expires when it stops being true.
Friends by explicit code
Connections are formed through a friend code or QR flow rather than public discovery and follower counts.
No permanent performance
The product avoids a global feed and does not ask people to build an archive for engagement.
Lightweight contact
Waves and focused push notifications provide a small opening without manufacturing constant conversation.
System architecture
How the system moves
The iOS client is reactive to two forms of identity: the authenticated Firebase user and the accepted friendship graph. Firestore listeners project only relevant current posts into the feed, and server-side functions deliver bounded notifications.
Status to trusted friends
-
01 · Person
Sign in, friend code, status
The user establishes identity, accepts specific friends, and creates a time-bounded post.
-
02 · Client
SwiftUI and view models
Auth, feed, friend, post, wave, and profile state are presented as focused flows.
-
03 · Services
Auth and Firestore boundary
Typed services validate models, listener scope, friendship state, and post visibility.
-
04 · Firebase
Auth, Firestore, and rules
Profiles, friendships, current posts, and waves persist in realtime under access rules.
-
05 · Delivery
Cloud Functions and push
Relevant friend activity becomes a targeted notification and returns people to the live state.
The social boundary is mutual friendship, not public reach. Expiration is part of the product model, so old availability does not become an accidental location history.
Keep exploring