Skip to content

msaakaash/multiuser-chat-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi-User Chat Application

A secure and scalable multi-user chat application built using Go, featuring private, public, and group messaging functionalities. The app uses TLS encryption to secure communication between clients and server.

Features

  • Private Messaging: Send direct messages to a specific user.
  • Public Messaging: Broadcast messages to all connected users.
  • Group Messaging: Create groups and chat within them.
  • TLS Encryption: Secure all communication using SSL/TLS certificates and keys generated via OpenSSL.

Tech Stack

  • Language: Go (Golang)
  • Security: TLS/SSL (OpenSSL Certificates)
  • Networking: TCP Protocol

Installation and Setup

1. Install Go

2. Install OpenSSL and Generate Certificates

  • Install OpenSSL:

    • Windows: Download OpenSSL
    • Linux (Ubuntu):
      sudo apt update
      sudo apt install openssl
    • MacOS:
      brew install openssl
  • Generate TLS Certificate and Private Key:

    openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes
    • server.key → Private Key
    • server.crt → Public Certificate
  • Place server.crt and server.key inside your project folder.

3. Clone the Repository

git clone https://github.com/msaakaash/multiuser-chat-app.git
cd multiuser-chat-app

4. Running the Server

go run server.go

5. Running the Client(s)

go run client.go

You can run multiple clients to simulate multiple users chatting.

Code of Conduct

Please read our Code of Conduct before contributing to this project.

Contributing

We welcome contributions from everyone!

  1. Fork this repository.
  2. Create a new branch:
    git checkout -b feature/your-feature-name
  3. Commit your changes:
    git commit -m "Add your message"
  4. Push the changes:
    git push origin feature/your-feature-name
  5. Open a Pull Request.

Additional Notes

  • Ensure the server is running before clients attempt to connect.
  • The communication between client and server is fully encrypted with TLS.
  • Groups can be created dynamically and members can join iteratively.

Code of Conduct

Please read our Code of Conduct before contributing to this project.

Security

If you discover a vulnerability, please refer to our Security Policy for instructions on how to report it responsibly.

License

This project is licensed under the MIT License.

Author

Aakaash M S

About

A lightweight, concurrent terminal-based chat application built using TCP sockets and secured with TLS encryption.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages