Skip to content

Latest commit

 

History

History
206 lines (172 loc) · 14.6 KB

README.md

File metadata and controls

206 lines (172 loc) · 14.6 KB

PackRanks

This website provides a comprehensive assortment of course options for a user who is identifying a potential academic path, based on multifarious quantifiable metrics and third-party services that provide numerical professor metadata.

Project Website: http://packranks.com

Table of Contents

About


PackRanks Wishlist

The Problem

When students plan their courses for the upcoming semesters, there are many important factors to consider. However, pertinent information is decentralized across many resources.

North Carolina State University's course planning interface, MyPack Portal, is infamously difficult to navigate and forces students to reference multiple external sources. PackRanks addresses these shortcomings, and provides a venue for crystal clear and pristine quality information that NC State students value.

NC State undergraduates need a more extensive and easy-to-use course search tool to simplify the tedious and overcomplicated course discovery process.

Solution

We built PackRanks, a web app that allows students to find and plan their courses for the upcoming semester, combining a comprehensive course search with a meticulous email notification service to provide up-to-date and accurate information in a convenient and practical manner.

PackRanks aims to help students feel more informed and confident when choosing courses, while simultaneously aggregating an abundance of resources into a concise presentation.

Technology Stack

  • We utilized many prevalent concepts found in professional React development, including a modular component design, ReactDOM, ReactRouter, HTTP requests, hooks, and protected routes.
  • We implemented a multitude of front-end components for viewing a course table, logging in and signing up a user, and managing their Wishlist information.
  • We wrote custom scripts in Python and utilized libraries such as Pandas, NumPy, smtplib, json, and pymongo.
  • We connected our Flask endpoints to the front-end as well as one-off and worker dynos on Heroku in order to implement a variety of email notification and database management scripts.
  • We built an automated web crawler to obtain and monitor specific information updates 24/7.
  • We integrated our web scraping system with our MongoDB cluster and implemented a secure data communication protocol.
  • We implemented a RESTful API, including endpoints for user authentication and retrieval of personalized user data.
  • We preserved the integrity of our API endpoints and implemented a custom cybersecurity model using JSON Web Tokens (JWT) and session management best practices.
  • We prioritized technical documentation and software maintainability in order to simplify the process of continuous integration and deployment.
  • We designed an advanced database model to store information on thousands of course sections across NC State.
  • We managed the merging of multiple MongoDB collections, continous updates to our database server instance.
  • We maintained a stable paradigm for our database collection set in order to manage new users and Wishlist information as well as course changes.
  • We deployed our application front-end and back-end to a cloud platform using Heroku web dynos.
  • We also launched our web-scraping script built using Selenium to run 24/7 on a Heroku worker dyno.
  • We built valuable skills in multilingual deployment configuration and compatibility using cloud computing technologies.
  • We used Bootstrap as an effortless method for styling PackRanks, so that we could focus on delivering the highest standard of information.
  • We envisioned a sleek and clean design, so we applied the Material-UI components and design principles in our React front-end.

Conceptual Approach

Research

  • We began our research process by identifying potential academic and extracurricular needs for NC State students.
  • As members of the NC State community, we utilized our everyday experiences to highlight areas for improvement in students' academic planning.

Design

  • Once we pinpointed the exact need that PackRanks could fill in the course planning space, we immediately collaborated on the best way to deliver a simplistic user experience.
  • We determined which websites we would need to extract data from to serve as the backbone of PackRank's comprehensive information distribution.
  • Although at the start of our project, we had a limited knowledge of creating a full-stack project, through PackRanks we all built an applied understanding of the intricacies of web scraping and web development technologies.

Test

  • Throughout the PackRanks development process, we utilized strong database quality assurance methodologies as well as end-to-end testing.
  • We implemented a diabolical testing strategy that involved coverage of all test cases and endpoints so that we could diagnose exactly where any bugs were coming from.
  • With the current release of PackRanks, we are using a crowdsourced approach to focus our attention on crucial features that most impact the user experience.

Iterate

  • In future iterations of PackRanks, we aim to gather as much feedback from the community as possible and integrate the NC State community's ideas with the next version of our product.
  • We have created an exhaustive Continuous Integration & Delivery (CI/CD) plan for subsequent releases of PackRanks, to ensure a streamlined and convenient process for both the development team and the users.

Discover the power of PackRanks in our Features section!

Features

Rank Courses by Difficulty

You can customize which set of courses you are looking for and view a wealth of information presented in a ranked table. Additionally, PackRanks enables you to efficiently find classes that fulfill general education requirements.


Course Table

Save Prospective Courses

You can add a course to your Wishlist to view it later, and to receive open-seat notifications. Plan your upcoming semesters' schedules, and, in the near future, simplify the intricacies of NC State degree requirements through our degree plan feature!


Wishlist

Get Notified When Seats Open

Get an email notification whenever a seat in a waitlisted or closed class in your Wishlist becomes open. Never miss out on a notable course opportunity!


Email Notification Example

Upcoming Features

  • Degree Audit
  • Class Preferences
  • Mock-Scheduler

Usage

Searching For Courses


1. Select Term that you are looking for a class in
2. Search for GEP or by course department
3. GEP:
 - Select GEP
 - Choose number of courses to view
4. Department:
 - Search for or select department
 - Enter course number range (or same number for a specific course)
 - Choose number of courses to view

Table


Populated Table

  • The PackRanks table displays all pertinent information regarding a group of NC State courses, including links to multiple websites providing further specific details.

Table Links

  • Rating
    • The Rating column, sorted in descending order, displays a conclusive rating based on grade distribution data from North Carolina State University's Registration & Records department. More information on our rating can be found in our Rating section.
  • Catalog Link
    • The Catalog Link column contains the course code (e.g. ENG 101) as well as a link to that section's NC State course catalog entry, which contains precise information such as a course description directly from the university.
  • RateMyProfessor Link
    • The RateMyProfessor Link column has the name of the professor teaching the course listed, as well as a link to their RateMyProfessor profile. RateMyProfessor is a professor review site with crowdsourced data from millions of students nationwide.
  • Location
    • The Location column states where the class will be taught. If the location is at an on-campus building location, the column also shows a link to the Google Maps page for that location.

Rating System

  • We designed the rating system to be simple for users to understand as well as to be the most accurate measure of difficulty for NC State courses.
  • We use newly updated grade distribution data provided by NC State Registration & Records to compute a rating of each course that measures how easy or difficult the class is.
  • We sort our course results for GEPs and specific courses by that rating, providing users with a simple and effective way to find the easiest GEPs or any courses they are looking for!

Wishlist

  • We created the Wishlist as a convenient way for users to store all the details on courses that they are interested in taking in future semesters.
  • We implemented a feature that reminds a user when a closed course on their Wishlist opens a new seat! This way, users will never miss opportunities to register for class they are interested in taking.
  • We are currently working on an extension to the Wishlist such that users can plan out their entire course of study simply by entering their major! This feature would combine the core functionality of PackRanks with major and degree plans offered at NC State.

Authors

  • Ishaan Radia - Sophomore at North Carolina State University studying Statistics and Computer Science. - LinkedIn - GitHub

  • Mathew Chanda - Sophomore at North Carolina State University studying Computer Science - LinkedIn - GitHub

  • Harshal Suthar - Sophomore at North Carolina State University studying Computer Science - LinkedIn - GitHub

  • Anthony Wang - Sophomore at North Carolina State University studying Statistics - LinkedIn - GitHub

License

This project is licensed under the GNU Affero General Public License Version 3.0. You can find more details in the LICENSE.md file.