Git Product home page Git Product logo

iiradia / packranks Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 0.0 164.12 MB

PackRanks provides the best fit course for an NC State student who is trying to decide which course to take, based on official grade distribution data and services that provide professor ratings.

Home Page: http://www.packranks.com

License: GNU Affero General Public License v3.0

Python 4.24% JavaScript 10.52% CSS 44.81% HTML 0.21% Less 19.98% SCSS 20.24%
python react mongodb heroku bootstrap selenium-python material-ui flask-api flask-cors css

packranks's Introduction

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.

packranks's People

Contributors

h-suthar avatar iiradia avatar mathewchanda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

packranks's Issues

Make PackRanks an Org

Allow for future separate repositories for a side project related to packranks. ie. scraping scripts, helper modules.

Filter by specific course number

Should help filter out unrelated classes. Helpful for targeting specific class especially ones with many sections.
Current behavior is a fixed range. Could have a radio button for range/single number and swap drop down for max/min text box, or use drop down to help fill textboxes but allow manual textboxes input.

About page readability

Currently it is a text on image situation in the about page.
Todo (Pick one)

  • Create white box cards for each topic (how we help you, about our rating systems)
  • Create card for the whole page

Sidenote: add drop shadow to cards would be nice (css shadow)

Update your .gitignore

Hey,

your repository seems to have some stuff that shouldn't be in the main repo (virtual environments and pycache and .DS_STORE)

Might be a good idea to remove these.

Visualize RateMyProfessor

Make it easier so user don't have to hover. There's deadspace left anyway.
Could be progress bar style made up of css rectangles etc.. or get those pre-made ones.

Use domain email

With free custom domain email hosting from Zoho Mail I think it is fair to say that long term using @packranks.com email can be free given low enough email volumes. Besides, I think @gmail that sends mass emails are very often categorized as spam either by Google themselves or others.

Readability of Charts

The charts on the table are not properly visible and there is no scrollbar to see the charts
image

Create an HTML version of PackRanks

The website currently shows "You need to enable JavaScript to run this app." when NoScript is enabled. I suggest html.packranks.com to be the redirect URL for PackRanks HTML.

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.