How codevdtanmay/git-zeronet works
Zeronet lets people on one local network find devices, request and accept peer connections, then chat and transfer files directly. The lobby’s discovery flow finds a server; Socket.IO maintains the online-device list and relays connection decisions and WebRTC signaling. Once a data channel opens, chat messages and chunked files travel peer-to-peer, with received files reassembled for download. The README documents discovery scanning and file-transfer behavior; those details are represented at the documented module level where implementation excerpts were not provided.
Main entry points: PeerContext.jsx Peer context · useChat.js Chat and transfer · signaling.js Socket signaling · SocketContext.jsx Socket context
Components 19
LAN discovery
- Lobby
frontend/src/pages/Lobby.jsx - Discovery context
frontend/src/context/DiscoveryContext.jsx - Server scanning
frontend/src/utils/discovery.js - Device list
frontend/src/components/DeviceList.jsx
Server services
- Discovery API
backend/routes/api.js - Bonjour advertiser
backend/services/bonjour.js - HTTP server
backend/server.js - Socket signaling
backend/sockets/signaling.js
Peer connection
- Socket context
frontend/src/context/SocketContext.jsx - Peer context
frontend/src/context/PeerContext.jsx - Connection prompt
frontend/src/components/ConnectionModal.jsx - WebRTC data channel
Chat and files
- Chat page
frontend/src/pages/Chat.jsx - Chat window
frontend/src/components/ChatWindow.jsx - Chat and transfer
frontend/src/hooks/useChat.js - File chunking
frontend/src/utils/fileChunks.js
Other components
- Device user
- Other LAN device
- Optional STUN
Connections 24
- Device user → Lobby: opens
- Lobby → Discovery context: starts scan
- Discovery context → Server scanning: scans LAN
- Server scanning → Discovery API: requests info
- Lobby → Device list: shows devices
- Device list → Socket context: requests connection
- HTTP server → Discovery API: mounts routes
- HTTP server → Socket signaling: sets up
- HTTP server → Bonjour advertiser: advertises server
- Socket context → Socket signaling: registers and lists
- Socket signaling → Socket context: sends device events
- Socket context → Peer context: provides socket
- Socket signaling → Peer context: relays signaling
- Other LAN device → Connection prompt: requests connection
- Connection prompt → Peer context: accepts or rejects
- Peer context → WebRTC data channel: creates connection
- WebRTC data channel → Other LAN device: connects directly
- Peer context → Optional STUN: uses for ICE
- Device user → Chat page: opens chat
- Chat page → Chat window: renders
- Chat window → Chat and transfer: sends and receives
- Chat and transfer → Peer context: sends and handles data
- Chat and transfer → File chunking: reads file chunks
- Chat and transfer → WebRTC data channel: transfers messages and files