Skip to content

qualzed/qChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qChat Logo

qChat

A modular, console-based TCP messenger built entirely in Python using standard sockets.
Allows real-time messaging and seamless file transfers between a server and multiple clients.

Python Version Radmin VPN


📸 Preview

Main Menu


✨ Features

  • Multi-Client Architecture — Server supports multiple simultaneous client connections.
  • Global Chat Room — Messages are instantly broadcasted to all connected users.
  • File Transfer Protocol — Send files bi-directionally (Client to Server / Server to Client).
  • Command-Driven Control — System commands parsed via the $ prefix.
  • Dynamic Identity — Change your nickname on the fly during the session.
  • Modular Codebase — Clean, decoupled architecture with 10+ specific modules.

🛠️ Command System

Messages starting with $ are reserved for system operations and are not broadcast to the chat.

  • $sendfile — Initiates a file transfer request.
  • (More commands can be implemented inside the modular handler).

📁 Repository Structure

.
├── main.py                      # Application entry point (launches the main menu)
├── requirements.txt             # Project dependencies
├── icon.png                     # Application logo
├── screen.png                   # Interface screenshot
└── src/
    ├── console.py               # Console utility wrappers (e.g., screen clearing)
    ├── header.py                # Global imports aggregator
    ├── menu.py                  # Main menu interface and navigation
    ├── packet.py                # Packet size configurations and headers
    ├── port.py                  # Port scanner and manager (defaults to 5005)
    ├── user.py                  # Nickname manager and connection state definitions
    ├── tag.py                   # Tag templates
    ├── settings.py              # Settings
    ├── serializer.py            # JSON Reader and Initializer
    ├── crypto/
    │   ├── crypto_main.py       # Core cryptographic functions
    │   └── key_generation.py    # Key generation and management data
    ├── file/
    │   └── sendFile.py          # Binary file encoding and transmission logic
    ├── host/
    │   ├── client.py            # Core client engine (manages current session)
    │   ├── message.py           # Message processing and broadcasting handler
    │   ├── server.py            # Core server engine (tracks clients, IPs, and names)
    │   └── var.py               # System flags and request markers (e.g., \$filerequest)
    └── ui/
        └── interface.py         # UI core engine

🚀 Getting Started

Prerequisites

  • Python 3.14+ installed

Installation

  1. Clone the repository:

    git clone https://github.com/qualzed/qChat
    cd qChat
  2. Run the application:

    python main.py

🔨 Building the Project

Follow the instructions below to compile the project for your operating system.

🚀 Quick Start

  1. Install the required compiler:

    pip install nuitka==4.1.2
  2. Run the build script for your OS:

    • Windows: Run build.bat
    • Linux / macOS: Run build.sh

⚠️ Important Notes

  • Supported Tools: This project has been tested only with Nuitka and PyInstaller.
  • Using other freezing tools or different library versions may cause unexpected errors.

About

qChat - console messenger. It works with UDP sending and connecting to "white" IP server and 5005 port. If you want - you can change this source code, port, or make a static IP to connect.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages