A common concern among students is the absence of major GPA information on their transcripts. Transcripts only show cumulative GPA (all classes that students took), not major GPA (classes that related to students major, for example, all Computer Science classes).
The Major GPA Wizard is a user-friendly application designed to simplify the process of calculating major GPA from formatted PDF files.
The application automatically identifies and extracts major CS subjects from uploaded PDFs, streamlining the GPA calculation process.
It computes the total GPA based on the extracted CS subjects, offering a comprehensive overview of academic performance.
- File Upload: Users upload their PDF files through a simple and intuitive interface.
- PDF Parsing: The backend, built with Node.js and Express, uses the "pdfreader" package to efficiently parse PDF content.
- Data Filtering: Parsed data is converted into JSON format, and filtering operations extract necessary information related to CS subjects.
- GPA Calculation: The backend calculates the total GPA based on the extracted CS subjects, providing users with a clear understanding of their academic achievements.
- React.js
- Vite.js (for React project setup)
- Node.js
- Express.js
- pdfreader (for PDF parsing)
- multer (for file uploading)
- cors (for handling CORS issues)
- dotenv (for managing environment variables)
The frontend utilizes React and Vite.js for a responsive and interactive user interface, including a header, a file input section, and a result table dynamically appearing after processing the PDF.
Built with Node.js and Express.js, the backend employs the "pdfreader" package for efficient PDF parsing, "multer" middleware for file uploading, and other packages to handle CORS and environment variables.
- parsePdf: Parses the PDF content and returns the data.
- API Route: Accepts the uploaded PDF file and sends it to the parser function.
- Data Filtering: Processes the parsed data, filters relevant information, and returns it in JSON format.
- Frontend PDF Parsing: Initial attempts to parse PDFs in the frontend using "tesseract.js" OCR faced challenges, resolved by switching to a Node.js backend with the "pdfreader" package.
- File Upload: Uploading and handling files on the server posed challenges, streamlined by the use of the "multer" middleware.
- PDF to Image Conversion: Exploring PDF to image conversion for OCR posed difficulties initially. Ultimately, the "pdfreader" package emerged as a suitable solution for parsing PDFs directly.
![Screenshot 2024-01-23 at 10 35 46 AM](https://private-user-images.githubusercontent.com/101225909/299034708-ad90e430-c440-4455-a9fc-7364e0960296.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMyMzIxMjksIm5iZiI6MTcyMzIzMTgyOSwicGF0aCI6Ii8xMDEyMjU5MDkvMjk5MDM0NzA4LWFkOTBlNDMwLWM0NDAtNDQ1NS1hOWZjLTczNjRlMDk2MDI5Ni5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgwOVQxOTMwMjlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xNmIwYjg2NjRmNjM5M2E5N2U0MDViYTgwZDk1NGQyZTUzZDY1NmJkZjMwZmI1OTY1NzhhMTY2Y2RmMGZmMjY3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.uw08tnp9kUlEjzJ7lQUyCz7ktamFqCMRwVLxT1uYPLw)
![Screenshot 2024-01-24 at 9 45 15 AM](https://private-user-images.githubusercontent.com/101225909/299352202-08030d88-8407-4e83-a4f5-fe610b790b18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMyMzIxMjksIm5iZiI6MTcyMzIzMTgyOSwicGF0aCI6Ii8xMDEyMjU5MDkvMjk5MzUyMjAyLTA4MDMwZDg4LTg0MDctNGU4My1hNGY1LWZlNjEwYjc5MGIxOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgwOVQxOTMwMjlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00ZWVhZmJjZWJkZWY3MDUyYTk0ODY1NzY2YmEwNWE3NjNkMWI1OTQ3NmI5OWRmZjcxYzNiMmRhMjIwNzhiM2VmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.tvIcT72JZLKbL5IOZc0GGZimTPVr3Lq93tOYkgARBfM)
Link to the backend of the application: https://github.com/VitaliPri/MajorGPA-Backend