This project implements a Twitter-like recommendation system. It uses a microservices architecture with a focus on graph-based recommendations. The system suggests hashtags and users to follow based on user tweets and sentiments.
- Post and view tweets.
- Get recommendations based on user activity and sentiment analysis.
- Perform sentiment analysis on tweets.
- Microservices-based architecture for scalability and maintainability.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Python 3.10
- Neo4j
- MongoDB Cloud
- Kafka
- NPM
- React.js / Node.js Framework
- Apache Spark (for Spark Streaming)
- Neo4j, Mongo DB Connectors
- Docker Container
- Clone the repository: git clone https://github.com/elamraniadnane1/Project_3.git
- Navigate to the project directory and install the required Python packages: 4.cd Project_3 5.pip install -r requirements.txt
- Start the Neo4j and MongoDB databases (in a cloud), and ensure Kafka and Spark Streaming are running and Docker as well.
- Install all the requirements
- Run the microservices For more details please consult the official report & the video
- Access the web application at
http://localhost:PORT
. The port depend on the local cfg of each user. - Post tweets, and view recommendations and sentiment analysis results.
- Node.js - The web framework used.
- React.js - An open-source JavaScript library used for building user interfaces, particularly for single-page applications where you need a fast and interactive user experience. It's maintained by Facebook and a community of individual developers and companies.
- Neo4j - Graph database.
- MongoDB - Document database.
- Kafka - Streaming platform.
- Spark - Unified analytics engine.
We use GitHub for versioning.
- Adnane El Amrani - AUI MSSE Student - elamraniadnane1
- Ayoub Maimmadi - AUI MSSE Student - AyoubMaimmadi
This document provides an outline of the project report, detailing the structure and content of each section. The report is structured into several key sections, each focusing on a different aspect of the project.
-
Project Team
- Table with team members and their respective roles and contributions.
-
Project Definition
- Brief description of project goals.
- Functional and non-functional requirements.
- Requirements on architecture.
-
Project Design
- Discussion on data models, encoding, and querying.
- Configurations for scalability and reliability in NoSQL databases.
- Justification for any architectural deviations from the proposed design.
-
Project Implementation
- Subsections for each component's deployment.
- Key configuration parameters and considerations.
- Libraries used, major code snippets.
- Data models, encoding techniques.
- Unit tests and integration tests.
- Subsection on test dataset preparation.
-
Implementation Limitations
- Discussion on parts not implemented, performance issues, bugs, hardcoded data.
-
Project Demo and Codebase
- Check Canvas