The join() was called before connect(), so the join message was never sent to the server. Now we store the participant and send the join message in the WebSocket onopen handler. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| backlog | ||
| public | ||
| src | ||
| sync-server | ||
| .env.example | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.yml | ||
| next.config.js | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
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
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