Frens System — User Flow Integration
How to access and use the Frens feature in Lantern
📍 Access Points
1. Save a Connection (Add Fren)
From: Active chat after accepting a wave
Location: Chat header (top-right)
Action:
- Accept a wave from someone
- Chat with them
- Tap the 👤+ icon (UserPlus) in the chat header
- Review the "Save Connection" modal:
- Explains venue-bound broadcasting
- Shows their interests
- Clarifies privacy model
- Tap "Save Fren" or "Maybe Later"
Result:
- They can now see YOUR lantern when you light it at that venue
- You won't see theirs unless they save you back
2. View Your Frens List
From: Dashboard bottom navigation
Location: Bottom navigation bar (4 buttons)
Buttons (left to right):
- Places (MapPin) - Venue discovery
- Frens (Heart) - Your saved connections 🆕
- Lantern (Flame) - Light/manage your lantern (center, elevated)
- Me (Users) - Your profile
Badge: Shows count of frens with lit lanterns (e.g., "3" in purple badge)
Action:
- Tap "Frens" button (heart icon)
- Opens frens list at
#/frens
3. View a Fren's Profile
From: Frens list
Action:
- Navigate to Frens list (
#/frens) - Tap any fren card
- Opens individual fren profile at
#/frens/:id
What you see:
- Their lantern name and interests
- Current status (lit/not lit)
- Where you met
- Shared venues
- Broadcast settings
- Wave button (if currently lit)
🎨 Visual Guide
Dashboard Navigation (Bottom Bar)
┌────────────────────────────────────────┐
│ │
│ │
│ (Main content area) │
│ │
│ │
└────────────────────────────────────────┘
┌────────────────────────────────────────┐
│ Places Frens 🔥 Me │
│ 📍 💜 (3) │
│ Map Heart Flame Users │
└────────────────────────────────────────┘"Frens" button shows:
- Purple heart icon
- "Frens" label
- Badge with count (if any frens lit)
Chat Header with Save Button
┌────────────────────────────────────────┐
│ 💬 Chat with Sapphire Crystal │
│ Anonymous Lantern │
│ [👤+] [⋮] [✕] │
│ ↑ │
│ Save Connection │
└────────────────────────────────────────┘Buttons (right side):
- UserPlus (👤+) - Save connection
- MoreVertical (⋮) - Menu (block/delete)
- X (✕) - Close chat
Save Connection Modal
┌────────────────────────────────────────┐
│ Save Sapphire Crystal? │
│ 🏷️ Jazz Coffee Art │
│ │
│ ┌──────────────────────────────────┐ │
│ │ 🏮 They'll see when you're at │ │
│ │ Coffee House │ │
│ │ │ │
│ │ 🔒 Privacy-first │ │
│ │ You won't see their lantern │ │
│ │ unless they save you back │ │
│ └──────────────────────────────────┘ │
│ │
│ [Maybe Later] [Save Fren] │
└────────────────────────────────────────┘Frens List Screen
┌────────────────────────────────────────┐
│ ← Frens 🔍 │
│ [All (3)] [🏮 Lit (2)] [Mutual (1)]│
├────────────────────────────────────────┤
│ 🏮 2 frens have lit lanterns │
├────────────────────────────────────────┤
│ ● Sapphire Crystal [👋 Wave]│
│ At The Speakeasy • 15m ago │
│ Jazz, Coffee, Art │
│ Shared venues: Coffee House │
│ │
│ ● Amber Beacon │
│ At Coffee House • Now │
│ Late Night, Music │
│ │
│ ○ Nova Light │
│ Last seen 2 days ago │
│ Books, Coffee, Quiet │
└────────────────────────────────────────┘
│ Places Frens 🔥 Me │
└────────────────────────────────────────┘Indicators:
- ● (filled dot) = Lantern currently lit
- ○ (empty dot) = Not currently active
- Purple "Mutual" badge = Both saved each other
- Wave button = Only shown if currently lit
Fren Profile Screen
┌────────────────────────────────────────┐
│ ← Sapphire Crystal │
│ ✨ Mutual Fren │
├────────────────────────────────────────┤
│ 🏮 Currently at The Speakeasy │
│ Lantern lit 15m ago │
│ │
│ [👋 Send Wave] │
├────────────────────────────────────────┤
│ Interests: │
│ 🏷️ Jazz Coffee Art Late Night │
├────────────────────────────────────────┤
│ Connection: │
│ Met at Coffee House │
│ January 9, 2026 │
├────────────────────────────────────────┤
│ Venue Broadcasting: [Manage] │
│ │
│ 📡 You're broadcasting to them at: │
│ • Coffee House │
│ • The Speakeasy │
│ │
│ 👀 They're broadcasting to you at: │
│ • Coffee House │
│ │
│ ✨ Mutual at 1 venue: │
│ Coffee House │
└────────────────────────────────────────┘🔄 Complete User Journey
Scenario: Meeting and Reconnecting
Step 1: First Meeting
1. You're at Coffee House
2. Light your lantern
3. Receive wave from "Sapphire Crystal"
4. Accept wave → Chat opens
5. Chat for a bit
6. Tap [👤+] "Save Connection"
7. Review modal → Tap "Save Fren"
8. ✅ Saved! They can now see your lantern at Coffee HouseStep 2: Later That Week
1. You light your lantern at Coffee House again
2. Sapphire Crystal sees notification: "Amber Beacon is at Coffee House"
3. They decide to show up
4. Both at venue → Can chat againStep 3: Mutual Connection
1. Sapphire Crystal also saves you
2. 🎉 Both get "Mutual Connection!" notification
3. Now you can BOTH see each other's lanterns at Coffee House
4. Frens list shows them with "Mutual" badgeStep 4: Expanding Venues
1. You both happen to be at The Speakeasy
2. System prompts: "Also broadcast at The Speakeasy?"
3. Tap "Add Venue"
4. Now they can see you at Coffee House AND The Speakeasy🎯 Key Interaction Points
From Dashboard
- Bottom nav "Frens" button → Frens list
- Badge shows count → Lit frens indicator
From Chat
- 👤+ button in header → Save connection modal
- After save → Success confirmation
From Frens List
- Filter buttons → All / Lit / Mutual
- Search bar → Find by name
- Tap fren card → View profile
From Fren Profile
- Wave button → Send wave (if lit)
- Manage venues → Choose broadcast locations
- Remove connection → Delete fren
🚀 Quick Actions
| I want to... | How to do it |
|---|---|
| Save someone after chatting | Chat header → Tap [👤+] icon |
| View my frens | Bottom nav → Tap "Frens" (heart) |
| See who's lit | Frens list → Filter "🏮 Lit" |
| Wave a fren | Frens list/profile → Tap "👋 Wave" |
| Manage venues | Fren profile → "Manage" button |
| Remove a fren | Fren profile → "Remove Connection" |
📱 Navigation Hierarchy
Dashboard (Home)
└─ Bottom Nav
├─ Places → Venue discovery
├─ Frens → #/frens (Frens list) 🆕
│ └─ Tap fren → #/frens/:id (Fren profile)
├─ Lantern → Hub modal
└─ Me → #/profile (Settings)
Chat (after wave acceptance)
└─ Header
└─ [👤+] Save Connection 🆕
└─ SaveConnectionPrompt modal🔧 Developer Notes
State Management
Dashboard.jsx:
javascript
frensCount={0} // TODO: Load from FirebaseChat.jsx:
javascript
const handleSaveConnection = async (person) => {
// TODO: Wire to Firebase - save to connections collection
console.log('Saving connection:', person)
}Routes
#/frens- FrensList screen#/frens/:id- FrenProfile screen
Next Steps
- Wire
handleSaveConnectionto Firebase - Load frens count for nav badge
- Query lit frens in real-time
- Implement venue broadcasting queries
Status: ✅ UI Complete | ⏳ Backend Integration Pending