Collaborative real-time friend-finding navigation for events
Go to file
Jeff Emmett c0ef77b6b8 Broaden WebAuthn error handling to show register form
Catch SecurityError and AbortError in addition to NotAllowedError
when login fails — all indicate the user needs to register rather
than showing a cryptic error message.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 01:46:26 +00:00
backlog chore: backlog TASK-14 SpaceRole bridge (Done) 2026-02-17 15:35:15 -07:00
public Thread caller name through ping notifications 2026-02-19 00:35:54 +00:00
src Broaden WebAuthn error handling to show register form 2026-02-19 01:46:26 +00:00
sync-server Fix pingerName crash + auto-redirect returning users to last room 2026-02-19 00:44:19 +00: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 fix: connect frontend to sync server for multiplayer 2026-02-18 23:34:04 +00:00
MODULE_SPEC.md docs: add MODULE_SPEC.md with permission model and capabilities 2026-02-17 12:30:14 -07:00
README.md Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
docker-compose.yml fix: connect frontend to sync server for multiplayer 2026-02-18 23:34:04 +00:00
next.config.js Initial scaffold for rMaps.online 2025-12-15 12:23:13 -05:00
package-lock.json chore: update lockfile after encryptid-sdk install 2026-02-17 15:33:49 -07:00
package.json feat: add QR code to share modal for easy room sharing 2026-02-18 09:56:47 +00: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 Fix TypeScript build: enable downlevelIteration for Uint8Array spread 2026-02-14 19:27:39 -07: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