Inspiration

Most mental-health apps wait for you to open them. But the moment you actually need help is usually the moment you have the least energy to ask for it — you go quiet, you stop reaching out, you disappear into your phone at 3am. We wanted to flip that: an app that notices the quiet before it becomes a crisis, and that can reach the people who love you when you can't reach out yourself.

The metaphor wrote itself. A lighthouse doesn't wait to be asked — it just keeps its light on. Bright when the water's calm, and a beam that cuts through the fog when it isn't.

What it does

Lighthouse is a mental-health early-warning and connection app. A sweeping lighthouse beam runs bright when your signals are healthy, dims and flickers as mood, sleep, screen time, and activity slide toward a crisis, and — when you can't reach out yourself — fires a beacon to your trusted circle with your live location.

It's eight high-fidelity, fully navigable screens:

  • The Beam (Home) — a live Signal Score, a 7-day sparkline, and an animated beam that visually reflects how you're doing.
  • Check-In (Pulse) — tap a face to log a daily mood and move your score.
  • Circle — invite responders by QR, link, or code; see their live status.
  • Beacon — a dignified 18-second grace window before your circle is alerted.
  • Responder View — what your circle sees: a concern banner, live map, a ready-to-send opener, and a pinned 988 line.
  • Silent SOS — a working calculator decoy; long-press a key to silently fire an SOS, for situations where opening a mental-health app isn't safe.
  • Offline / SMS — when the network's down, it texts a Google Maps location link to your circle via the native SMS composer.
  • Resources — one-tap 988 call/text, Crisis Text Line, therapist finder, and a guided breathing exercise.

The 988 Lifeline is never more than one tap away — it's pinned on Home, Beacon, Responder, SOS, and Resources.

How we built it

Lighthouse is built in React Native 0.81 + Expo SDK 54 with Expo Router for file-based navigation and a typed auth gate. The backend is Supabase — Postgres with Row-Level Security, Auth, Realtime channels, Storage, and Deno Edge Functions.

The brain behind the beam is the Signal Score, a weighted blend of mood check-ins, sleep, activity (pedometer + barometer fusion via expo-sensors), and screen time. Roughly:

$$ S = 100 \cdot \sum_{i} w_i \, x_i, \qquad \sum_i w_i = 1 $$

where each $x_i \in [0,1]$ is a normalized signal and $w_i$ its weight. As $S$ drops, the beam's brightness and sweep speed drop with it — the animation is the data.

Other pieces:

  • expo-location for foreground/background GPS, reverse-geocoding, and live location sharing during a beacon.
  • expo-notifications for Expo push tokens, scheduled daily reminders, Android channels, and tap-routing into the right screen.
  • expo-sms / expo-clipboard / expo-blur / expo-haptics for the offline fallback, invite flows, frosted tab bar, and tactile feedback.
  • A built-in offline demo mode, so every screen is fully navigable with zero backend — critical for demoing at a hackathon on flaky wifi.

Challenges we ran into

  • Making an animation honest. The beam can't just look pretty — its brightness, flicker, and sweep all had to be driven by real Signal Score data, so the visual never lies about how someone's doing.
  • The grace window. A beacon that fires instantly is terrifying and easy to trigger by accident. We landed on an 18-second countdown — long enough to cancel a false alarm, short enough to matter in a real one.
  • Designing for the worst moment. The Silent SOS decoy and offline SMS path forced us to think about users who can't safely open the app or have no signal. Those edge cases became some of the most important screens.
  • Realtime + RLS. Getting Supabase Realtime to push live location to only the right circle members, enforced at the database level, took real care.

Accomplishments that we're proud of

Eight production-quality screens that actually feel like a shipping app, a Signal Score that genuinely drives the UI, and a crisis surface that keeps 988 one tap away everywhere. And it all runs offline in demo mode.

What we learned

How to fuse multiple noisy signals into one trustworthy number, how to wire Supabase Realtime through Row-Level Security, and — most of all — that the hardest part of a mental-health tool isn't the tech. It's the design decisions around dignity, consent, and false alarms.

What's next for Lighthouse

Real on-device signal collection (sleep, screen time), a production EAS build with background location, responder-side push delivery, and a careful clinical review before any real-world pilot. Lighthouse is an early-warning and connection tool — not a diagnosis or a replacement for professional help.

Built With

Share this project:

Updates