Spencer Saldana
← all projects

Mobile · React Native · Firebase· in progress

The Helmet Signal

A mobile group-rallying app. Light a beacon, set a minimum headcount and a timer, and the clan responds in real time. Medieval-tactical aesthetic on top of modern serverless infra. Currently in security review for the app stores.

The Helmet Signal: beacon active, awaiting response
React NativeExpo RouterFirebase AuthFirestoreCloud FunctionsFCMZustand

What it is

Users belong to clans of up to 50 members. Any member can light a signal: a short message, a minimum number of yes-responses needed, a maximum cap, and a timer. The whole clan gets a push notification. People tap Yes or No. The signal succeeds the moment the minimum is hit and fails the moment the timer expires without it.

That is the entire mechanic. The rest is the UX scaffolding around making it feel fast, social, and worth opening when the push hits.

Where the idea came from

About ten years ago, OpenAI was training a system that learned to win Dota 2 by getting good at the coordination mechanics. Five agents pinging the map and rallying to objectives faster than humans could. I was watching that and thinking about how much of what we ping each other for in real life looks the same: pickup basketball, weekend plans, the friend group trying to assemble for dinner on Friday at 7. We mostly do it badly. Group chats degrade into one person trying to herd cats over forty messages.

The Helmet Signal is the version of that with the mechanic borrowed from games: a clear ask, a quorum, a clock, and one tap to respond. I sketched it a decade ago and never built it. Now I have, mostly because the modern stack (Expo, Firebase, Zustand) made it a reasonable evening project rather than a six-month one.

The signal life cycle

A signal moves through four states, and each one has its own piece of artwork inside the app. The art is the brand: a stone-tower beacon when the signal is lit, a knight-on-shield when nothing is happening, and so on. The actual functional UI (clan list, signal creation, attendee feed) lives around these illustrations and will land in this write-up once the iOS build clears review and I can capture real screens.

Helmet Signal artwork: inactive
inactive
No signal lit. The clan is at rest.
Helmet Signal artwork: active · pending
active · pending
Beacon is lit. The clan can see it and is responding. Timer running.
Helmet Signal artwork: success
success
Minimum threshold met before the timer expired. Rally is on.
Helmet Signal artwork: failed
failed
Timer expired before the minimum was met. Signal goes dark.

Architecture

Standard small-team mobile stack:

  • React Native + Expo Router for the app shell and navigation.
  • Firebase Auth for email/password.
  • Firestore for real-time data: clans, signals, responses. Security rules enforce membership and rate limits.
  • Cloud Functions for the bits that have to be trusted: signal-state transitions, threshold detection, push notification fan-out, scheduled timer expiration.
  • Firebase Cloud Messaging for push.
  • Zustand for the client-side state that wraps the Firestore listeners.

Nothing exotic. The interesting engineering is in the small set of places where the real-time response counts have to be authoritative (which lives in a cloud function), and in the rules that prevent a single bad actor from flooding their clan with junk signals.

Status

MVP is functionally complete and is going through security review for the iOS and Android app stores. Real device screenshots (the functional UI, not the hero art) will land here once it ships. Public link follows.