A local-first, ephemeral shared workspace for small groups. Gather around a digital campfire to collaborate—then watch it fade away.
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.
| 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 |
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)
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
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).
- Xcode 16+
- iOS 17+ Simulator or device
- xcodegen (for project generation)
# 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- Select an iOS Simulator (iPhone 17 Pro recommended)
- Press
⌘Rto build and run
- 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
Contributions welcome! Please read the architecture section to understand the event-sourced approach before making changes.
MIT License. See LICENSE for details.
"Gather. Collaborate. Leave no trace."