go-chat
is a TUI-based desktop application created mainly for demonstration purposes.
The app consists of two separate runnable programs -
go-chat-server.go
- as you can guess, this program represents the server-side of the appgo-chat.go
- client app with terminal user interface
The server app is represented by two concepts:
- room - TCP server, to which clients connect to communicate. Each room client is a separate goroutine. Rooms have names and size limits.
- butler - gRPC server, which accepts gRPC-requests from clients to either find a room (basically return a port number) or to create one.
Client app is implemented with tview.
I'm horrible at creating UIs and client apps, so it may seem ugly, and also I was too lazy to implement a proper error message display
Nevertheless, I believe the current UI version is somewhat useful and serve its demonstrative purposes