GithubHelp home page GithubHelp logo

giridharrnair / profstatsutd Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 12 MB

๐Ÿ“š Source code for the ProfStats UTD chrome extension, a quick and easy way to view UT Dallas professor ratings and grade distributions.

Home Page: https://chromewebstore.google.com/detail/profstats-ut-dallas/doilmgfedjlpepeaolcfpdmkehecdaff

License: MIT License

JavaScript 51.05% HTML 0.58% CSS 1.50% Dockerfile 0.64% Go 37.74% Python 8.49%
react sqlite utd vite chrome-extension gin gin-gonic golang vitejs-react ratemyprofessors

profstatsutd's Introduction

ProfStatsUTD

Screenshot

Chrome Web Store

ProfStats is a handy Chrome extension with 100+ users, merging professor ratings and grade distributions at the University of Texas at Dallas for simplified access to course information for students.

Frontend Overview

Vite React Chakra UI Axios

The front end ensures a streamlined interface with features like backend performance optimization, client-side validation for data accuracy, and CRXJS for Chrome extension hot module reloading during development.

Deployment

GitHub Actions automates staging on the Chrome Web Store upon new Github version releases, utilizing the Chrome-Webstore-Upload-Action. While manual review submission is required, the uploading process is fully automated.

Backend Overview

Go Python SQLite Docker Azure

Utilizing the Golang Gin framework, the backend fetches ratings from the Rate My Professor GraphQL API and queries aggregated grade distribution from an SQLite database.

Database

The database is dynamically generated by a Python script in db_setup before the backend server is started, using only Python's standard library and the grade distributions in raw_data.

Note

The grade distributions in raw_data are from the UTD Grades repository

Deployment

Dockerized and deployed on the Azure Web App Service after running the Python scripts that generate and test the SQLite database, using GitHub Actions for CI/CD.

Local Development

Make sure you have the following software installed on your machine:

  • Node.js
  • Golang
  • Python

Steps:

  1. Clone the repository:

    git clone https://github.com/GiridharRNair/ProfStatsUTD
  2. Navigate to the project directory:

    cd ProfStatsUTD
  3. Install dependencies:

    npm run install-packages

    This command installs the dependencies for the go backend and the react frontend

  4. Start the server and extension concurrently:

    npm run dev

    This project uses the concurrently npm package to run the server and extension concurrently

  5. Enable Developer Mode in Chrome:

    • Navigate to chrome://extensions/.
    • Enable Developer Mode.
  6. Load the extension:

    • Unpack the dist folder.
    • Start using the extension for seamless testing and development.

Please feel free to open an issue or submit a pull request if you have any suggestions or feedback.

profstatsutd's People

Contributors

gauthamrnair avatar giridharrnair avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

profstatsutd's Issues

On Stream Review

Hardcoded Values in Repo

  • Starting from raw data, it would be nice to find a way to not have to commit the data itself but instead create some sort of process to retrieve the data - I'm not sure how you found this data so it might not be possible, but I'm sure you understand why it's suboptimal to have a ton of data just hardcoded in your repo
  • A lot of places in the repo could use a combover looking to pull constants out
    • Urls that you make requests to
    • The default classes that you recommend in your "GetSuggestedCourses" DB function

DB Schema

  • I don't personally love how difficult it gets to work with your "courses" based around the schema of "APlus", "A", etc.
  • It's nice in that you can just sum the grades by summing columns but again it feels super hardcoded to the way that your school does grades / reports their distribution
  • In a prod environment you really wouldn't want to convey your "attribute" via N columns
  • It would probably be better to turn this into 2 tables that are a 1->many relationship of instructor -> grade count

'?' or '*' in professor input returns "Ernan Haruvy".

Describe the bug
Putting "?" or "*" in the Professor input will have no dropdown, yet the professor, Ernan Haruvy, is returned.

To Reproduce
Place a single question mark(or asterisk) in the professor input and nothing in the course input. Click 'Submit.'

Expected behavior
The expected output of putting a single question mark(or asterisk) should be the "Professor not found" toast along with the error page.

Screenshots
"Professor not found" in the dropdown.
Screenshot 2023-12-30 131029

"Ernan Haruvy" is given as the professor, instead of there being no professor(or a professor with a ?/* in their name).
Screenshot 2023-12-30 131047Screenshot 2023-12-30 132535

Desktop:

  • OS: Windows 11
  • Browser: Chrome version 120.0.6099.129/130
  • Version: ProfStats 1.0.4

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.