Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CON-1777-MARKDOWN-Neo4flix-Java-Project #2190

Merged
merged 10 commits into from
Oct 10, 2023
61 changes: 61 additions & 0 deletions subjects/java/projects/neo4flix/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## Neo4flix

### Objectives
The aim of this project is to develop a movie recommendation engine using Neo4j, Spring Boot, Angular, microservices and Docker. The project will be divided into the following phases:

**Data modeling:** In this phase, the data model for the movie recommendation engine will be designed. This will involve creating nodes and relationships to represent the different entities in the system, such as movies, users, and ratings.

**Development of microservices:** In this phase, the microservices for the different components of the engine will be developed. These microservices will be responsible for tasks such as reading and writing data from the database, processing recommendations, and generating user interfaces.

**Front end development:** In this phase, the frontend user interface for the movie recommendation engine will be developed. This will involve using Angular to build a web application that allows users to search for movies, view recommendations, and rate movies.

**Deployment of the microservices:** In this phase, the microservices will be deployed to a Docker container. This will allow them to be easily deployed and scaled.

### Instructions
### 1. Microservices development
The microservices for the movie recommendation engine must be developed as follows:
- **Movie microservice:** This microservice will be responsible for reading and writing data about movies from the database. It will also be responsible for generating recommendations for users based on the movies they have rated.
- **User microservice:** This microservice will be responsible for reading and writing data about users from the database. It will also be responsible for storing the ratings that users have given to movies.
- **Rating microservice:** This microservice will be responsible for reading and writing data about ratings from the database.
- **Recommendation microservice:** This microservice will be responsible for generating recommendations for users based on the movies they have rated and the movies that are related to those movies.

CRUD operations must be developed for all of the microservices, also make sure to set up a secure authentication and authorization backend like `OAuth2` or `JWT`.

### 2. User interface
The web app should have a user-friendly interface that is easy to use. The following features should be included:
- A login page where users can sign in to the application.
- A registration page where users can create a new account.
- A home page where users can see a list of movies.
- A search bar where users can search for movies.
- A page for each movie where users can see the movie's details, such as the title, release date, genre, and rating.
- A page for rating movies.
- A page for viewing recommendations.

**Functionnalities**
The movie recommendation engine must have the following features:
- Users can search for movies by title, genre, release date, and other criteria.
- Users can view recommendations for movies based on the movies they have rated.
- Users can rate movies.
- Users can filter recommendations by genre, release date, and other criteria.
- Users can save movies to a watchlist.
- Users can share recommendations with friends.

### 3. Security Measures

The web app should be secure and protect users' data. The following security measures should be implemented:
- Use HTTPS to secure all communication between the client and the server. Consider using free SSL certificates tools (e.g. Let's Encrypt).
- Use `OAuth 2.0` or `JWT` for authentication.
- Store user data in a secure database.
- Use strong passwords and enforce password complexity requirements.
- Implement two-factor authentication (2FA).

### 4. Testing
The web app should be tested to ensure that it is working properly. The following tests should be performed:
- Functionality testing: Ensure that the web app is able to perform all of its intended functions.
- Usability testing: Ensure that the web app is easy to use and navigate.
- Security testing: Ensure that the web app is secure and protects users' data.

### Resources
[Build a Cypher recommendation engine](https://neo4j.com/developer/cypher/guide-build-a-recommendation-engine/)
[Neo4j Documentation](https://neo4j.com/docs/)
[Neo4j auroradb cloud console](https://neo4j.com/cloud/platform/aura-graph-database/?ref=neo4j-home-hero)
48 changes: 48 additions & 0 deletions subjects/java/projects/neo4flix/audit/README.md
akhossanX marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#### Functional
##### Download the project from its dedicated repository, run docker to initiate the web application and try to navigate it via the browser or using Postman.
###### Does the application work properly and you are able to navigate its core functionalities ?
##### Data and Design: Tell the auditee to show a graph representation of the database and check the following
###### Are nodes and relationships effectively representing movies, users, and ratings?
###### Are the relationships between nodes well represented and have the appropriate data attributes?
##### Movie Microservice
###### Does the Movie microservice effectively handle reading and writing movie data from the database?
###### Is it capable of generating accurate movie recommendations based on user ratings?
##### User Microservice
###### Does the User microservice handle user data operations (read and write) correctly?
###### Does it store user ratings for movies as intended?
##### Rating Microservice
###### Is the Rating microservice correctly handling data operations related to movie ratings?
##### Recommendation Microservice
###### Has Spring Data Neo4j ,or any other library, been employed to facilitate the interaction between Spring Boot and the Neo4j database?
###### Is Neo4j OGM used to map Java objects to Neo4j nodes and relationships?
###### Has one of the algorithms in Neo4j Graph Algorithms Library (content-based, collaborative filtering...) been employed to implement an efficient and accurate recommendation algorithm?
###### Does the auditee understand enough the Cypher Query Language used to express complex recommendation logic?
###### Is the Recommendation microservice generating accurate movie recommendations based on user ratings and related movies?
##### Search Functionality
###### Can users search for movies by various criteria, such as title, genre, release date, etc.?
##### Movie Details
###### Are movie details, including title, release date, genre, and rating, accurately displayed on the movie details page?
##### Rating Movies
###### Does the page for rating movies work as intended?
##### Viewing Recommendations
###### Can users view movie recommendations based on their ratings?
##### Saving Movies
###### Is there a feature allowing users to save movies to a watchlist?
##### Sharing Recommendations
###### Can users easily share movie recommendations with friends?
##### User-Friendly Interface
###### Is the Neo4flix web application's interface user-friendly and intuitive?
##### Web pages
###### Do essential web pages, including login, registration, home, movie details, movie rating, and recommendations, function as expected?
#### Security
##### Authentication and authorization
###### Is OAuth 2.0 or JWT properly implemented for user authentication?
###### Is two-factor authentication (2FA) implemented for enhanced security?
##### Password Security
###### Are strong password policies, including complexity requirements, enforced?
##### Data encryption
###### Is sensitive data protected, is HTTPS used and a valid SSL certificate is provided?
zanninso marked this conversation as resolved.
Show resolved Hide resolved
#### Testing
##### Test thouroughly the application against any possible flaws or edge cases, try as much tests as you can imagine.
###### Does the application appropriately handle errors coming from unexpected input or malicious use of its functionalities?
###### Is it functionning gracefully on stress tests?
Loading