A cross-platform terminal-based real-time chat application built with Python.
Project description
SHANTER
A cross-platform terminal-based real-time chat application built with Python.
SHANTER is a lightweight terminal chat application that enables users to communicate in real time over TCP. It provides a simple command-line interface for registering accounts, authenticating users, searching for other users, and exchanging messages across Windows, macOS, and Linux.
✨ Features
- 🔐 Secure user registration with password hashing (
bcrypt) - 👤 User authentication (login/logout)
- 🔍 Search for registered users
- 💬 Real-time one-to-one messaging
- 🌍 Cross-platform support (Windows, macOS, Linux)
- 🖥️ Interactive command-line interface
- 📦 Installable as a Python package
- ⚡ Lightweight TCP socket-based architecture
📁 Project Structure
shanter/
├── client/ # Client application
├── common/ # Shared protocol and utilities
├── server/ # Server implementation
├── tests/ # Tests
├── data/ # SQLite database
├── pyproject.toml
├── README.md
└── LICENSE
🚀 Installation
Clone the repository:
git clone https://github.com/shreyash9999/shanter.git
cd shanter
Create and activate a virtual environment:
macOS / Linux
python3 -m venv .venv
source .venv/bin/activate
Windows
python -m venv .venv
.venv\Scripts\activate
Install SHANTER:
pip install -e .
▶️ Running SHANTER
Start the server
python3 -m server.main
Start the client
Open another terminal and run:
shanter
💻 Available Commands
Once SHANTER starts, you can use the following commands:
| Command | Description |
|---|---|
register |
Create a new account |
login |
Log in to an existing account |
search |
Search for registered users |
chat |
Start a conversation with another user |
whoami |
Display the currently logged-in user |
logout |
Log out of the current session |
help |
Show available commands |
exit |
Exit SHANTER |
🏗️ Architecture
+----------------------+
| Client CLI |
+----------+-----------+
|
|
TCP Socket
|
|
+----------v-----------+
| SHANTER Server |
+----------+-----------+
|
SQLite Database
🛠️ Technologies Used
- Python 3.11+
- TCP Sockets
- SQLite
- bcrypt
- Threading
- JSON-based communication protocol
🗺️ Roadmap
Version 1.0
- ✅ User Registration
- ✅ User Login
- ✅ User Search
- ✅ Real-time One-to-One Messaging
- ✅ Interactive CLI
- ✅ Cross-platform Support
Planned for Future Releases
- Group Chat
- File Transfer
- Online Presence
- Message History
- End-to-End Encryption
- Rich Terminal User Interface
- Notifications
🤝 Contributing
Contributions, ideas, and bug reports are welcome.
If you discover a bug or have a feature request, please open an issue or submit a pull request.
📄 License
This project is licensed under the MIT License.
See the LICENSE file for details.
👨💻 Author
Shreyash Dongare
GitHub: https://github.com/shreyash9999
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shanter-1.0.0.tar.gz.
File metadata
- Download URL: shanter-1.0.0.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e37848757f4a36718acce28ef76722456332dca83e0b437316744cc7e791f899
|
|
| MD5 |
8549a558b4c59a051a35f406e952905e
|
|
| BLAKE2b-256 |
39234187980ce5c840100f3096cb27e53108a777e6bb18e2096524b4adcbe55b
|
File details
Details for the file shanter-1.0.0-py3-none-any.whl.
File metadata
- Download URL: shanter-1.0.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3724d9bb8499b6c22c0ace70637f957c2a72a37fde4f8b940d1332ed6a0c042d
|
|
| MD5 |
b7a891e8bb9cd32d4f77c7ae54499698
|
|
| BLAKE2b-256 |
ca69fb1ceb16c9b37c7dd93edb00b0d571e79146f0c923f4d1481b3f1066bea9
|