Skip to content

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:

  1. Accept a wave from someone
  2. Chat with them
  3. Tap the ๐Ÿ‘ค+ icon (UserPlus) in the chat header
  4. Review the "Save Connection" modal:
    • Explains venue-bound broadcasting
    • Shows their interests
    • Clarifies privacy model
  5. 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):

  1. Places (MapPin) - Venue discovery
  2. Frens (Heart) - Your saved connections ๐Ÿ†•
  3. Lantern (Flame) - Light/manage your lantern (center, elevated)
  4. Me (Users) - Your profile

Badge: Shows count of frens with lit lanterns (e.g., "3" in purple badge)

Action:

  1. Tap "Frens" button (heart icon)
  2. Opens frens list at #/frens

3. View a Fren's Profile โ€‹

From: Frens list

Action:

  1. Navigate to Frens list (#/frens)
  2. Tap any fren card
  3. 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):

  1. UserPlus (๐Ÿ‘ค+) - Save connection
  2. MoreVertical (โ‹ฎ) - Menu (block/delete)
  3. 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 House

Step 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 again

Step 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" badge

Step 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 chattingChat header โ†’ Tap [๐Ÿ‘ค+] icon
View my frensBottom nav โ†’ Tap "Frens" (heart)
See who's litFrens list โ†’ Filter "๐Ÿฎ Lit"
Wave a frenFrens list/profile โ†’ Tap "๐Ÿ‘‹ Wave"
Manage venuesFren profile โ†’ "Manage" button
Remove a frenFren 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 Firebase

Chat.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 โ€‹

  1. Wire handleSaveConnection to Firebase
  2. Load frens count for nav badge
  3. Query lit frens in real-time
  4. Implement venue broadcasting queries

Status: โœ… UI Complete | โณ Backend Integration Pending

Built with VitePress