This project is a the final project of the Advanced Programing course at SBU. The goal of this project is to make a clone of Telegram that look like it as close as possible. We made this desktop program with Java programing language, JavaFX library for frontend, socket for Network and MySQL for the program's database. We hope this repository and this project be useful for you and enjoy using out program and our codes.❤️
| Layer | Thechnology |
|---|---|
| Client (UI) | |
| Server | |
| Database | |
| Networking | |
| API |
/java
┃ ┃
┃ ┣ /Controllers # JavaFX controller files
┃ ┃
┃ ┣ /Database # database schema
┃ ┃
┃ ┣ /Models
┃ ┃
┃ ┣ /ToolBox # API and useful tools
┃ ┃
┃ ┣ /Views # .fxml files
┃ ┃
┃ ┣ /Server
┃ ┃
┃ ┣ /resources
┃ ┣ /css # css style
┃ ┃
┃ ┣ /img # project's images
┃ ┃
┃ ┗ /stickers # in program chat's stickers
┃
┗ /Readme.md
Here are the core features included in the Telegram app 📨:
- 🔒 Hashing Passwords (your paasword is hashed with jcrypt)
- 💬 Private Chats (one-to-one messaging)
- 👥 Group Chats (chat with a group of people)
- 📢 Channels (for broadcasting messages to large audiences)
- 🖼️ Media Sharing (photos, videos, files, documents, music, voice messages)
- 🎙️ Voice Messages (send voice messages)
- 😀 Stickers & GIFs (use sticker and send gifs)
- 🌙 Dark / Light Mode (themes)
- 🔍 Powerful Search (across chats and messages)
- 📂 Saved Message (save your important messages)
- 🖥️ Desktop Support
- 🔔 Mute Options (mute any chat, group or channel you want)
- 🛠️ Account Management (usernames, profile pictures, bio)
- ⚡ Fast & Responsive UI/UX
- 📡 Socket Networking (for communication)
- 🏗️ OOP-Based Architecture
Follow these steps to set up and run the project locally ⚡:
-
Install JDK (Java Development Kit)
- Download and install the latest JDK from Oracle ☕
- Make sure to set the environment variable
JAVA_HOME.
-
Install JavaFX SDK
- Download JavaFX SDK from GluonHQ 📦
- Extract it and place it somewhere safe (you’ll link it later in IntelliJ).
-
Install Maven
- Download and install Maven from Maven Official Site 📑
- Add Maven to your system’s PATH.
-
Install IntelliJ IDEA
- Download IntelliJ IDEA from JetBrains 💻
- Open the project folder in IntelliJ.
-
Configure JDK and JavaFX in IntelliJ
- Go to
File > Project Structure > SDKsand add your JDK. - Add JavaFX libraries from the JavaFX SDK
libfolder to the project.
- Go to
-
Set Run Configuration
- Navigate to
Run > Edit Configurations. - Add a new Application configuration.
- Set the Main Class to
Mainfrom the Controllers package. - Add VM Options:
--module-path "path_to_your_javafx_lib" --add-modules javafx.controls,javafx.fxml- ✅ Enable Allow multiple instances.
- Navigate to
-
Start the Server
- Run
Server.javafrom the Server package 🖧
- Run
-
Run the Client App
- Run
Main.javafrom the Controllers package▶️
- Run
🎉 Boom! The app should now be running — enjoy your Telegram clone!
Sadra seyyed Tabaei, Meraj Derafshi & Amin Asadi (contributers)
MIT License Copyright (c) 2025 Sadra Seyedtabaei



