An open API service indexing awesome lists of open source software.

https://github.com/theleopard65/photon-live-chat-app

Photon is a real-time, peer-to-peer chat application built with Qt5 and C++, offering secure communication through AES-128 encryption. It supports random chat rooms, file sharing, and message history. The app provides a simple Qt-based GUI for easy interaction. It requires Qt5, OpenSSL, and build-essential packages for installation and building.
https://github.com/theleopard65/photon-live-chat-app

aes anonymous chatting cmake cplusplus encryption file-sharing file-upload first-project ftp gui message-history qmake qt5 security session-rejoining ssl

Last synced: about 1 month ago
JSON representation

Photon is a real-time, peer-to-peer chat application built with Qt5 and C++, offering secure communication through AES-128 encryption. It supports random chat rooms, file sharing, and message history. The app provides a simple Qt-based GUI for easy interaction. It requires Qt5, OpenSSL, and build-essential packages for installation and building.

Awesome Lists containing this project

README

          

# Photon Live Chat Application

**Photon** is a real-time, encrypted, peer-to-peer chat application built using **Qt5** and **C++**. This project allows users to securely communicate over the internet using AES encryption for messages and the ability to share files with others. It includes both client and server components, with features such as message history, group chat, and secure file transfers.

---
## _**NOTE:**_ ```This project is still under development due to major changes. The original 1 file system is being replaced by a dual client-server model.```
---

## Features

- **AES Encryption**: All chat messages are encrypted using AES-128 encryption for secure communication.
- **Chat Rooms**: Users can join randomly named chat rooms for communication with multiple participants.
- **File Sharing**: Allows file uploads and shares them securely across clients.
- **Message History**: Users can view the chat history during a session.
- **Qt GUI**: A user-friendly interface built with Qt5 to interact with the application, including text input for messages, a display area for chat, and options to upload files.

## Prerequisites

To build and run the Photon application, ensure the following dependencies are installed:

- **Qt5**: Required for building the graphical user interface.
- **OpenSSL**: Used for message encryption and decryption.
- **build-essential**: Necessary tools to compile C++ programs.

## Installation and Build

1. **Clone the Repository:**
- Clone this repository to your local machine.

2. **Install Dependencies:**
- Run the following command to install the required dependencies:
```bash
sudo apt install $(cat requirements)
```

3. **Generate Makefile:**
- Run the `qmake` command to generate the Makefile for building the application:
```bash
qmake compiler.pro
```

4. **Build the Application:**
- Use the `make` command to compile the project:
```bash
make
```

5. **Run the Application:**
- After the build is complete, you can start the application by running the generated executable.

```bash
./App
```

## How It Works

- **Client-Server Communication**: The application can either connect to an existing server or start its own server. If the server is not found, the client starts a new server instance to allow other clients to join.
- **Encryption**: Messages are encrypted before being sent and decrypted upon receipt, ensuring that all communication is secure.
- **File Uploads**: Users can upload files which will be sent to all other clients in the chat room. Files are sent with metadata such as file name and size, and stored in the user's Downloads folder.
- **UI Components**:
- **Login Screen**: Allows the user to input their username and the server address.
- **Chat Interface**: Displays chat messages, including messages sent by the user and others in the chat room.
- **File Upload**: A button is available to upload files to the chat room.

## File Structure

```
.
├── App # Main application directory containing the Qt GUI and core logic
├── compiler.pro # Qt project file for configuring the build process
├── icons # Contains icons (like the file upload icon)
│ └── upload-icon.png # The file upload icon used in the GUI
├── install.sh # Shell script for installing dependencies and building the application
└── Photon-App.cpp # Main source file for the chat application logic
```

## Contribution

Feel free to fork this repository, create a pull request, and contribute enhancements or fixes. If you encounter any bugs or issues, please open an issue so we can track it.

## License

This project is open-source and available under the [MIT License](LICENSE).