All Projects → bharatari → utd-grades

bharatari / utd-grades

Licence: other
A tool to view grade distributions at UT Dallas.

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to utd-grades

Tkinter-Designer
An easy and fast way to create a Python GUI 🐍
Stars: ✭ 4,697 (+20321.74%)
Mutual labels:  python-script
python-data-visualization
Curated Python Notebooks for Data Visualization
Stars: ✭ 22 (-4.35%)
Mutual labels:  python-script
karang
React components library that implement Lalamove Design.
Stars: ✭ 14 (-39.13%)
Mutual labels:  styled-components
bharadwaj.duggaraju.com
🧍 My personal website, made with React and Typescript.
Stars: ✭ 38 (+65.22%)
Mutual labels:  styled-components
react-kirby-starter
React boilerplate with headless Kirby API [WIP]
Stars: ✭ 23 (+0%)
Mutual labels:  styled-components
marvel-jarvig
Marvel JARVIG (Just A Rather Very Interesting Game) is a game that lets you find and discover Marvel Comics characters based on their name, image and description!
Stars: ✭ 13 (-43.48%)
Mutual labels:  styled-components
OrganizeMediaFiles
a collection of Python scripts that help you organize media files into a directory tree "year/month" based on metadata , using exiftool
Stars: ✭ 24 (+4.35%)
Mutual labels:  python-script
jiahao.codes
😎 Personal Website
Stars: ✭ 63 (+173.91%)
Mutual labels:  styled-components
neu ui
Prototype and build projects faster using Neu UI - an open source React component library designed to neumorphic style. Built using React, Styled Components, Jest and Storybook.
Stars: ✭ 23 (+0%)
Mutual labels:  styled-components
bluetooth-iot-service-python
This application connects two devices over Bluetooth and allows one to send messages to the other using json. Raspberry Pi Bluetooth interfacing with Linux via RFCOMM BT network
Stars: ✭ 23 (+0%)
Mutual labels:  python-script
instagram-profilecrawl
📝 quickly crawl the information (e.g. followers, tags etc...) of an instagram profile.
Stars: ✭ 964 (+4091.3%)
Mutual labels:  python-script
ps-date-countdown
A python script for Homeassistant that counts down the days to birthdays, anniversaries etc
Stars: ✭ 21 (-8.7%)
Mutual labels:  python-script
forex-web-app
💱 foreign currency exchange app built with react hooks
Stars: ✭ 17 (-26.09%)
Mutual labels:  styled-components
mapet
Muitas pessoas tem bichinhos de estimação, entre eles os mais comuns são gatos e cachorros. Com a correria do dia a dia pode acontecer deles acabarem escapando, e ai aonde divulgar para ajudarem a encontrá-lo o mais rápido possível? Redes Sociais? WhatsApp? Pensando nisso criamos o mapet, um mapa que você indica aonde seu pet foi visto pela últi…
Stars: ✭ 15 (-34.78%)
Mutual labels:  styled-components
tsstyled
A small, fast, and simple CSS-in-JS solution for React.
Stars: ✭ 52 (+126.09%)
Mutual labels:  styled-components
react-styled-floating-label
Floating label component which works with any HTML input
Stars: ✭ 33 (+43.48%)
Mutual labels:  styled-components
react-ssr-hydration
Example of React Server Side Rendering with Styled Components and Client Side Hydration
Stars: ✭ 15 (-34.78%)
Mutual labels:  styled-components
cargo-react
A Boilerplate for creating Component Libraries in React + Typescript + StoryBook + Styled Components
Stars: ✭ 13 (-43.48%)
Mutual labels:  styled-components
nytimes-bestseller
NY Times best sellers list explorer
Stars: ✭ 35 (+52.17%)
Mutual labels:  styled-components
Python3-Botnet
Project moved to -> https://github.com/Leeon123/Aoyama
Stars: ✭ 24 (+4.35%)
Mutual labels:  python-script

UTD Grades

Deploy to Production Deploy to Development Test

UTD Grades is a tool to view grade distributions at UT Dallas.

Components

This monorepo consists of 4 sub-projects split into the core application and side utilities.

Core Application:

  • The client folder contains the project's front-end built with React and Next.js
  • The functions folder contains the project's backend code built as Node.js AWS Lambda functions with the Serverless Framework

Side Utilities:

  • The converter folder contains a Python script that converts the Excel file of grade distributions into a JSON file fitting our own data format
  • The loader folder contains Node.js data loading script that loads the converted JSON file of grade distributions data into PostgreSQL

There is also a data folder that contains all currently received grade data with the original Excel files and converted JSON files.

Development

Development steps are listed within each module's README.

Deploying

The two parts making up the core application are the client and functions modules. The deployment process for both are separate, allowing changes to be made to each service independently from the other.

Deployment steps are listed within each module's README.

Uploading New Data

To upload new grade data received from UTD, the data will first need to be converted from Excel in JSON. To do this, use the converter Python script.

First we'll need to install all the necessary dependencies for the script.

  1. Change directories into the converter folder
  2. Run python -m venv venv to create a virtual environment (use py instead of python if using Python Launcher on Windows)
  3. Run venv/bin/activate to activate virtual environment
    1. venv\Scripts\activate on Windows
  4. Finally run pip install -r requirements.txt to install all dependencies

Now the converter script is ready to run.

  1. Load the received Excel file into the converter/data/data.xlsx file location. The filename must match data.xlsx exactly.
  2. Ensure the output folder is empty.
  3. Within the converter/main.py script, edit the TERM constant to match the name of the semester of the data you are uploading. For example, the TERM constant should contain 2018 Fall for fall 2018 grade data.
  4. Run the script with python main.py
  5. Check for any errors and fix them accordingly. These errors could occur if the Excel file varies slightly from the our expected format. Check the names of the columns and check for any spelling mistakes.
  6. If all goes well, you should see an output file in the output/output.json file location.
  7. In the data folder make sure to create a new folder for this semester's data and place the original Excel file as well as the converted JSON there for safe-keeping.

Now we must take our converted JSON and actually upload it to our PostgreSQL database using the loader Node.js script. First we'll need to install all the necessary dependencies for this script.

  1. Change directories into the loader folder
  2. Run npm install

Now the loader script is ready to run

  1. Create a .env file in the loader folder and enter the database credentials for the UTD Grades database

     dbName=database name goes here
     dbUser=username goes here
     dbPass=password goes here
     dbHost=host goes here
    
  2. Take the outputted JSON file from the converter script and place it in the loader/data folder.

  3. Within the loader/index.js file, edit the name of the file location to match the JSON file you're loading.

  4. Run the script with npm start

The script should output the records it was not able to upload. Keep track of these so you can fix whatever issue may have occured with those specific records and re-upload them later. Sometimes there are quirks with professor names that cause issues on our end. Some professors are included in the dataset with no first name, which causes a problem with our parsing. For these, just look up the professor to get their first name and edit the records accordingly. When you re-upload, don't re-upload the whole JSON file again. Instead only re-upload the specific records that didn't upload the first time by placing them into a separate errors.json file (in the loader/data/ folder). Then, edit the loader/index.js script to read the errors.json file instead of the whole semester JSON file. This is just to prevent data that uploaded properly the first time from getting messed with.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].