PeerChat: A terminal-based P2P chat application using libp2p and Golang
PeerChat is a terminal-based P2P chat application using libp2p and Golang. It utilizes a Kademlia DHT and the IPFS network for peer discovery and routing. The application supports features such as TLS encryption, peer active discovery, YAMUX stream multiplexing, and allows users to switch between chat rooms and change usernames.
It enables communication between nodes on the same or different networks, including private nodes behind NATs, by automatically configuring the router using UPnP and utilizing AutoRelay (TURN) for connecting to relay nodes.
The app is written in Golang, and it uses libp2p, and tview terminal UI library.
Future Development
- Support for QUIC and WebSocket transports
- Migrate to Protocol Buffers instead of JSON for message encoding
- Chat Room notification for when user changes names
- Support for other PubSub routers (RandomSub, FloodSub and someday EpiSub)
- Support for password protected Chat Rooms.
License
MIT License