How ronituohino/p2p-chat works
p2p-chat is a peer-to-peer group-chat application. A user adds a Node Discovery Service (NDS), browses or creates a network, joins through its leader, and sends messages that peers broadcast and synchronize using logical clocks. Leaders are elected among peers; heartbeats support failure detection, while the NDS tracks group leaders. The graph preserves the documented runtime capabilities and sampled client, UI, and NDS flow. Several service modules are represented from the source index and README; their internal call paths were not sampled, so those connections are omitted unless documented.
Main entry points: server.py Peer RPC service · ui.py Chat application · main.py Networking adapter · Networks/main.py Network browser
Components 20
Chat interface
- Chat application
client/ui/ui.py - Network browser
client/ui/Networks/main.py - Add discovery source
client/ui/Networks/add_discovery_source.py - Create group form
client/ui/Networks/create_group.py - Chat panel
client/ui/Chat/main.py
Peer client
- Client entry
main.py - Networking adapter
main.py - Peer RPC service
client/service/server.py - Leader election
client/service/leader_election.py - Heartbeat monitor
client/service/heartbeat.py - Peer overseer
client/service/overseer.py - Message broadcasting
client/service/messaging.py - Logical-clock sync
client/service/synchronization.py - Peer state
client/service/state.py - Discovery crawler
client/service/crawler.py
Network discovery
- Node Discovery Service
client/nds/nds.py
Protocol data
- Group and message models
client/structs/client.py - Discovery group models
client/structs/nds.py - Generic response model
client/structs/generic.py
Other components
- User
Connections 30
- User → Chat application: uses
README.md - Client entry → Chat application: starts
main.py - Client entry → Networking adapter: creates
main.py - Chat application → Network browser: composes
client/ui/ui.py - Chat application → Chat panel: composes
client/ui/ui.py - Chat application → Add discovery source: opens
client/ui/ui.py - Chat application → Create group form: opens
client/ui/ui.py - Chat application → Peer RPC service: starts
client/ui/ui.py - Chat panel → Networking adapter: sends messages
client/ui/Chat/main.py - Network browser → Networking adapter: joins groups
client/ui/Networks/main.py - Add discovery source → Networking adapter: adds source
README.md - Create group form → Networking adapter: creates group
README.md - Networking adapter → Peer RPC service: invokes services
main.py - Peer RPC service → Node Discovery Service: contacts NDS
client/service/server.py - Peer RPC service → Leader election: dispatches election
client/service/server.py - Peer RPC service → Heartbeat monitor: handles heartbeats
client/service/server.py - Peer RPC service → Message broadcasting: broadcasts messages
client/service/server.py - Peer RPC service → Logical-clock sync: synchronizes messages
client/service/server.py - Peer RPC service → Peer state: uses state
client/service/server.py - Peer RPC service → Discovery crawler: starts crawler
client/service/server.py - Leader election → Peer overseer: starts monitoring
client/service/leader_election.py - Leader election → Logical-clock sync: synchronizes peers
client/service/leader_election.py - Node Discovery Service → Discovery group models: uses models
client/nds/nds.py - Node Discovery Service → Generic response model: uses response
client/nds/nds.py - Peer RPC service → Group and message models: uses models
client/service/server.py - Peer RPC service → Discovery group models: uses discovery models
client/service/server.py - Network browser → Group and message models: displays groups
client/ui/Networks/main.py - Network browser → Discovery group models: browses groups
client/ui/Networks/main.py - Logical-clock sync → Group and message models: uses message models
client/service/synchronization.py - Leader election → Group and message models: uses response model
client/service/leader_election.py