How akt9802/snipio works
Snipio pairs a laptop capture/host with a tablet receiver through temporary realtime rooms. Users create or join a room, capture lecture frames with the browser extension or supply image files (including watched folders), then receive slides on a tablet for drag-and-drop, clipboard copying, or auto-save. The sampled server code confirms Socket.IO room membership, expiry, and slide relay; the README documents additional P2P capability, but its implementation is not established by the excerpts.
Main entry points: socketServer.ts Socket Server · HostDashboard.tsx Host Dashboard · TabletFeed.tsx Tablet Feed · FolderWatch.tsx Folder Watch
Components 22
Room Entry
- Room Creation
src/components/landing/CreateRoomButton.tsx - Room Page
src/app/room/[roomId]/page.tsx
Slide Capture
- Host Dashboard
src/components/room/HostDashboard.tsx - Extension Capture
extension/content.ts - Extension Worker
extension/background.ts - Folder Watch
src/components/room/FolderWatch.tsx - Slide Conversion
src/lib/slides.ts - Folder Access
src/lib/folderWatch.ts
Realtime Relay
- Room Session
src/lib/useRoomSession.ts - Realtime Client
src/lib/realtime.ts - Socket Server
server/socketServer.ts - Ephemeral Rooms
server/socketServer.ts - Room Protocol
src/lib/roomEvents.ts - WebRTC P2P
Tablet Receive
- Tablet Feed
src/components/room/TabletFeed.tsx - Receiving Tile
src/components/room/ReceivingTile.tsx - Auto-Save
src/lib/autoSave.ts - Clipboard Copy
src/lib/clipboard.ts
Other components
- Student
- Lecture Video
- Tablet User
- Notes App
Connections 27
- Student → Room Creation: creates room
- Room Creation → Room Page: opens room
- Student → Host Dashboard: supplies images
- Lecture Video → Extension Capture: provides frame
- Student → Extension Capture: triggers capture
- Extension Capture → Extension Worker: sends capture
- Extension Worker → Realtime Client: emits slide
- Host Dashboard → Folder Watch: starts watch
- Folder Watch → Folder Access: reads files
- Folder Watch → Host Dashboard: delivers files
- Host Dashboard → Slide Conversion: converts images
- Host Dashboard → Room Session: sends slide
- Room Session → Realtime Client: emits events
- Room Page → Room Session: joins room
- Realtime Client → Socket Server: exchanges events
- Socket Server → Ephemeral Rooms: maintains rooms
- Socket Server → Room Protocol: validates payloads
- Socket Server → Tablet Feed: broadcasts slides
- Tablet User → Room Page: joins by code
- Tablet Feed → Receiving Tile: renders slides
- Tablet Feed → Auto-Save: auto-saves
- Tablet Feed → Clipboard Copy: copies image
- Tablet User → Receiving Tile: drags slide
- Receiving Tile → Notes App: drops image
- Tablet User → Notes App: pastes image
- Socket Server → WebRTC P2P: direct transfer
- WebRTC P2P → Tablet Feed: sends slide