A C++ implementation of a privacy-first messaging platform โ reimagining Saraha with a data-structures twist. Built as a command-line interface (CLI) application, this project focuses on anonymous, ID-only messaging with efficient use of STL containers and clean file handling.
โ
Built for a university Data Structures course
๐ป Developed in C++
๐ค User Registration & Login
Ensures unique usernames
Includes password validation & security
Credentials stored securely (no plaintext passwords)
๐ฌ Anonymous Messaging
Messages display only the senderโs ID, keeping identities private
Option to show sender's name if they opt in (via a checkbox)
โฉ๏ธ Undo Feature
Only the sender can undo their most recent message
Undo removes the message pair (sender + recipient copy)
๐ฅ Contact Management
Manually add/remove contacts
Removing a contact does not delete message history
๐ Search & Sort
Search contacts by ID
Sort contacts by number of exchanged messages
โญ Favorites
Mark/unmark favorite messages
Automatically removes the oldest favorite when limit is reached
๐พ Persistent Storage
Loads data from files on launch
Writes updated data to files on exit
๐ง Data Structures Used Structure Purpose unordered_map Fast lookup for users and messages vector Stores contact lists and messages deque Manages favorite messages (FIFO removal) stack Undo last message actions ๐ Tech Stack
Language: C++
IDE: Qt Creator
Standard Library: STL (C++ Standard Template Library)
๐๏ธ File Structure
users.txt โ Stores user credentials and info
messages.txt โ Holds message logs
contacts.txt โ Tracks contact relationships
favorites.txt โ Manages favorite messages
๐ How It Works
Pure CLI-based interface (CMD version)
No names or photos by default โ just ID-based messaging
Optionally reveal senderโs name through a "Show Name" checkbox
Made By
Yomna El-Kobesy
Mariam Muhammad
Mariam sayed
Arwa Ahmed
Sara Saeed
Esraa Ragb
Safaa Muhammud