Skip to content

kaibad/edutrack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EduTrack - Smart Classroom Management System

EduTrack is a full-stack Learning Management System built with the PERN stack (PostgreSQL, Express, React, Node.js). It provides a role-based platform for educational institutions to manage subjects, assignments, quizzes, and student performance analytics in one unified system.


Roles and Permissions

Super Admin

The platform administrator with full oversight. Can view and manage all teacher and student accounts, approve or reject teacher registrations, monitor system-wide analytics, track assignment and quiz activity, and disable users when necessary.

Teacher

An educator who manages academic content. Can create and manage subjects, publish assignments and quizzes, view and grade student submissions, and track individual and class-level performance through charts and reports.

Student

A learner enrolled in the platform. Can view available subjects, submit assignments, attempt timed quizzes, check scores and feedback, view personal achievements, and track progress over time.


Features

  • Role-based authentication and protected routes
  • Teacher account approval workflow managed by Super Admin
  • Subject creation and assignment management
  • Timed quiz system with multiple-choice questions
  • Assignment submission with text and file URL support
  • Manual grading by teachers with marks recorded per submission
  • Leaderboard ranking students by combined quiz and assignment scores
  • Weekly leaderboard showing top performers for the past seven days
  • Analytics dashboards with Chart.js visualizations for each role
  • Weekly achievements and progress tracking for students
  • User profile management with avatar, bio, and password update
  • Pagination and search across user lists (Admin)
  • Global and subject-level performance insights

Database Models

UUIDs are used as primary keys across all tables, generated via the PostgreSQL uuid-ossp extension:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

users

Column Type Notes
id uuid Primary key, default uuid_generate_v4()
name varchar Full name
email varchar Unique
password varchar Hashed
role enum super_admin, teacher, student
avatar_url varchar Profile image URL
bio text Short user bio
is_approved boolean Used for teacher accounts
created_at timestamp Auto-generated

subjects

Column Type Notes
id uuid Primary key, default uuid_generate_v4()
name varchar Subject name
subject_code varchar Unique code
teacher_id uuid Foreign key to users
created_at timestamp Auto-generated

assignments

Column Type Notes
id uuid Primary key, default uuid_generate_v4()
title varchar Assignment title
description text Instructions
subject_id uuid Foreign key to subjects
teacher_id uuid Foreign key to users
deadline timestamp Due date
total_marks integer Maximum marks
created_at timestamp Auto-generated

submissions

Column Type Notes
id uuid Primary key, default uuid_generate_v4()
assignment_id uuid Foreign key to assignments
student_id uuid Foreign key to users
submission_text text Written response
file_url varchar Attached file link
marks integer Marks awarded by teacher
submitted_at timestamp Auto-generated

quizzes

Column Type Notes
id uuid Primary key, default uuid_generate_v4()
title varchar Quiz title
subject_id uuid Foreign key to subjects
teacher_id uuid Foreign key to users
time_limit integer Duration in minutes
total_marks integer Maximum score

questions

Column Type Notes
id uuid Primary key, default uuid_generate_v4()
quiz_id uuid Foreign key to quizzes
question text Question text
option_a varchar Choice A
option_b varchar Choice B
option_c varchar Choice C
option_d varchar Choice D
correct_answer char A, B, C, or D

quiz_attempts

Column Type Notes
id uuid Primary key, default uuid_generate_v4()
quiz_id uuid Foreign key to quizzes
student_id uuid Foreign key to users
score integer Score achieved
completed_at timestamp Auto-generated

Leaderboard System

Students are ranked by total points calculated as follows:

total_points = SUM(quiz_attempts.score) + SUM(submissions.marks)

The leaderboard displays rank, student name, avatar, total points, quiz score, and assignment score. A weekly leaderboard filters attempts and submissions from the past seven days to highlight recent top performers.


Analytics and Charts

Each role has a dedicated dashboard with relevant Chart.js visualizations.

Super Admin Dashboard shows total students, total teachers, quiz attempts per week, and assignment submission trends.

Teacher Dashboard shows assignment completion rates, average quiz scores per subject, and top-performing students.

Student Dashboard shows quiz score history over time, weekly achievements, and assignments completed vs pending.


Application Flow

  1. A teacher registers on the platform
  2. The Super Admin reviews and approves the teacher account
  3. The approved teacher creates one or more subjects
  4. The teacher publishes assignments and quizzes under those subjects
  5. Students view available subjects and complete assignments and quizzes
  6. The system updates scores, analytics, leaderboards, and achievements automatically

Tech Stack

Layer Technology
Frontend React, Chart.js, Tailwind CSS
Backend Node.js, Express.js
Database PostgreSQL
Authentication JWT, bcrypt
Runtime Bun

Installation

# Clone the repository
git clone https://github.com/kaibad/edutrack.git

# Navigate into the project directory
cd edutrack

# Install server dependencies
cd server
bun install

# Install client dependencies
cd ../client
bun install

# Set up environment variables
# Create a .env file in the server directory and add your PostgreSQL connection string, JWT secret, and port

# Start the backend server
cd ../server
bun dev

# Start the frontend in a new terminal
cd ../client
bun dev

The backend will run on http://localhost:5000 and the frontend on http://localhost:5173 by default.

About

PERN stack learning platform with quizzes, assignments, and leaderboards.

Resources

Stars

Watchers

Forks

Contributors

Languages