How tntcrafthim/piik works
Piik is a private screen-sharing product: a host selects a screen, window, tab, camera, and audio; creates a room and invitation; viewers join in a browser; media prefers direct peer connections, with optional server-side SFU forwarding. The graph covers the browser experience, desktop capture/runtime, and self-hosted room and signaling services. Source excerpts are partial, so uncertain module wiring is omitted; some server capabilities are included based on the README and file tree.
Main entry points: App.tsx Client app · HostPage.tsx Host page · session.ts Room session · signaling.ts Signaling client
Components 22
Browser experience
- Client app
src/client/App.tsx - Host page
src/client/pages/HostPage.tsx - Join page
src/client/pages/JoinPage.tsx - Viewer page
src/client/pages/ViewerPage.tsx - Signaling client
src/client/lib/signaling.ts - Room session
src/client/lib/session.ts
Client media
- Browser capture
src/client/media/capture-devices.ts - Host peer media
src/client/webrtc/host-peer.ts - Viewer peer media
src/client/webrtc/viewer-peer.ts - SFU client
src/client/sfu/publisher.ts
Desktop app
- App runtime
internal/app/app.go - Local control
internal/app/loopback/server.go - Native capture
internal/app/nativecapture/stream.go - Native media engine
internal/app/mediaedge/engine.go
Server services
- HTTP server
internal/server/app/routes.go - Room signaling
internal/server/signal/server.go - Room store
internal/server/room/store.go - Route controller
internal/server/route/controller.go - SFU forwarding
internal/server/sfu/media.go - Media forwarding
internal/media/forwarding/transport.go
Other components
- Host
- Viewer
Connections 26
- Host → Client app: uses
- Viewer → Client app: joins through
- Client app → Host page: dispatches
- Client app → Join page: dispatches
- Client app → Viewer page: dispatches
- Host page → Browser capture: captures media
- Host page → Room session: creates room
- Join page → Room session: discovers room
- Viewer page → Room session: loads session
- Room session → Signaling client: exchanges signaling
- Host peer media → Signaling client: signals peers
- Viewer peer media → Signaling client: signals peers
- Host peer media → Viewer peer media: sends media
- SFU client → Signaling client: receives assignment
- App runtime → Local control: starts
- App runtime → Native capture: discovers capture
- Local control → Native capture: controls process
- App runtime → Native media engine: creates engine
- Host page → Local control: uses local control
- Viewer page → HTTP server: requests site
- HTTP server → Room signaling: mutates rooms
- Room signaling → Room store: reads and writes
- Room signaling → Route controller: executes routing
- Route controller → SFU forwarding: selects fallback
- SFU forwarding → Media forwarding: forwards media
- SFU client → SFU forwarding: publishes or subscribes