A Clone of Telegram written from the ground up, with a goal of security. Split into frontend and backend
This Telegram clone is written in Python for a computer science course at Ohio State University, CSE 3461. The purpose of this clone is to satisfy the requirements of that lab.
- Server and Client communicate via
TCP - Server must respond to a minimum of 5 different commands
- configuration file for port the server will listen on
- Server startup message
- Either prompt or use a configuration file to allow client to pick which server to connect to and port
- Server and Client work from 2 different IP addresses
| Assignment | Points |
|---|---|
| Software submission | 75 |
| Demonstration / Review meeting | 25 |
| Bonus Client-side GUI | +2 |
| Bonus User Authorization | +2 |
| Bonus Server-side command logging | +1 |
| Total | 105 |
Language: Python
Platform: Agnostic, but favoring Linux/Unix, depends on GUI library choice
- Built on top of a custom implementation of a Web App Framework similar to Flask*
- Server follows
RESTprinciples - Utilize
Sqlite3as the DBMS - Verifiy Users Email addresses
- Utilize Python-RSA to maintain end to end encryption of messages
- Follow best practices for security
- Use websockets to send and recieve messages from client
Web App Framework documentation
- Utilize PyQT for GUI
- Built on top of a custom implementation of HTTP Requests similar to Requests*
- Utilize Python-RSA to maintain end to end encryption of messages
- Behave and look similarly to Telegram-desktop
- Allow
Markdownin chat messages Unfinished - Allow emoji in chat messages along with an emoji selector menu Unfinished
HTTP Request Library documentation
* Objectively WORSE
- Python 3.8
- pip
- pipenv
cd frontend/
pipenv install
pipenv shell
cd ../
python -m frontendcd backend/
pipenv install
pipenv shell
cd ../
python -m backend- Switch form polling the server every so many seconds to
websockets- Switch to websockets circumvents all the hacky refreshing
- Add Markdown support
- Add emoji menu
- refractor Qt mess
- Code generated by Qt Designer isn't pythonic and has massive issues
- Testing
- Implement settings window
- allow updating account (server side already supports)
- allow deleting account (server side already supports)
- allow resending email verification
- Fix sending email verification (for some reason doesn't work with Gmail)
- Writing abstractions for the backend and learning how
HTTP Requestswork and are processed was incredibly interesting - GUI design and layout was tedious, difficult, and the most time consuming
All Icons are from Icons8






