Collaborative real-time friend-finding navigation for events
Go to file
Jeff Emmett ff45193ba2 feat: Grey out stale locations, remove indoor map, dedupe pings
1. Stale locations (>5 min old) are now greyed out on the map with
   reduced opacity and hover tooltip showing time since last seen
2. Removed indoor map button and related UI elements
3. Location request pings now deduplicate by participant name to
   avoid pinging the same user multiple times

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 13:06:52 +01:00
backlog fix: Improve location handling, session persistence, and mobile UI 2025-12-28 23:34:00 +01:00
public feat: Add push notifications for background friend pings 2025-12-29 02:33:08 +01:00
src feat: Grey out stale locations, remove indoor map, dedupe pings 2026-01-02 13:06:52 +01:00
sync-server feat: Grey out stale locations, remove indoor map, dedupe pings 2026-01-02 13:06:52 +01:00
.env.example feat: Add PWA push notifications for room events 2025-12-29 01:13:16 +01:00
.gitignore Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
Dockerfile Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
README.md Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
docker-compose.yml Simplify Traefik labels for compatibility 2025-12-15 14:33:28 -05:00
next.config.js Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
package-lock.json Replace Automerge with simple WebSocket sync 2025-12-15 12:59:22 -05:00
package.json Replace Automerge with simple WebSocket sync 2025-12-15 12:59:22 -05:00
postcss.config.js Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
tailwind.config.ts Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
tsconfig.json Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00

README.md

rMaps.online

Collaborative real-time friend-finding navigation for events.

Features

  • Real-time GPS Sharing: See your friends' locations on the map
  • Privacy-First: Control who sees your location and at what precision
  • c3nav Integration: Indoor navigation for CCC events (38C3, Easterhegg, Camp)
  • Ephemeral Rooms: Create a room, share the link, meet up
  • No Account Required: Just enter your name and go

Quick Start

# Install dependencies
npm install

# Run development server
npm run dev

Open http://localhost:3000

Architecture

┌─────────────────────────────────────────────────┐
│                  rMaps.online                    │
├─────────────────────────────────────────────────┤
│  Frontend: Next.js + React + MapLibre GL        │
│  State: Zustand + Automerge (CRDT)              │
│  Maps: OpenStreetMap (outdoor) + c3nav (indoor) │
│  Sync: WebSocket / Automerge Repo               │
└─────────────────────────────────────────────────┘

Room URLs

  • Path-based: rmaps.online/room/my-crew
  • Subdomain (planned): my-crew.rmaps.online

c3nav Integration

rMaps integrates with c3nav for indoor navigation at CCC events:

  • Automatic detection when entering venue area
  • Indoor positioning via WiFi/BLE
  • Floor-aware navigation
  • Route planning to friends, events, and POIs

Development

# Type checking
npm run type-check

# Linting
npm run lint

# Build for production
npm run build

Deployment

Docker

docker compose up -d --build

Traefik Labels

The docker-compose.yml includes Traefik labels for:

  • Main domain routing (rmaps.online)
  • Wildcard subdomain routing (*.rmaps.online)

Privacy

  • No tracking: We don't store location history
  • Ephemeral rooms: Auto-delete after 7 days of inactivity
  • Precision control: Choose how accurately to share your location
  • Ghost mode: Hide your location while staying in the room

License

MIT