Skip to content

AESMatias/ConnectX-Project

Repository files navigation

ConnectX Project 🚀

ConnectX it's an chat application, the project it's made in PyQt6 framework and works in conjuntion with FastAPI and MySQL as DBMS.

Therefore, in order to run it, you need use this repository as backend: https://github.com/AESMatias/ConnectX-Backend The steps to run the backend server are basically the same: just create your .env file according to the env.sample file inside the repository, and run the main.py file. Do you need an MySQL instance running first.

YouTube Video

Alt text

https://www.youtube.com/watch?v=Nll7__gmBSY

Warning: This project is just a proof of concept that lacks of the minimum requirements and security implementations of any real application. Therefore, this code should not be used, under any circumstance, in any real environment.

The code is open source and free to use under the license attached in this repository

Authors✨

@AESMatias & @emonkey0

Tags:

  • FastAPI 🚄
  • Uvicorn 🐍
  • PyQt6 🐉
  • Qt
  • Python 🐉
  • sqlalchemy 🗃️
  • Chat Application
  • Sockets

How to Get Started 🌟

  1. Clone this repository to your local machine.
  2. Install the required dependencies using pip install -r requirements.txt. 📦
  3. Run the main.py script inside the main folder. 🏃
  4. Enjoy 🌐

Features ✨

  • Real-time socket implementation.

Next things to do and fix 🚀

  • Fix the quality issue that occurs when we upload an image.
  • Fix the looping of the music.

Improve the memory optimization:

Modularize the code and solve the problem of hight cohesion and low coupling:

Design:

  • We need to add the option that allows maximise or just shrink the windows dimensions.

Security: message inputs, endpoints, etc...

  • We need to ensure that the two sockets (to send and recibe messages) for each user connected were absolute closed through de server (maybe using a periodic func), because if this isn't done, we're having a big vulnerability breach that allows the users collapse the RAM used by the server, blowing up the entire server.

Chat:

  • When someone send a message than contains ":" and more, the app does not work anymore because of the split method, it's very easy to fix though.
  • When a new message income, we need to refresh the two instances> the pixmap and the animated label with the new picture that has been changed from our own account session.
  • If the user scrolls up, then we need to calculate the current height dinamically obtained through a function, thus allowing them to scrolls up the chat history, because currently there's a func that scrolls the whole chat down every 15 seconds.

Some Screenshots

Screenshot 2 Screenshot 2

Attributions and Acknowledgments:

Settings icon: Settings icons created by Freepik - Flaticon

Volume icon: Speaker icons created by Pixel perfect - Flaticon

Volume icon muted: Mute icons created by Pixel perfect - Flaticon

Send message icon: Send icons created by kmg design - Flaticon

Undo (back) icon: Back button icons created by icon_small - Flaticon

Reply icon: Reply icons created by Andrean Prabowo - Flaticon

Delete icon: Recycle bin icons created by Uniconlabs - Flaticon

Close Window icon: Close icons created by Vectors Market - Flaticon

Keys Icon: Smart key icons created by Infinite Dendrogram - Flaticon https://www.flaticon.com/free-icon/key_11131969

Wallpaper at Edit Profile Frame: Photo by Dominik Lange on Unsplash

Wallpaper at The initial Frame: Photo by Conny Schneider on Unsplash