The Geo.Camera codebase extends viewer-3d/ - a vanilla JS + Three.js drone flight viewer.
## Key Files to Create ``` viewer-3d/js/ collab/ identity.js # Ed25519 keys, IndexedDB persistence webdav-client.js # HTTP WebDAV for bootstrap webdav-server.js # WebDAV over WebRTC data channel signaling.js # Offer/answer exchange peer-connection.js # RTCPeerConnection management camera-agent.js # Camera enumeration + capabilities rooms.js # Room/channel management media-recorder.js # Audio/video capture message-queue.js # Offline-first message queue state-sync.js # Gradient-based diffusion tokens.js # Signed authorization tokens layers/ CameraLayer.js # Camera frustum in 3D scene CameraManager.js # Multi-camera management ui/ UserPanel.js # Collapsible left panel ChannelTree.js # Room/channel navigation CameraPanel.js # Camera controls MonitorGrid.js # EOC multi-monitor view ```
## Current Implementation Phase **Starting Point:** Steps 1-3 1. Identity + keys (Ed25519, IndexedDB) 2. Camera enumeration (detect devices, capabilities) 3. Camera layer in 3D (frustum rendering in viewer-3d) The foundation is camera-first: get cameras rendering in 3D space before networking.
## How to Start 1. Read `viewer-3d/js/main.js` to understand the existing drone viewer 2. Look at `viewer-3d/js/rendering/Panosphere.js` for video texture mapping 3. Explore `viewer-3d/js/telemetry/` for position/orientation data handling 4. Begin with `identity.js` - Ed25519 key generation and IndexedDB storage