rmaps-online/README.md

2.3 KiB

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