Files
Telegram-Final-Project/README.md
T
2025-09-07 23:04:49 +03:30

113 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Telegram-Clone Project
## Introduction
This is the final project of our [**Advanced Programming**](https://github.com/Advanced-Programming-1403) course at Shahid Beheshti University.
Its a clone of the famous messaging application **Telegram**, developed in **Java** and designed with **JavaFX**.
The project implements both **client-side** and **server-side** logic, featuring real-time messaging, saved messages, contacts, groups, and channels.
---
## Objectives
Here is a list of concepts that were practiced and implemented throughout the project:
- Object-Oriented Programming (OOP) concepts
- Database design and integration
- Multithreading and concurrency control
- Socket programming for client-server communication
- Designing graphical user interfaces with **JavaFX**
- Data handling and persistence with **PostgreSQL**
- Real-time events and message synchronization
---
## Pre Requirements
- **Java** (JDK 23 or higher)
- **PostgreSQL** (for database)
- **JavaFX SDK** (for GUI)
- **IntelliJ IDEA**
- **Gradle** as the build system
---
## Database design
![photo_2025-09-07_20-10-33](https://github.com/user-attachments/assets/64f786c4-91a6-4a7c-955f-e6b646baa5e8)
---
## Implementation
The project has 3 main parts:
1. **Telegram Client**
- JavaFX-based UI replicating Telegrams layout (intro, login, chats, sidebar, overlays).
- Handles sending/receiving requests through sockets.
- Displays messages, saved chats, groups, and user profiles.
2. **Telegram Server**
- Multithreaded server managing client connections concurrently.
- Processes requests, accesses the database, and returns structured JSON responses.
- Includes a server log showing all events and queries in real-time.
3. **Sockets**
- All client-server communication is handled via sockets.
- Each request/response follows a structured JSON protocol.
- Supports multiple users communicating simultaneously.
---
## Creating GUI
The GUI was developed entirely with [**JavaFX**](https://en.wikipedia.org/wiki/JavaFX), SceneBuilder, and custom CSS.
Features include:
- Light/Dark theme switching
- Responsive sidebar navigation
- Overlays (e.g., Saved Messages, My Profile, Blocked Users)
- Round avatars and icons styled to match Telegrams UI
---
## Database Structures
Implemented with **PostgreSQL**. Main tables include:
- **users** stores account information
- **messages** stores chat messages with sender, receiver, timestamp, and status
- **private_chat** for one-on-one conversations (including Saved Messages)
- **group_chat / channel** for group and channel features
- **message_receipts** to track read/delivery status
*(SQL schema files are provided in the project repo)*
---
## Presentation
[This]() is the link to the slides used for the project presentation.
---
## How to Run the Code
1. Clone the repository.
2. Set up the PostgreSQL database using the provided `init.sql`.
3. In IntelliJ IDEA (with Gradle):
- Run `MainServer` first. You should see `Listening ...` in the console.
- Run `TelegramApplication`. The intro screen (with “Start Messaging”) will appear.
4. Login/Register to start chatting.
---
## Contributors
- Course Instructor: [Dr. Saeed Reza Kheradpisheh](https://www.linkedin.com/in/saeed-reza-kheradpisheh-7a0b18155/)
- Project Mentor: [Farid Karimi](https://github.com/Farid-Karimi/)
- Team Members:
- [Asal Lotfi](https://github.com/AsalLotfi/)
- [Partow Roshani](https://github.com/PartowRoshani/)
- [Shima Morevej](https://github.com/shimamoravvej/)
---
## Date/Time
Summer of 2025 (Version 1.0)
---
## Resources
- [JavaFX Documentation](https://openjfx.io/)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [Gradle Build Tool](https://gradle.org/)
- [Telegram Design Reference](https://telegram.org/)