Overview
A comprehensive student performance monitoring database. Compiles term metrics, attendance tracking, and exports detailed report sheets dynamically.
The Problem
Educators spend massive hours manually compiling grades sheets from multiple spreadsheets, creating grading drift and reporting lag.
Research Method
Optimized relational indexing structures on student enrollment identifiers to prevent slow queries on massive historical datasets.
Architecture
Vue.js dashboard communicating with Express APIs, managed with Prisma Client layer talking to a transactional MySQL container instance.
Security & Auth
Cookie session-based authentication layered behind secure password crypt salting hashes.
Performance Stats
Database query time: <10ms on indexed filters. Excel sheet export generation: <800ms.
Database Design
TABLE Students (id VARCHAR(36) PRIMARY KEY, name VARCHAR(100), enrollment_no VARCHAR(20) UNIQUE); TABLE Grades (id INT AUTO_INCREMENT PRIMARY KEY, student_id VARCHAR(36), subject VARCHAR(50), marks INT);
API Routing Map
- →GET /api/v1/students - Fetches paginated students registry
- →POST /api/v1/grades/import - Import grade matrices from spreadsheets
Code Pipeline
// Queries metrics using Prisma Client
const grades = await prisma.grades.findMany({
where: { studentId },
orderBy: { subject: 'asc' }
});Infrastructure & Deploy
PM2 runtime wrapper managing process nodes on Ubuntu Linux VPS running NGINX.
Future Roadmap
- ✔Support PDF automated emailing triggers to registered parent endpoints
- ✔Add student analytics graphs tracing progress metrics benchmarks