A web application for visualizing and analyzing student performance data, built with Node.js, Express, MySQL, and Chart.js.
ASIA Task Performance/
├── backend/
│ ├── app.js # Express server setup
│ └── routes/
│ └── grades.js # API routes for grades and students
├── db/
│ └── db.js # MySQL connection pool
├── public/
│ └── js/
│ │ ├── charts.js # Chart rendering functions
│ │ ├── forms.js # Form handling logic
│ │ ├── helpers.js # Utility/helper functions
│ │ ├── init.js # Initialization and event listeners
│ │ ├── modals.js # Modal handling logic
│ │ └── navigation.js # Sidebar and navigation logic
│ ├── index.html # Main dashboard HTML
│ └── style.css # Dashboard styles
├── .env # Environment variables (DB credentials, port)
├── .hintrc # Linter configuration
├── package.json # Project metadata and scripts
├── package-lock.json # Dependency lock file
└── node_modules/ # Installed dependencies
git clone https://github.com/kayl10913/ASIA-Task-Performance.git- Node.js (v16+ recommended)
- MySQL server
npm init -y
npm install express mysql2 corsCreate a .env file in the root directory and add your MySQL credentials:
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=
DB_NAME=student_performance- Create a MySQL database named student_performance.
- Import the provided SQL file to create the necessary tables and populate with sample data.
npm run devThe server will run at http://localhost:3000.
- GET /api/grades/students — List of all students
- GET /api/grades/students/:id — Get a student’s name by ID
- GET /api/grades/students/:id/grades — Get grades for a specific student
- GET /api/grades/average-by-subject — Average grades per subject
- GET /api/grades/grade-distribution — Grade distribution by letter
- GET /api/grades/grades-over-time — Average grades over time
- GET /api/grades/students-per-class — Student count per class
- GET /api/grades/top-students — Top 5 students by average grade
- GET /api/grades/grade-count-per-subject — Grade count per subject and letter
- GET /api/grades/average-grade-per-month — Average grade per month
- GET /api/grades/student-averages-per-month — Student averages per month
- GET /api/grades/total-students — Total number of students
- GET /api/grades/most-students-class — Class with most students
- POST /api/grades/students — Add a new student
- POST /api/grades/ — Add a new grade
See backend/routes/grades.js for implementation details.
- Calingasan, Kyle Matthew D.
- Caringal, Mark Laurence L.
- Patron, Kian Marcus V.