Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/giridharrnair/profstatsutd
📚 Source code for the ProfStats UTD chrome extension, a quick and easy way to view UT Dallas professor ratings and grade distributions.
https://github.com/giridharrnair/profstatsutd
chrome-extension gin gin-gonic go golang ratemyprofessors react sqlite utd utdgrades vite vitejs-react
Last synced: about 1 month ago
JSON representation
📚 Source code for the ProfStats UTD chrome extension, a quick and easy way to view UT Dallas professor ratings and grade distributions.
- Host: GitHub
- URL: https://github.com/giridharrnair/profstatsutd
- Owner: GiridharRNair
- License: mit
- Created: 2023-11-21T07:35:00.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-08-30T04:42:08.000Z (3 months ago)
- Last Synced: 2024-10-02T05:05:03.305Z (about 1 month ago)
- Topics: chrome-extension, gin, gin-gonic, go, golang, ratemyprofessors, react, sqlite, utd, utdgrades, vite, vitejs-react
- Language: JavaScript
- Homepage: https://chromewebstore.google.com/detail/profstats-ut-dallas/doilmgfedjlpepeaolcfpdmkehecdaff
- Size: 11.7 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
ProfStatsUTD
[![Chrome Web Store](https://img.shields.io/badge/Featured_on-Chrome_Web_Store-cce7e8?style=for-the-badge)](https://chromewebstore.google.com/detail/profstats-ut-dallas/doilmgfedjlpepeaolcfpdmkehecdaff)
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](https://img.shields.io/badge/Powered_by-Vite-646CFF?style=for-the-badge&logo=vite)](https://vitejs.dev/)
[![React](https://img.shields.io/badge/Powered_by-React-61DAFB?style=for-the-badge&logo=react)](https://reactjs.org/)
[![Chakra UI](https://img.shields.io/badge/Styled_with-Chakra_UI-319795?style=for-the-badge&logo=chakra-ui)](https://chakra-ui.com/)
[![Axios](https://img.shields.io/badge/HTTP_requests_with-Axios-009688?style=for-the-badge&logo=axios)](https://www.npmjs.com/package/axios/)The front end ensures a streamlined interface with features like backend performance optimization, client-side validation for data accuracy, and [CRXJS](https://crxjs.dev/vite-plugin/) 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](https://github.com/fregante/chrome-webstore-upload). While manual review submission is required, the uploading process is fully automated.
## Backend Overview
[![Go](https://img.shields.io/badge/Powered_by-Go-00ADD8?style=for-the-badge&logo=go)](https://golang.org/)
[![Python](https://img.shields.io/badge/Powered_by-Python-3776AB?style=for-the-badge&logo=python)](https://www.python.org/)
[![SQLite](https://img.shields.io/badge/Database-SQLite-003B57?style=for-the-badge&logo=sqlite)](https://www.sqlite.org/index.html)
[![Docker](https://img.shields.io/badge/Containerized_with-Docker-2496ED?style=for-the-badge&logo=docker)](https://www.docker.com/)
[![Azure](https://img.shields.io/badge/Hosted_on-Azure-0089D6?style=for-the-badge&logo=microsoft-azure)](https://azure.microsoft.com/en-us/)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](https://github.com/acmutd/utd-grades/tree/master/raw_data) 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:**
```bash
git clone https://github.com/GiridharRNair/ProfStatsUTD
```2. **Navigate to the project directory:**
```bash
cd ProfStatsUTD
```3. **Install dependencies:**
```bash
npm run install-packages
```
> This command installs the dependencies for the go backend and the react frontend4. **Start the server and extension concurrently:**
```bash
npm run dev
```
> This project uses the `concurrently` npm package to run the server and extension concurrently5. **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.