Inspiration

Panic attacks affect over 300 million people worldwide. During an attack, your vision narrows, words won't come, and you can't explain what's happening. Current mental health apps fail because they require you to read, type, or follow instructions — the very things that become impossible during a crisis.

We asked ourselves: What if you didn't need words to reach out? What if someone's presence could be felt through your phone?

That question became Reso.

What it does

Reso is a two-way haptic connection between someone in panic and their trusted supporters.

How it works:

  1. User holds a glowing orb — no buttons, no text, just touch
  2. Trusted "anchors" receive an instant notification — "Someone needs you"
  3. Supporters tap their screen — creating ripples
  4. User feels every tap as a real vibration — physical presence through technology

No words needed. No explanations required. Just the comforting feeling that someone is there.

Additional features:

  • 🤖 AI Pacer — 4-7-8 breathing pattern via haptics if no supporter joins within 30 seconds
  • 🛡️ Safety Escalation — location sharing option after 5 minutes
  • 📊 Reflection Screen — post-session mood tracking
  • 🧠 AI Insights — optional pattern recognition powered by Gemini

How we built it

Frontend:

  • Kotlin with Jetpack Compose for a modern, declarative UI
  • Custom GlowOrb animation with dynamic color and breathing effects
  • RippleCanvas for intuitive touch-to-ripple visualization
  • Material 3 design system with a calming dark theme

Backend & Services:

  • Firebase Authentication (Email verification + Google Sign-In)
  • Firebase Realtime Database for instant touch event sync between devices
  • Firebase Cloud Messaging for push notifications
  • Firebase AI (Gemini) for optional pattern insights
  • Firebase App Check for security

Special Considerations:

  • Non-verbal interface designed for impaired cognition during panic
  • Dark gradient backgrounds to reduce photophobia
  • Single-point interaction for loss of fine motor control
  • Haptic-first design for grounding through physical sensation

Challenges we ran into

  1. Haptic Latency — Syncing touch events between devices in real-time required optimizing Firebase Realtime Database listeners and minimizing payload size.

  2. ProGuard Minification — Release builds crashed due to code obfuscation. We had to carefully configure keep rules for Firebase, Kotlin coroutines, and Compose.

  3. Email Verification Flow — Initially, users could access the app before verifying their email. We rewrote the auth flow to sign out users immediately after signup and block login until verified.

  4. Designing for Crisis — Normal UX patterns don't work during panic attacks. We removed all text from the crisis interface and relied entirely on visual and haptic feedback.

Accomplishments that we're proud of

  • Zero-word crisis interface — The entire panic experience requires no reading or typing
  • Real-time haptic bridge — Touch on one phone becomes vibration on another with minimal latency
  • AI Pacer fallback — No one left alone; the app guides breathing if no supporter connects
  • Privacy-first architecture — Minimal data collection, local storage, end-to-end session privacy
  • Accessibility by design — Works for neurodiverse users, selective mutism, and impaired cognition

What we learned

  1. Empathy-driven design — Building for someone in crisis taught us to question every UX assumption
  2. Haptics are underutilized — Vibration as communication is powerful and largely unexplored
  3. Firebase Realtime Database — Perfect for low-latency bidirectional sync
  4. ProGuard is tricky — Release builds need careful testing
  5. Support networks matter — Technology can strengthen human connection, not replace it

What's next for Reso

  1. iOS Version — Expand to iPhone using Flutter or SwiftUI
  2. Wearable Integration — Apple Watch and WearOS for even more subtle haptic support
  3. Group Sessions — Multiple supporters sending coordinated comfort
  4. Therapist Dashboard — Optional sharing of session patterns with mental health professionals
  5. Offline Mode — Pre-cached breathing patterns when no internet is available
  6. Localization — While the crisis interface is language-agnostic, onboarding and settings in multiple languages
  7. Clinical Validation — Partner with mental health researchers to validate effectiveness

Reso — "I can't talk, but I can feel you're here."

Built With

  • android-sdk-35
  • camerax-1.4.1
  • credential-manager-1.3
  • datastore-preferences-1.1.1
  • firebase-ai-(gemini)
  • firebase-app-check-18.0.0
  • firebase-authentication
  • firebase-cloud-messaging
  • firebase-realtime-database
  • google
  • gson-2.11.0
  • identity
  • jetpack-compose-1.7
  • kotlin-2.0
  • material-3
  • ml-kit-barcode-scanning
  • services
  • zxing-core-3.5.3
Share this project:

Updates