Messenger

This project consists of developing a graphical client-server application that allows two clients to communicate securely, with unique IDs, message logging, support for emojis and image transmission, and end-to-end encryption.

Phase 1: Client-Server Architecture Setup

Set up the basic client-server structure to allow multiple clients to connect and communicate through a central server.

  • Implement a server that can accept multiple client connections simultaneously
  • Assign a unique ID to each connected client
  • Ensure proper connection and disconnection handling

Functional Output: Server running and multiple clients can connect, each receiving a unique ID


Phase 2: Text Message Transmission

Enable clients to send and receive text messages to/from a specific client ID.

  • Send messages via the server as a relay
  • Display incoming messages in the client GUI in real-time
  • Ensure messages are delivered to the correct recipient ID

Functional Output: Clients can send and receive text messages in real-time


Phase 3: Message Logging and History

Store all sent and received messages in a file for each client to allow tracking message history.

  • Save messages in a structured format including sender ID, receiver ID, timestamp, and message content
  • Load message history when a client reconnects
  • Allow viewing the conversation history for a specific client ID

Functional Output: Persistent log files per client with complete message history


Phase 4: Graphical User Interface

Develop a GUI for clients to interact with messages and manage conversations.

  • Display conversation threads with proper formatting for sender and receiver
  • Include input fields for composing messages and selecting recipient IDs
  • Provide an interface to view message history per client

Functional Output: A functional client GUI where users can send, receive, and view messages easily


Phase 5: Encryption and Security

Implement end-to-end encryption for all messages to ensure secure communication.

  • Encrypt messages before sending and decrypt upon receiving
  • Manage encryption keys securely on client-side
  • Ensure that only the intended recipient can read the messages

Functional Output: Secure encrypted messaging between clients with proper decryption on delivery


Phase 6: Multimedia Support

Extend the application to support emojis and image transmission.

  • Enable sending and displaying emojis in messages
  • Implement image sending and receiving, saving images alongside messages
  • Ensure multimedia messages are properly encrypted and logged

Functional Output: Clients can send and receive emojis and images securely, with all content logged in message history files