- Enhanced service worker with multi-strategy caching: - App shell precaching for instant loading - Map tiles cache-first with background refresh (max 500 tiles) - API requests network-first with cache fallback - Static assets stale-while-revalidate - IndexedDB room state persistence for offline access - Room state sync in useRoom hook: - Saves state to service worker on changes - Loads cached state on initial load for offline fallback - Message handlers for SAVE_ROOM_STATE, GET_ROOM_STATE, CLEAR_CACHES 🤖 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