Developer portfolio
HomePlate project icon

A social app without a forever feed

HomePlate

Friend Status In Development

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

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.

Product principles

01

Small, current, useful

Availability answers a present-tense question and expires when it stops being true.

02

Friends by explicit code

Connections are formed through a friend code or QR flow rather than public discovery and follower counts.

03

No permanent performance

The product avoids a global feed and does not ask people to build an archive for engagement.

04

Lightweight contact

Waves and focused push notifications provide a small opening without manufacturing constant conversation.

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

  1. 01 · Person

    Sign in, friend code, status

    The user establishes identity, accepts specific friends, and creates a time-bounded post.

  2. 02 · Client

    SwiftUI and view models

    Auth, feed, friend, post, wave, and profile state are presented as focused flows.

  3. 03 · Services

    Auth and Firestore boundary

    Typed services validate models, listener scope, friendship state, and post visibility.

  4. 04 · Firebase

    Auth, Firestore, and rules

    Profiles, friendships, current posts, and waves persist in realtime under access rules.

  5. 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.

More systems