Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dor-sketch/usocial
A C++ coursework project on social media system simulation, featured in my professional portfolio.
https://github.com/dor-sketch/usocial
Last synced: about 1 month ago
JSON representation
A C++ coursework project on social media system simulation, featured in my professional portfolio.
- Host: GitHub
- URL: https://github.com/dor-sketch/usocial
- Owner: Dor-sketch
- License: mit
- Created: 2023-09-27T19:16:30.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-29T23:08:08.000Z (7 months ago)
- Last Synced: 2024-11-21T18:14:13.571Z (about 1 month ago)
- Language: C++
- Homepage:
- Size: 973 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π USocial - A Basic Social Media System in C++
USocial is a basic social media system simulation written in C++. It offers a suite of functionalities that mirror core features of popular social media platforms. This project allows users to engage in typical social media activities, from posting text and multimedia πΈπ₯π΅ to adding friends π« and exchanging messages βοΈ.
Originally conceived as a coursework project for the *Open University of Israel* course *"Defensive System-Programming (20937)"*, it now serves a dual role, also being a part of a job application portfolio for students.
---
π **Table of Contents**
- [π§ Technologies Used](#-technologies-used)
- [π Features](#-features)
- [π USocial](#-usocial)
- [π€ User](#-user)
- [π Media](#-media)
- [π Post](#-post)
- [π¬ Message](#-message)
- [βοΈ Compilation and Usage](#οΈ-compilation-and-usage)
- [New Qt GUI](#new-qt-gui)
- [π₯ Sample Execution](#-sample-execution)
- [π₯ Contributing](#-contributing)
- [π License](#-license)
- [π¬ Contact](#-contact)---
## π§ Technologies Used
- **C++**: The primary language used, incorporating C++14 features.
- **Smart Pointers**: Usage of `std::shared_ptr` and `std::weak_ptr` to manage resources efficiently and prevent memory leaks.
- **Standard Library Containers**: Leveraged `std::map` and `std::list` for data storage and management.
- **Exception Handling**: Integrated throughout for handling potential error scenarios.
- **Object-Oriented Principles**: The architecture is built upon principles like inheritance and polymorphism.
## π Features
### π USocial
- Acts as a hub for user management.
- Facilitates user registration, with options for standard or business status.
- Allows user removal from the system.
- Provides user retrieval functionality via ID.
- Offers a display of all users, primarily for debugging purposes.### π€ User
- Users can create posts with text and multimedia content.
- Provides capabilities to add or remove friends.
- Enables users to view posts from their friends.
- Facilitates the sending and receiving of messages.
- Business users get the added perk of broadcasting messages to multiple users simultaneously.### π Media
- An abstract base class for various media types.
- Currently supports Photo πΈ, Audio π΅, and Video π₯ subclasses.
- Each media type has a unique method to showcase its content.### π Post
- Symbolizes user-generated content that may be a blend of text and media.
### π¬ Message
- Denotes the exchange of messages between users, be it text or media.
---
## βοΈ Compilation and Usage
### New Qt GUI
The project now includes a new Qt GUI, which is the recommended way to interact with the system. To launch the GUI, please make sure you have Qt Creator installed, then open the project file `project.pro` and run the project.
---
A `Makefile` is included to streamline the build process. To set the system in motion, adhere to the following sequence:
```bash
make clean
```## π₯ Sample Execution
You can run an example test py pressing `Run Test` from the Qt GUI.
![Alt text](./images/gui.png) | ![Alt text](images/test_success.png) |
:-------------------------:|:-------------------------:|A new window will be promped when the test is done. You can see the results of the test in the console Real-time.
A preconfigured main function offers a walkthrough of the USocial system's multifaceted features. This includes registering users, crafting posts, forging friendships, initiating message exchanges, and simulating potential error scenarios (e.g., repetitive friend additions or sending messages to non-friends).
## π₯ Contributing
Contributions are heartily welcomed. Start by forking the project, instate your modifications, and initiate a pull request.
## π License
USocial is distributed under the MIT License.
## π¬ Contact
Feedback, suggestions, or inquiries? Please direct them to [email](mailto:[email protected]).