Skip to content

bobbyrathoree/campfire-sessions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Campfire Sessions

A local-first, ephemeral shared workspace for small groups. Gather around a digital campfire to collaborate—then watch it fade away.

iOS 17+ Swift License

Vision

Campfire Sessions creates temporary, intimate collaboration spaces. No accounts, no permanent data, no surveillance. Just gather, work together, and leave no trace.

Each "Fire" is a shared session with a built-in lifespan (TTL). When time runs out, the fire dies and everything disappears.

Features

Feature Description
Logbook Shared task list with optional anonymity
Embers Collaborative timer for focused sessions
Sparks Anonymous ephemeral thoughts (2-min TTL)
Show of Hands Quick polls with optional anonymous voting

Architecture

Event-Sourced & Local-First

The app uses an event-sourced architecture designed for offline-first, peer-to-peer collaboration:

Events → StateReducer → FireState
  • Lamport Clocks for causal ordering across peers
  • Deterministic Reducers ensure identical state from identical events
  • Tombstones prevent deleted items from reappearing during sync
  • No central server required (P2P sync layer coming in M2)

Key Components

Core/
├── Models/
│   ├── Event.swift          # Event types with Lamport timestamps
│   ├── FireState.swift      # Computed state from events
│   └── LamportClock.swift   # Logical clock implementation
├── StateReducer.swift       # Pure function: [Event] → State
└── EventStore.swift         # Event persistence

ViewModels/
└── FireViewModel.swift      # Actions dispatch events

Views/
├── HomeView.swift           # Landing + fire creation
├── FireView.swift           # Main session view
├── LogbookView.swift        # Tasks
├── EmbersView.swift         # Timer
├── SparksView.swift         # Anonymous thoughts
└── ShowOfHandsView.swift    # Polls

Design

Isometric geometric aesthetic with a sunset warm palette:

Color Hex Usage
Peach #FFB5A7 Primary glow, warmth
Coral #F28482 Interactive elements
Cream #FFF5EE Backgrounds
Dusty Rose #D4A5A5 Secondary accent
Mauve #9D8189 Text, depth
Stone #E8DDD4 Monument surfaces

Animations are intentionally slow and meditative (0.6s–2.0s).

Getting Started

Prerequisites

  • Xcode 16+
  • iOS 17+ Simulator or device
  • xcodegen (for project generation)

Setup

# Clone the repo
git clone https://github.com/yourusername/campfire-sessions.git
cd campfire-sessions

# Generate Xcode project
brew install xcodegen  # if not installed
xcodegen generate

# Open in Xcode
open CampfireSessions.xcodeproj

Run

  1. Select an iOS Simulator (iPhone 17 Pro recommended)
  2. Press ⌘R to build and run

Roadmap

  • M1: Geometric Redesign — Isometric UI, sunset palette, core features
  • M2: Peer-to-Peer Sync — Local network discovery, event sync
  • M3: Persistence — Event log persistence, session resume
  • M4: Polish — Sounds, haptics, animations

Contributing

Contributions welcome! Please read the architecture section to understand the event-sourced approach before making changes.

License

MIT License. See LICENSE for details.


"Gather. Collaborate. Leave no trace."

About

Local-first, ephemeral shared workspace for small groups. Event-sourced architecture with isometric geometric UI. SwiftUI + iOS.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages