Giter Club home page Giter Club logo

trustworthy-product-reviews's Introduction

Trustworthy Product Reviews

Group Members: Mariam Almalki, John Breton, Cameron Davis, Ryan Godfrey, Sarah Jaber

Tools

Project Description

Users review Products. These products could be identified by a link to the website where they are listed. A review consists of a star-rating and some text. Users can also "follow" other users whose reviews they find valuable. A user can then list products for a given category by average rating, or the average rating of only the users they follow. A user can also list the users whose ratings are the most "similar" to their own using the Jaccard distance (google it!). Product reviews can also be ranked according to the similarity score of the people who reviewed them. Users can also list the most followed users. The degree of separation (see Kevin Bacon!) according to the "follow" link can also be displayed next to each reviewer (the assumption is that the "closer" a user is to you, the more trustworthy he/she should be to you).

Milestone Objectives

Milestone 3

  • Add an Unfollow button
  • Add a user page for all users in the system, not just the user currently logged in
  • Add the ability to rank product reviews based on the similarity score of the people who have reviewed them
  • Make all dropdowns persist after they have been used
  • Add an external link to the actual product page for any product on in the service
  • Unify the styling of the site

Current ER Diagram

ER Diagram

Date: April 8th, 2022

Current UML Class Diagram of Models

Class Diagram

Date: April 8th, 2022

trustworthy-product-reviews's People

Contributors

john-breton avatar mariam05 avatar cameronfdavis avatar sjsysc avatar rmjgod avatar dependabot[bot] avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

trustworthy-product-reviews's Issues

Weekly Scrum - March 9, 2022

This is the weekly scrum issue, per the requirements of the project. Be sure to answer the following questions in 1-2 sentences:

  • What have I done this week? (with link(s) to the relevant GitHub Issue(s))
  • What will I do next week? (with link(s) to the relevant GitHub Issue(s))
  • What is holding me back? (if applicable)

Update Documentation

As the application evolves and new functionality is introduced, it is important to ensure that our documentation stays up to date. This should include an updated ER diagram and UML class diagram to reflect the state of the application following the completion of the milestone 3 objectives.

Weekly Scrum - March 24, 2022

This is the weekly scrum issue, per the requirements of the project. Be sure to answer the following questions in 1-2 sentences:

  • What have I done this week? (with link(s) to the relevant GitHub Issue(s))
  • What will I do next week? (with link(s) to the relevant GitHub Issue(s))
  • What is holding me back? (if applicable)

Create a Login/Registration Page

A simple login/registration page should be implemented. This functionality relies on #3 and will insert into the User table upon registration. Should a user already exist, an appropriate error will be displayed to the user. This will direct insertions and lookups of the backend databases being persisted by the application.

Create Appropriate Tests Cases for the Application

Appropriate tests should be created that are automatically run on push to the repo via Maven. These should cover an appropriate breadth of the code while confirming functionality, with specific importance for testing the persistence of the created database.

  • Create test cases for the backend models
  • Create test cases for the RegistrationController
  • Create test cases for the UserController
  • Create test cases for the ProductController

Create a Landing Page

The landing page is the page a user will encounter upon successfully logging into the system. The current plan for the landing page is to include a sidebar where the user can quickly navigate to products or reviews they have previously written, however, the actual pages for the reviews a user has written and the product pages are separate issues.

Create a User Page

The user page should display the reviews a user has reviewed thus far if any. As this is not meant to be a social platform, nothing apart from the username of the user and their reviews need to be displayed on the page. This will require interaction with the backend databases being persisted by the application.

Implement a Persistent Database

This issue should cover the creation of a database to track three tables. These tables are:

  • A User table
  • A Product table
  • A Reviews table

Full Site Navigation Via HTML

Ensure that the NavBar is universal across the site (where a user has authentication) and can be used to navigate the entire site without the need for manually entering any URL changes.

Create UML Documentation for the Application

For any created aspects of the application, UML documentation will need to be made to represent the system for each iteration. These should be focused on the backend functionality where appropriate, with a general focus on class diagrams above all else. The database schema can be auto-generated via IntelliJ and is not as much of a concern on the documentation front.

Add an Unfollow Button

This button should appear after a user is following another user. The option to remove that other user for the main user's following list should occur when the button is pressed.

Create a Product Page

A product page should be created to display product reviews to the user. This page should simply display a product title, with an image of the product, along with the reviews for the product. These reviews should include the score (out of 5 stars), alongside the username of the user who reviewed the product. This will require interaction with the backend databases being persisted by the application.

Implement Jaccard Distance Calculations

An important aspect of the application is being able to follow users. Alongside this functionality, a user should be able to see whose ratings are most "similar" to theirs. This is done by calculating the Jaccard distance between users to determine similarity.

Create and Update Appropriate Tests Cases for the Application

To adhere to good CI practices and to generally benefit from the practice, it is vital that our tests are exhaustive and up to date. Throughout the development of milestone 2, tests should be updated to address any added functionality, and new tests should be created to test any features that fall outside of the scope of the classes created for milestone 1.

Update UML Documentation for the Application

As the application evolves and new functionality is introduced, it is important to ensure that our documentation stays up to date. This should include an updated ER diagram and UML class diagram to reflect the state of the application following the completion of the milestone 2 objectives.

Refactoring Pass

As the project reaches its completion, a general refactoring pass should occur once the final features have been added to the system to ensure naming consistency, minimal code reuse, JavaDoc completion, among other good practices.

Weekly Scrum - April 7, 2022

This is the weekly scrum issue, per the requirements of the project. As this is the final iteration of the project, there is no need to discuss future work as all objectives should be complete by the submission date. Be sure to answer the following questions in 1-2 sentences:

  • What have I done this week? (with link(s) to the relevant GitHub Issue(s))
  • What was holding me back? (if applicable)

Add an External Link to the Products

Per the project requirements, products should provide a hyperlink to the website where they are available for purchase. This is likely a quick addition, requiring a minor modification to the backend Product model class and some minor HTML changes to the product page.

Add a User Page

Ideally, a user should be able to navigate to another user's profile and see all of their reviews.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.