SimpleGUIChat
Python Tkinter + TCP socket chat β pop-out messaging experiment that later informed MANET radio and dual PTT networking work.

Project focus
Software
Key Features
Pop-out GUI chat window
Threaded receive loop
Localhost:9090 dev server
Scope of work
Answer a narrow integration question: can a web page open a pop-out chat that does not live inside the browser tab?
- Implement TCP server on
127.0.0.1:9090 - Build Tkinter client with threaded GUI + socket receive loop
- Broadcast messages to all connected clients (simple fan-out)
- Sketch IRC-like privilege roles in README (Owner β Banned) for future work
- Preserve lineage to later mesh radio / dual PTT experiments
Out of scope: TLS, persistence, moderation UI, production auth.
Timeline
| Phase | Window | Milestone |
|---|---|---|
| Tutorial merge | Jul 2022 | Combined NeuralNine + Python Forum samples |
| Server/client split | Jul 2022 | server.py + client.py running locally |
| GitHub publish | 22 Jul 2022 | Public repo tagged as ZCW cohort work |
| Roadmap note | Jul 2022 | Privilege model deferred after data loss scare |
Stack & BOM
| File | Role |
|---|---|
server.py | Bind :9090, accept clients, broadcast payloads |
client.py | Nickname prompt, Tkinter UI, send/receive threads |
| Python 3.x stdlib | socket, threading, tkinter |
Deliverables
- Working LAN-local chat demo
- Pop-out window suitable for embedding experiments
- Documented privilege model (design only)
- Website embed bridge (not completed)
- Role enforcement (deferred)
Outcomes
- Treated real-time messaging as infrastructure for the first time
- Direct conceptual ancestor to MANET / mesh radio coursework and field comms ideas
- Validated threaded GUI + socket pattern before heavier Django forum work
Known limitations
- No encryption β lab use only
- Single-process server β no horizontal scale
- Privilege system exists in README only after accidental deletion recovery
Build log & narrative
Scope, timeline, and BOM live here. For decisions, debugging stories, and longer context, read the related blog post.
Read the blog postCompleted on: Jul 22, 2022