GradeAnalyzer is a powerful and user-friendly tool designed to help students track, analyze, and improve their academic performance. With features such as GPA calculation, performance tracking, and goal-setting, this tool provides an in-depth understanding of academic progress, allowing students to set and achieve their educational goals efficiently.
This project is structured as a full-stack application with separate frontend and backend components.
- Multi-Level Data Input: Supports input at different levels (task, category, subject), allowing flexibility for different user preferences.
- GPA Calculation (Weighted & Unweighted): Automatically calculates GPA based on weighted or unweighted methods, taking into account advanced courses like AP and Honors.
- Performance Visualization: Interactive charts and graphs (pie charts, bar charts, line graphs) to display performance across subjects, categories, and tasks.
- Goal Setting: Set and track academic goals such as GPA targets, subject-specific goals, and category-specific targets.
- User-Friendly Interface: Clean and intuitive design to ensure easy navigation and data input.
- Node.js
- MongoDB
- SMTP Server (for sending emails)
- Nginx (for reverse proxy)
- Backend: Node.js, Express, MongoDB, JWT, Nodemailer
- Frontend: Node.js, Express, EJS, Tailwind CSS, Chart.js
-
Clone the repository
git clone https://github.com/TKanX/grade-analyzer.git && cd grade-analyzer
-
Setup the backend
-
Create a
.env
file in thebackend
directory and add the following environment variables:PORT=5000 # Port number for the server (default: 5000) HOST=localhost # Host address for the server (default: localhost) MONGODB_URI=mongodb://localhost:27017/grade-analyzer # MongoDB connection URI JWT_SECRET=secret # Secret key for JWT token generation SMTP_HOST=smtp.gmail.com # SMTP server host SMTP_PORT=587 # SMTP server port SMTP_SECURE=false # SMTP secure connection (default: false) SMTP_USERNAME=user # SMTP username SMTP_PASSWORD=pass # SMTP password SMTP_SENDER=no-reply@example.com # Email sender address
Note: The SMTP host, port, username, password, and sender address should be replaced with your own SMTP server details.
-
Install the dependencies
cd backend # Move to the backend directory npm install # Install the dependencies
-
Start the backend server
npm start # Start the backend server
-
-
Setup the frontend
-
Create a
.env
file in thefrontend
directory and add the following environment variables:PORT=3000 # Port number for the server (default: 3000) HOST=localhost # Host address for the server (default: localhost)
-
Install the dependencies
cd ../frontend # Move to the frontend directory npm install # Install the dependencies
-
Build the Tailwind CSS
npm run build:css # Build the Tailwind CSS
-
Start the frontend server
npm start # Start the frontend server
Note: The configuration to connect to the backend server is already set in the frontend application. If you want to change the backend server address, configure the server URL in the
frontend/public/js/app.js
file (Default:/api
). -
-
Setup Nginx
- Configure Nginx as a reverse proxy
/api
to the backend server. (Default:http://localhost:5000
) - Configure Nginx to serve the frontend application. (Default:
http://localhost:3000
) - Restart Nginx to apply the changes.
- Configure Nginx as a reverse proxy
-
Access the application
Open the browser and navigate to the server address to
http://localhost
to access the GradeAnalyzer application. (Use the configured Nginx server address if applicable)
The GradeAnalyzer application provides a RESTful API to interact with the GradeAnalyzer backend. The API endpoints are documented in the API.md file.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.