Welcome to the Crispy Crumbs TCP Recommendation Server. This server is built using C++ to handle the video recommendation functionality, providing users with personalized suggestions based on their watch history.
- Ofek Avan Danan
- Zohar Mzhen
- Dolev Menajem
This recommendations server must be activated before running the Node.js server for Crispy Crumbs. Without it, the Node.js server will display random videos instead of personalized recommendations.
- C++ Compiler: A C++ compiler that supports C++20 or later (e.g., GCC, Clang, MSVC). We suggest running it on WSL
- Make (optional): To build the server using a Makefile.
- Clone the repository from GitHub: CrispyCrumbsTCP
git clone https://github.com/Mzhenian/CrispyCrumbsTCP.git
-
Navigate to the Project Directory:
cd CrispyCrumbsTCP -
Build the Server:
- Use Make test to build the server and run it:
make test - Alternatively, without Make using the command:
g++ -std=gnu++20 -pthread -g -fdiagnostics-color=always WebServer/main.cpp recommendationEngine.cpp jsonConverter.cpp -o server.out && ./server.out
- Use Make test to build the server and run it:
After initial build, you can also run the server :
<path to project>/CrispyCrumbsTCP/server.outEnsure that the server is running before starting the Node.js backend server to enable video recommendations.
- The recommendations server listens for requests from the Node.js server and provides video recommendations based on user data.
- Both the recommendations server and the Node.js server must be on the same local network or properly configured to communicate.
- Keep the recommendations server running to ensure recommendations are displayed correctly in the app.
Get the full Crispy Crumbs experience by using the following repositories:
- CrispyCrumbsServer (Node.js Backend)
- CrispyCrumbsWeb (React Frontend)
- CrispyCrumbsAndroid (Android App)
graph TD;
NodeJS_Server["NodeJS Server - Backend"] <--> React_Web["React Frontend"];
NodeJS_Server <--> Android_App["Android App - Frontend"];
NodeJS_Server <--> TCP_Server["TCP C++ Recommendation Server - Backend"];
The recommendation engine in the TCP server uses a combination of user behavior and video popularity to generate personalized recommendations. Here's an overview of how the algorithm works:
User Watch History: The engine keeps track of the videos each user has watched and compares the user's watch history with other users' histories. It identifies videos that were watched by users who have similar watch patterns, helping to surface relevant content.
The recommendation engine handles each request from the Node.js server in real time, ensuring that the suggested videos are up-to-date with the latest trends and the user's most recent viewing habits.
Our team worked collaboratively to create the recommendation server. The server is designed to handle requests from the Node.js backend and respond with relevant video recommendations in real time, enhancing the user experience on Crispy Crumbs.
The journey was challenging but rewarding, as it allowed us to deepen our understanding of networking, recommendation algorithms, and cross-language integration.
- Jira Board:
Jira project