MWIN (My Witty Interactive Nonsense)

A simple, self-hosted, terminal-based chat room application written in Go. No installation required, just download and run!

MWIN Screenshot

Key Features

  • Multi-User Chat: Multiple users can join and participate in the chat room simultaneously.
  • Real-Time Messaging: Messages are instantly broadcast to all connected users.
  • Customizable Usernames: Users can choose their own name or use the default (hostname).
  • Timestamps: Messages are displayed with timestamps for better clarity.
  • Customizable Port: The server can be configured to run on a port of your choice.
  • Bubble Tea-Based GUI: A more visually appealing and interactive experience directly to your terminal.
  • Auto-Start: Configure MWIN to start automatically when you open your terminal.
  • MacOS Notifications: Mac users receive native notifications for new messages.

Technical Implementation

MWIN is built using Go, leveraging its concurrency features for efficient handling of multiple connections. The Bubble Tea framework is used to create the terminal-based GUI.

Motivation

I created MWIN to explore Go's networking capabilities and build a practical tool for real-time communication in a terminal environment. I also wanted to experiment with the Bubble Tea framework to create a more engaging user interface.

Challenges and Solutions

One challenge was ensuring smooth real-time message delivery while handling potential network issues and disconnections. I addressed this by implementing robust error handling and reconnection mechanisms.

Lessons Learned

This project deepened my understanding of Go's concurrency model and network programming concepts. I also gained valuable experience in building terminal-based applications with interactive user interfaces.

Future Enhancements

  • Private Messaging: Allow users to send private messages to each other.
  • File Sharing: Implement the ability to share files within the chat room.
  • Cross-Platform Notifications: Extend notification support to other operating systems.
View on GitHub

Date: Ongoing

Language:

Go

Framework:

Bubble Tea

License: GNU AGPLv3

View on GitHub