diff --git a/README.md b/README.md index 03213e3ec..d26d206e7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # PopcornPicks🍿: Your Destination for Movie Recommendations -[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/CSC-510-G55/PopcornPicks/graphs/commit-activity) [![Contributors Activity](https://img.shields.io/github/commit-activity/m/se24ncsu/PopcornPicks)](https://github.com/CSC-510-G55/PopcornPicks/pulse) [![GitHub issues](https://img.shields.io/github/issues/se24ncsu/PopcornPicks.svg)](https://github.com/CSC-510-G55/PopcornPicks/issues?q=is%3Aopen+is%3Aissue) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/se24ncsu/PopcornPicks.svg)](https://github.com/CSC-510-G55/PopcornPicks/issues?q=is%3Aissue+is%3Aclosed) ![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/CSC-510-G55/PopcornPicks) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT) [![Unittest](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/unittest.yml/badge.svg?branch=main&event=push)](https://github.com/se24ncsu/PopcornPicks/actions/workflows/unittest.yml) [![codecov](https://codecov.io/gh/CSC-510-G55/PopcornPicks/graph/badge.svg?token=7HIC094S2R)](https://codecov.io/gh/CSC-510-G55/PopcornPicks) [![GitHub release](https://img.shields.io/github/release/CSC-510-G55/PopcornPicks.svg)](https://github.com/CSC-510-G55/PopcornPicksreleases/) [![StyleCheck: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint) [![HitCount](https://hits.dwyl.com/se24ncsu/PopcornPicks.svg)](https://hits.dwyl.com/CSC-510-G55/PopcornPicks) ![GitHub contributors](https://img.shields.io/github/contributors/CSC-510-G55/PopcornPicks) ![GitHub Release Date - Published_At](https://img.shields.io/github/release-date/se24ncsu/PopcornPicks) ![GitHub repo size](https://img.shields.io/github/repo-size/se24ncsu/PopcornPicks) [![Black](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/black.yml/badge.svg)](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/black.yml) [![Prettier](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/prettier.yml/badge.svg)](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/prettier.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/260d558f17ae5e1027e5/maintainability)](https://codeclimate.com/github/CSC-510-G55/PopcornPicks/maintainability) [![GitHub closed issues by-label](https://img.shields.io/github/issues-closed-raw/se24ncsu/PopcornPicks/bug?color=green&label=Squished%20bugs)](https://github.com/CSC-510-G55/PopcornPicks/issues?q=is%3Aissue+label%3Abug+is%3Aclosed) ![Discord](https://img.shields.io/discord/1143966088695124110) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.14028522.svg)](https://doi.org/10.5281/zenodo.14028522) +[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/CSC-510-G55/PopcornPicks/graphs/commit-activity) [![Contributors Activity](https://img.shields.io/github/commit-activity/m/se24ncsu/PopcornPicks)](https://github.com/CSC-510-G55/PopcornPicks/pulse) [![GitHub issues](https://img.shields.io/github/issues/se24ncsu/PopcornPicks.svg)](https://github.com/CSC-510-G55/PopcornPicks/issues?q=is%3Aopen+is%3Aissue) [![GitHub issues-closed](https://img.shields.io/github/issues-closed/se24ncsu/PopcornPicks.svg)](https://github.com/CSC-510-G55/PopcornPicks/issues?q=is%3Aissue+is%3Aclosed) ![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/CSC-510-G55/PopcornPicks) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT) [![Unittest](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/unittest.yml/badge.svg)](https://github.com/se24ncsu/PopcornPicks/actions/workflows/unittest.yml) [![codecov](https://codecov.io/gh/CSC-510-G55/PopcornPicks/graph/badge.svg?token=7HIC094S2R)](https://codecov.io/gh/CSC-510-G55/PopcornPicks) [![GitHub release](https://img.shields.io/github/release/CSC-510-G55/PopcornPicks.svg)](https://github.com/CSC-510-G55/PopcornPicksreleases/) [![StyleCheck: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint) [![HitCount](https://hits.dwyl.com/se24ncsu/PopcornPicks.svg)](https://hits.dwyl.com/CSC-510-G55/PopcornPicks) ![GitHub contributors](https://img.shields.io/github/contributors/CSC-510-G55/PopcornPicks) ![GitHub Release Date - Published_At](https://img.shields.io/github/release-date/se24ncsu/PopcornPicks) ![GitHub repo size](https://img.shields.io/github/repo-size/se24ncsu/PopcornPicks) [![Black](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/black.yml/badge.svg)](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/black.yml) [![Prettier](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/prettier.yml/badge.svg)](https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/prettier.yml) [![GitHub closed issues by-label](https://img.shields.io/github/issues-closed-raw/se24ncsu/PopcornPicks/bug?color=green&label=Squished%20bugs)](https://github.com/CSC-510-G55/PopcornPicks/issues?q=is%3Aissue+label%3Abug+is%3Aclosed) ![Discord](https://img.shields.io/discord/1143966088695124110) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.14220693.svg)](https://doi.org/10.5281/zenodo.14220693) -drawing +drawing Popcorn Picks is your ultimate movie buddy, delivering handpicked film recommendations tailored to your taste! Powered by a lightning-fast algorithm, it makes discovering new favorites and hidden gems a breeze. Dive into a world of movie magic, where you can explore personalized insights, keep track of what you love, and even share recommendations with friends via email. Whether you're a casual viewer or a true cinephile, Popcorn Picks takes your movie-watching experience to the next level—effortlessly and enjoyably! # Contents @@ -55,116 +55,105 @@ PopcornPicks: Your movie recommender! Input movies, get tailored suggestions, an ## Documentation -Checkout for project documentation [here](https://github.com/CSC-510-G55/PopcornPicks/tree/main/docs) +Checkout for project documentation [here](https://github.com/CSC-510-G55/PopcornPicks/tree/project3/docs) ## Project Presentation Videos ### Project Overview -[https://github.com/CSC-510-G55/PopcornPicks/blob/main/asset/animated_video.mp4 +[https://github.com/CSC-510-G55/PopcornPicks/blob/project3/asset/animated_video.mp4 ](https://github.com/user-attachments/assets/ed0c3f79-b31f-4876-ba03-b2e640cf8333) ### New Features 2 minute demo -[![why contribute video](https://img.youtube.com/vi/M13zDRgjNGE/0.jpg)](https://www.youtube.com/watch?v=M13zDRgjNGE) +[Demo Video](https://drive.google.com/file/d/1_Ucj2hUpYx73PhojnefEAXbMKWmEwo63/view?usp=sharing) ## Project Description -PopcornPicks is a user-friendly movie recommender that curates a tailored list of 10 movie predictions based on user-provided movie preferences. Users can input their favorite movies, and our algorithm refines recommendations based on feedback—Liked, Disliked, or Yet To Watch. Additionally, PopcornPicks offers the convenience of emailing the recommended movies, enhancing the movie-watching experience. For the system architecture and other details, please refer to our documentation [here](https://github.com/CSC-510-G55/PopcornPicks/tree/main/docs) +PopcornPicks is a user-friendly movie recommender that curates a tailored list of 10 movie predictions based on user-provided movie preferences. Users can input their favorite movies, and our algorithm refines recommendations based on feedback—Liked, Disliked, or Yet To Watch. Additionally, PopcornPicks offers the convenience of emailing the recommended movies, enhancing the movie-watching experience. For the system architecture and other details, please refer to our documentation [here](https://github.com/CSC-510-G55/PopcornPicks/tree/project3/docs) ## What docs View our documentation outlining each class and function of PopcornPicks here -- [Backend](https://github.com/CSC-510-G55/PopcornPicks/blob/main/docs/backend.md) -- [Frontend](https://github.com/CSC-510-G55/PopcornPicks/blob/main/docs/frontend.md) -- [Testing](https://github.com/CSC-510-G55/PopcornPicks/blob/main/docs/testing.md) +- [Backend](https://github.com/CSC-510-G55/PopcornPicks/blob/project3/docs/backend.md) +- [Frontend](https://github.com/CSC-510-G55/PopcornPicks/blob/project3/docs/frontend.md) +- [Testing](https://github.com/CSC-510-G55/PopcornPicks/blob/project3/docs/testing.md) -View our autogenerated doco here [Doco](https://github.com/CSC-510-G55/PopcornPicks/blob/main/docs/generated_docs/) +View our autogenerated doco here [Doco](https://github.com/CSC-510-G55/PopcornPicks/blob/project3/docs/generated_docs/) ## How docs -### MongoDB integration +### Rating Filter -#### NEW in project 2 +#### NEW in project 3 -**The project now uses MongoDB Atlas, which is highly scalable and fast.** - +**The project now has a rating (PG13, R, etc) filter in the recommendation page (/search_page).** + ### Docker Container -#### NEW in project 2 +#### NEW in project 3 **The application is containerized using Docker, ensuring consistent deployment across all environments.** - + -### Collaborative Filtering +### Sharing List of Movies -#### NEW in project 2 +#### NEW in project 3 -**Implements an intelligent recommendation system using collaborative filtering to suggest personalized movie choices.** +**Implemented /lists page where you can add multiple movies to a list, and you get a sharable permanent link for that list.** ### React Components -#### NEW in project 2 - **Utilizes modern React components with hooks for efficient state management and reusable UI elements.** - + ### Streaming Links -#### NEW in project 2 - **We provide streaming links directly to the appropriate website for easier access.** - + ### Dashboard -#### NEW in project 2 - **Features an analytics dashboard that displays user-related data like genres.** - + ### Create an Account **Users can now create accounts, persisting data including their movie reviews and recommendations** - + ### Login to account **The user can log in to their account securly with encrypted passwords stored in our database** - + ### Profile and Friends **The user can add friends, view the movies reviewed by the friends, and see their reviewed movies in their profile** - + ### Wall **The user can interact with other users, by viewing a community sourced wall of recent moview reviews** - + ### Movie Recommendation Mechanism **The user selects upto 5 movies to get a tailored watchlist and provide feedback for the same** - + ### Email Notifier **The user sends his/her movies feedback via an email (Notify Me button)**
- Email Notifier - Email + Email Notifier + Email
-## Project 2 Delta - -Check out the significant changes that we made for Project 2 [here](https://github.com/CSC-510-G55/PopcornPicks/blob/main/proj2/Proj2Changes.md) - -Our grading scorecard can be found [here](https://github.com/CSC-510-G55/PopcornPicks/blob/main/proj2/README.md) ## Tech stack Used👨‍💻: @@ -198,7 +187,7 @@ Git Clone the Repository Step 2: Follow the setup instructions in the installation documentation - https://github.com/CSC-510-G55/PopcornPicks/blob/main/docs/install.md + https://github.com/CSC-510-G55/PopcornPicks/blob/project3/docs/install.md OR @@ -217,21 +206,18 @@ docker run -d -p 3000:3000 -p 5001:5001 popcorn PopcornPicks is a dynamic project with endless possibilities for expansion and enhancement. Here are some exciting avenues for future development: -1. **Friends Recommend Movies**: Let users get personalized movie recommendations from their friends for a more social experience! - -2. **Parental Controls & Kids Mode**: Family-friendly viewing! Add parental controls and a curated kids’ section to make Popcorn Picks safe and fun for all ages! - -3. **Dynamic Movie Collections**: Always stay relevant! Offer seasonal and trending collections like “Halloween Specials” and “Oscar Winners” based on user interests. +1. **Create and Manage Watchlists**: Allow users to create and manage their personal watchlist of movies they want to watch later. -4. **Fun Trivia & Movie Quizzes**: Keep users engaged with interactive trivia and quizzes about movies they've watched! +2. **Shared Watchlists**: Let users create shared watchlists with friends or public lists, where multiple users can add movies to the same list. -5. **Tech Improvement**: Supercharge the backend with Express and Node.js for smoother, seamless integration with the React frontend! Upgrade the UI from bootstrap to tailwind to material UI. +3. **Watch History**: Keep track of movies users have watched and suggest movies based on watch history. +4. **Movie Discussions and Forums**: Create a space where users can discuss movies they’ve watched, ask for recommendations, or debate opinions. The future of PopcornPicks is full of potential, and we invite developers, movie lovers, and anyone passionate about cinema to join us in making this platform the ultimate movie companion. ## Contribute to the Project! -Please refer to the [CONTRIBUTING.md](https://github.com/CSC-510-G55/PopcornPicks/blob/main/CONTRIBUTING.md) if you want to contribute to the PopcornPicks source code. Follow all the guidelines mentioned in the same and raise a pull request, we would love to look at it ❤️❤️! +Please refer to the [CONTRIBUTING.md](https://github.com/CSC-510-G55/PopcornPicks/blob/project3/CONTRIBUTING.md) if you want to contribute to the PopcornPicks source code. Follow all the guidelines mentioned in the same and raise a pull request, we would love to look at it ❤️❤️! ## Contributors diff --git a/asset/header_display.png b/asset/header_display.png index e0449b96b..1b89fdd12 100644 Binary files a/asset/header_display.png and b/asset/header_display.png differ diff --git a/asset/rating_filter.png b/asset/rating_filter.png new file mode 100644 index 000000000..d327c70b3 Binary files /dev/null and b/asset/rating_filter.png differ diff --git a/proj2/Proj2Changes.md b/proj2/Proj2Changes.md deleted file mode 100644 index 2a9ef76a1..000000000 --- a/proj2/Proj2Changes.md +++ /dev/null @@ -1,96 +0,0 @@ -# Project 2 Changes - -## Major Infrastructure Updates - -### MongoDB Atlas Integration -We've migrated our database infrastructure to MongoDB Atlas, bringing several significant advantages: -- **Simplified Setup**: Developers can now connect to the database without complex local MongoDB installations -- **Enhanced Scalability**: Automatic scaling capabilities to handle growing data loads -- **Built-in Redundancy**: Automated backups and data replication across multiple regions -- **Improved Security**: Enterprise-grade security features including encryption at rest and in transit -- **Monitoring Dashboard**: Real-time performance metrics and database health monitoring - -### Docker Implementation -The application has been containerized using Docker, revolutionizing our deployment process: -- **Consistent Environment**: Eliminates "it works on my machine" problems -- **Easy Deployment**: Single command deployment across any platform -- **Version Control**: Container versioning for easy rollbacks -- **Resource Isolation**: Better resource management and application security -- **Microservices Ready**: Prepared for future microservices architecture -- **Simplified Updates**: Easy updates and patches through container replacement - -## Enhanced Features - -### Collaborative Filtering System -Our recommendation engine has been completely revamped with collaborative filtering: -- **User Similarity Matrix**: Identifies users with similar taste patterns -- **Item-Based Recommendations**: Suggests movies based on similar movie characteristics -- **Hybrid Approach**: Combines content-based and collaborative filtering for better accuracy -- **Cold Start Handling**: Special algorithms for new users and new movies -- **Real-time Updates**: Recommendations update as users interact with the platform -- **Scalable Architecture**: Designed to handle millions of user-movie interactions - -### React Frontend Overhaul -Complete UI/UX redesign using React: -- **Component-Based Architecture**: Reusable components for consistent design -- **State Management**: Implemented Redux for efficient state handling -- **Responsive Design**: Mobile-first approach ensuring compatibility across devices -- **Performance Optimization**: Lazy loading and code splitting for faster load times -- **Accessibility**: WCAG 2.1 compliant components and interactions -- **Modern UI Elements**: Material-UI integration for polished look and feel - -### User Dashboard & Analytics -Comprehensive user dashboard providing detailed insights: -- **Viewing Patterns**: Visual representation of genre preferences -- **Watch Time Analytics**: Tracking of movie consumption patterns -- **Recommendation Insights**: Explanation of why certain movies are recommended -- **Social Integration**: Friend activity and shared interests -- **Custom Lists**: Ability to create and share movie lists -- **Progress Tracking**: Watch history and watchlist management - -### Enhanced Testing Framework -Robust testing implementation covering multiple scenarios: -- **Unit Tests**: Coverage for all core functions -- **Integration Tests**: End-to-end testing of major features -- **Negative Testing**: Extensive error handling verification -- **Load Testing**: Performance under various user loads -- **Security Testing**: Vulnerability assessment scenarios -- **Mobile Testing**: Cross-platform compatibility verification - -## Database Schema - -### Users Table -This table stores user information including username, email, and encrypted password. -|idUsers|username|email|password| -|--|----|----|--------| -|.|.|.|.| - -### Ratings Table -This table stores ratings made by users, including userID, movieID, rating, and comments. -|idRatings|user_id|movie_id|score|review|time| -|--|--|--|--|------------|---| -|.|.|.|.|.|.| - -### Movies Table -This table stores movie information including names, ID, and IMDB handle. -|idMovies|name|imdb_id| -|--|---------|---| -|.|.|.| - -### Friends Table -This table manages user relationships and friend connections. -|idFriendship|idUsers|idFriend| -|--|--|--| -|.|.|.| - -## Documentation -- Comprehensive setup guide for MongoDB Atlas integration -- Docker deployment documentation -- API documentation with Swagger -- Frontend component documentation -- Testing framework setup and execution guide -- Performance optimization guidelines -- Security best practices -- Troubleshooting guide - -The infrastructure and feature updates represent a significant advancement in our application's capabilities, focusing on scalability, user experience, and maintainability. The MongoDB Atlas integration combined with Docker containerization ensures a robust and easily deployable system, while the enhanced recommendation engine and React frontend provide users with a modern, intuitive interface. Comprehensive testing and detailed documentation ensure the system's reliability and ease of maintenance. \ No newline at end of file diff --git a/proj2/README.md b/proj2/README.md deleted file mode 100644 index e6813d6f3..000000000 --- a/proj2/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# Project 3 Rubric - -Prepare a markdown with **three** columns: - -- Column1 has all the following points PLUS all the points from the - [Software Sustainability Evaluation](https://docs.google.com/forms/d/e/1FAIpQLSf0ccsVdN-nXJCHLluJ-hANZlp8rDKgprJa0oTYiLZSDxh3DA/viewform). -- Column2 is your self-assessment. For each items, score yourself zero (none), one (a litte), two (somewhat), three (a lot). -- Column3 is for any links you are adding to support your claim in column two. -- At the top, show the sum of column2, - - -I'll create a complete table with all entries from the document. - -| Notes | Score | Evidence | -|-------|--------|----------| -| Video | 3 | On README.md | -| Workload is spread over the whole team | 3 | in GH | -| Number of commits | 3 | in GH | -| Number of commits: by different people | 3 | in GH | -| Issues reports: there are many | 3 | https://github.com/se24ncsu/PopcornPicks/issues | -| Issues are being closed | 3 | https://github.com/se24ncsu/PopcornPicks/issues | -| Docs: doco generated, format not ugly | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Docs: what: point descriptions of each class/function | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Docs: how: mini-tutorials for common use cases | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Docs: why: docs tell a story, motivate the whole thing | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Docs: short video, animated, hosted on repo | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Use of version control tools | 3 | https://github.com/se24ncsu/PopcornPicks/commits/main/ | -| Test cases exist | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/test | -| Test cases are routinely executed | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/.github/workflows/unittest.yml | -| Issues are discussed before closing | 3 | https://github.com/se24ncsu/PopcornPicks/issues/31 | -| Chat channel exists | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/asset/chat.png | -| Test cases: handling failing cases | 2 | https://github.com/se24ncsu/PopcornPicks/issues | -| Evidence of team using same tools | 3 | | -| Evidence of cross-codebase work | 3 | | -| Short release cycles | 2 | | -| .gitignore used | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/.gitignore | -| INSTALL.md exists | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/docs/install.md | -| LICENSE.md exists | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/LICENSE | -| CODE-OF-CONDUCT.md exists | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/CODE_OF_CONDUCT.md | -| CONTRIBUTING.md exists | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/CONTRIBUTING.md | -| README.md contains required info | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/README.md | -| DOI badge exists | 3 | | -| Style checker badges | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/README.md | -| Code formatter badges | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/README.md | -| Syntax checker badges | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/README.md | -| Code coverage badges | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/README.md | -| Other analysis tool badges | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/README.md | -| Clear software overview | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Clear user type description | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Case studies published | 2 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Project name unique | 3 | https://tmsearch.uspto.gov/search/search-results | -| Project name free of trademark violations | 3 | https://tmsearch.uspto.gov/search/search-results | -| Deployable without building | 3 | | -| Software available for free | 3 | https://github.com/se24ncsu/PopcornPicks | -| Source code publicly available | 3 | https://github.com/se24ncsu/PopcornPicks | -| Hosted on established platform | 3 | https://github.com/se24ncsu/PopcornPicks | -| Documentation clearly available | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Quick start guide exists | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Extensive deployment documentation | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs | -| Comprehensive command guide | 3 | https://github.com/se24ncsu/PopcornPicks/tree/main/docs/generated_docs | -| Troubleshooting information | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/docs/Troubleshooting.md | -| API documentation | 3 | N/A | -| Documentation under revision control | 1 | | -| Release history published | 1 | | -| User help documentation | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/CODE_OF_CONDUCT.md | -| Support description available | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/CONTRIBUTING.md | -| Support email exists | 3 | Popcornpicksse24@gmail.com | -| Multiple support email recipients | 3 | | -| Public ticketing system | 3 | https://github.com/se24ncsu/PopcornPicks/issues | -| Publicly visible ticketing | 3 | | -| Modular architecture | 3 | https://github.com/se24ncsu/PopcornPicks/blob/main/asset/system_architecture.svg | -| Accepted coding standard | 3 | Pylint is used | -| Open data formats supported | 3 | CSV, JSON, HTML, SVG, GIF | -| Open communication protocols | 3 | HTTP | -| Cross-platform compatible | 3 | Run using Docker | -| Accessibility standards met | 3 | | -| Documentation accessibility | 3 | | -| Source code in revision control | 1 | | -| Releases are repository snapshots | 1 | | -| Releases tagged | 1 | | -| Stable branch maintained | 3 | | -| Repository backup exists | 3 | | -| Build instructions public | 3 | | -| Automated build tools | 3 | | -| Deployment instructions public | 3 | | -| Third-party dependencies listed | 3 | | -| Dependency versions listed | 3 | | -| Dependency details comprehensive | 3 | | -| Dependency management tool used | 3 | | -| Post-build/deploy tests | 0 | | -| Automated test suite | 3 | | -| Periodic test framework | 3 | | -| Continuous integration | 3 | | -| Public test results | 3 | | -| Manual tests documented | 3 | | -| Regular project updates | 0 | | -| Project/user statistics | 3 | | -| Success stories provided | 0 | | -| Partners/collaborators listed | 0 | | -| Project publications listed | 0 | | -| Third-party publications listed | 0 | | -| Source code notifications | 3 | | -| Open source governance model | 0 | | -| External contributions accepted | 3 | | -| Contributions policy exists | 3 | | -| Public contributions policy | 3 | | -| Contributor copyright maintained | 3 | | -| Clear copyright statement | 3 | | -| Source files include copyright | 3 | | -| Clear license statement | 3 | | -| Open source license | 3 | | -| OSI-approved license | 3 | | -| Source files include license | 3 | | -| Citation information | 3 | | -| Project roadmap | 0 | N/A | -| Funding information | 0 | N/A | -| Deprecation announcements | 0 | N/A | diff --git a/project3/PopcornPicks.pdf b/project3/PopcornPicks.pdf new file mode 100644 index 000000000..4c13868ed Binary files /dev/null and b/project3/PopcornPicks.pdf differ diff --git a/project3/Project3_Changes.md b/project3/Project3_Changes.md deleted file mode 100644 index 2a9ef76a1..000000000 --- a/project3/Project3_Changes.md +++ /dev/null @@ -1,96 +0,0 @@ -# Project 2 Changes - -## Major Infrastructure Updates - -### MongoDB Atlas Integration -We've migrated our database infrastructure to MongoDB Atlas, bringing several significant advantages: -- **Simplified Setup**: Developers can now connect to the database without complex local MongoDB installations -- **Enhanced Scalability**: Automatic scaling capabilities to handle growing data loads -- **Built-in Redundancy**: Automated backups and data replication across multiple regions -- **Improved Security**: Enterprise-grade security features including encryption at rest and in transit -- **Monitoring Dashboard**: Real-time performance metrics and database health monitoring - -### Docker Implementation -The application has been containerized using Docker, revolutionizing our deployment process: -- **Consistent Environment**: Eliminates "it works on my machine" problems -- **Easy Deployment**: Single command deployment across any platform -- **Version Control**: Container versioning for easy rollbacks -- **Resource Isolation**: Better resource management and application security -- **Microservices Ready**: Prepared for future microservices architecture -- **Simplified Updates**: Easy updates and patches through container replacement - -## Enhanced Features - -### Collaborative Filtering System -Our recommendation engine has been completely revamped with collaborative filtering: -- **User Similarity Matrix**: Identifies users with similar taste patterns -- **Item-Based Recommendations**: Suggests movies based on similar movie characteristics -- **Hybrid Approach**: Combines content-based and collaborative filtering for better accuracy -- **Cold Start Handling**: Special algorithms for new users and new movies -- **Real-time Updates**: Recommendations update as users interact with the platform -- **Scalable Architecture**: Designed to handle millions of user-movie interactions - -### React Frontend Overhaul -Complete UI/UX redesign using React: -- **Component-Based Architecture**: Reusable components for consistent design -- **State Management**: Implemented Redux for efficient state handling -- **Responsive Design**: Mobile-first approach ensuring compatibility across devices -- **Performance Optimization**: Lazy loading and code splitting for faster load times -- **Accessibility**: WCAG 2.1 compliant components and interactions -- **Modern UI Elements**: Material-UI integration for polished look and feel - -### User Dashboard & Analytics -Comprehensive user dashboard providing detailed insights: -- **Viewing Patterns**: Visual representation of genre preferences -- **Watch Time Analytics**: Tracking of movie consumption patterns -- **Recommendation Insights**: Explanation of why certain movies are recommended -- **Social Integration**: Friend activity and shared interests -- **Custom Lists**: Ability to create and share movie lists -- **Progress Tracking**: Watch history and watchlist management - -### Enhanced Testing Framework -Robust testing implementation covering multiple scenarios: -- **Unit Tests**: Coverage for all core functions -- **Integration Tests**: End-to-end testing of major features -- **Negative Testing**: Extensive error handling verification -- **Load Testing**: Performance under various user loads -- **Security Testing**: Vulnerability assessment scenarios -- **Mobile Testing**: Cross-platform compatibility verification - -## Database Schema - -### Users Table -This table stores user information including username, email, and encrypted password. -|idUsers|username|email|password| -|--|----|----|--------| -|.|.|.|.| - -### Ratings Table -This table stores ratings made by users, including userID, movieID, rating, and comments. -|idRatings|user_id|movie_id|score|review|time| -|--|--|--|--|------------|---| -|.|.|.|.|.|.| - -### Movies Table -This table stores movie information including names, ID, and IMDB handle. -|idMovies|name|imdb_id| -|--|---------|---| -|.|.|.| - -### Friends Table -This table manages user relationships and friend connections. -|idFriendship|idUsers|idFriend| -|--|--|--| -|.|.|.| - -## Documentation -- Comprehensive setup guide for MongoDB Atlas integration -- Docker deployment documentation -- API documentation with Swagger -- Frontend component documentation -- Testing framework setup and execution guide -- Performance optimization guidelines -- Security best practices -- Troubleshooting guide - -The infrastructure and feature updates represent a significant advancement in our application's capabilities, focusing on scalability, user experience, and maintainability. The MongoDB Atlas integration combined with Docker containerization ensures a robust and easily deployable system, while the enhanced recommendation engine and React frontend provide users with a modern, intuitive interface. Comprehensive testing and detailed documentation ensure the system's reliability and ease of maintenance. \ No newline at end of file diff --git a/project3/Rubric.md b/project3/Rubric.md index 1161a7625..8467cebff 100644 --- a/project3/Rubric.md +++ b/project3/Rubric.md @@ -28,7 +28,7 @@ | The file CODE-OF-CONDUCT.md lists rules of behavior for this repo; e.g. see example | 3 | https://github.com/CSC-510-G55/PopcornPicks/blob/project3/CODE_OF_CONDUCT.md | | The file CONTRIBUTING.md lists coding standards and lots of tips on how to extend the system without screwing things up; e.g. see example | 3 | https://github.com/CSC-510-G55/PopcornPicks/blob/project3/CONTRIBUTING.md | | The file README.md contains all the following | 3 | https://github.com/CSC-510-G55/PopcornPicks/blob/project3/readme.md | -| Video | 3 | https://drive.google.com/file/d/1ex5-YLe7Nk8qPSVuC0A4Oy5Kil-VJqz9/view | +| Video | 3 | https://drive.google.com/file/d/1_Ucj2hUpYx73PhojnefEAXbMKWmEwo63/view?usp=sharing | | DOI badge: exists. To get a Digitial Object Indentifier, regiser the project at Zenodo. DOI badges look like this: Zenodo doi badge | 3 | https://zenodo.org/records/14220693 | | Badges showing your style checkers | 3 | https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/prettier.yml | | Badges showing your code formatters. | 3 | https://github.com/CSC-510-G55/PopcornPicks/actions/workflows/pylint.yml |