π Examination Management System



### Full-Stack Educational Examination Platform
**A comprehensive solution for managing students, instructors, courses, and online examinations**
[π Quick Start](#-quick-start) β’
[π Documentation](#-documentation) β’
[ποΈ Architecture](#οΈ-system-architecture) β’
[π€ Contributing](#-contributing)
---






π Table of Contents
π― Overview
The Examination Management System is a production-ready, full-stack web application designed for educational institutions to manage their examination processes digitally. The system provides a complete solution for:
- π« Educational Institutions - Manage departments, tracks, and courses
- π¨βπ« Instructors - Create courses, manage students, and monitor performance
- π¨βπ Students - Take exams, view results, and track progress
- π Administrators - Oversee the entire examination ecosystem
Why This System?
| Traditional Exams |
Our Digital Solution |
| β Paper-based, time-consuming |
β
Fully digital, instant |
| β Manual grading, prone to errors |
β
Auto-grading with accuracy |
| β Delayed results |
β
Immediate results & review |
| β No real-time monitoring |
β
Live timer & status tracking |
| β Hard to analyze performance |
β
Built-in analytics |
β¨ Key Features
π Authentication & Authorization
| Feature |
Description |
| Role-Based Access |
Separate interfaces for Students and Instructors |
| Secure Login |
Email/Password authentication |
| Protected Routes |
Role-specific access control |
| Session Management |
Persistent sessions with localStorage |
π¨βπ Student Features
| Feature |
Description |
| π Take Exams |
Interactive exam interface with MCQ and True/False questions |
| β±οΈ Real-Time Timer |
15-minute countdown with auto-submit |
| π© Question Flagging |
Mark questions for later review |
| π View Results |
Detailed breakdown with correct answers |
| π Browse Courses |
Explore enrolled courses |
| πΎ Resume Exams |
Continue incomplete exams after refresh |
π¨βπ« Instructor Features
| Feature |
Description |
| π Course Management |
Create and manage courses |
| π₯ Student Management |
View students, assign to tracks |
| π Exam Creation |
Generate exams with custom question counts |
| π Performance Analytics |
Monitor student grades and statistics |
π Examination System
| Feature |
Description |
| Dynamic Generation |
Random question selection per exam |
| Mixed Question Types |
MCQ (A/B/C/D) and True/False |
| Time Tracking |
Server-side time validation |
| Auto-Grading |
Instant result calculation |
| Detailed Review |
Question-by-question analysis |
ποΈ System Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXAMINATION SYSTEM β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β FRONTEND β β BACKEND β β DATABASE β
β (React + Vite) βββββββΊβ (Node/Express) βββββββΊβ (SQL Server) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
β β β
ββββββ΄βββββ ββββββ΄βββββ ββββββ΄βββββ
β β β β β β
βΌ βΌ βΌ βΌ βΌ βΌ
βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ
βContextβ β Pages β βRoutes β βControlβ βTables β βStored β
β API β β β β β β lers β β β β Procs β
βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ
Data Flow
βββββββββββ HTTP βββββββββββ Sequelize βββββββββββ
β Browser ββββββββββββββΊβ API βββββββββββββββββββΊβ DB β
β (React) β JSON β(Express)β SQL Queries β(MSSQL) β
βββββββββββ βββββββββββ βββββββββββ
β β β
β localStorage β Connection Pool β Stored
β (Auth State) β (Sequelize) β Procedures
βΌ βΌ βΌ
βββββββββββ βββββββββββ βββββββββββ
β Auth β β Models β β Complex β
β Context β β ORM β β Queries β
βββββββββββ βββββββββββ βββββββββββ
π οΈ Tech Stack
Frontend
| Technology |
Version |
Purpose |
| React |
19.2.0 |
UI Library with Hooks |
| Vite |
7.2.5 |
Build Tool & Dev Server |
| React Router |
7.12.0 |
Client-Side Routing |
| Tailwind CSS |
4.1.18 |
Utility-First CSS |
| Axios |
1.13.2 |
HTTP Client |
| React Hot Toast |
2.6.0 |
Toast Notifications |
Backend
| Technology |
Version |
Purpose |
| Node.js |
18+ |
JavaScript Runtime |
| Express.js |
5.2.1 |
Web Framework |
| Sequelize |
6.37.7 |
ORM for SQL Server |
| Tedious |
19.2.0 |
MSSQL Driver |
| express-validator |
7.3.1 |
Input Validation |
| Morgan |
1.10.1 |
HTTP Logger |
| CORS |
2.8.5 |
Cross-Origin Requests |
Database
| Technology |
Version |
Purpose |
| Microsoft SQL Server |
2019+ |
Relational Database |
| T-SQL |
- |
Stored Procedures |
π Project Structure
Sql_adv_Project/
β
βββ π README.md # This file - Project overview
βββ π DATABASE_DOCUMENTATION.md # Complete database documentation
βββ π db.script # SQL Server database script
βββ π¦ dbafterstored.bak # Database backup with stored procs
βββ π¦ dbveido.bak # Alternative database backup
β
βββ π Back_sql_project/ # Backend API (Node.js/Express)
β βββ π README.md # Backend documentation
β βββ π API_DOCUMENTATION.md # Full API reference
β βββ π EXAMS_API_DOCUMENTATION.md # Exam endpoints details
β βββ π package.json
β βββ π index.js # Application entry
β βββ π Auth/ # Authentication
β βββ π Configuration/ # Database config
β βββ π controllers/ # Business logic
β βββ π models/ # Sequelize models
β βββ π Routes/ # API routes
β βββ π validators/ # Input validation
β
βββ π Front_sql_projrct/ # Frontend (React/Vite)
βββ π README.md # Frontend documentation
βββ π Documentation.md # Component documentation
βββ π package.json
βββ π vite.config.js
βββ π public/ # Static assets
βββ π src/
βββ π api/ # Axios configuration
βββ π components/ # Reusable components
βββ π context/ # React Context providers
βββ π pages/ # Page components
βββ π services/ # API service functions
βββ π utils/ # Utilities & constants
π Quick Start
Prerequisites
Installation
1οΈβ£ Clone the Repository
git clone https://github.com/your-username/examination-system.git
cd Sql_adv_Project
2οΈβ£ Setup Database
# Option A: Restore from backup (Recommended)
# Use SQL Server Management Studio (SSMS) to restore dbafterstored.bak
# Option B: Run the SQL script
# Execute db.script in SSMS to create database and all objects
3οΈβ£ Setup Backend
# Navigate to backend directory
cd Back_sql_project
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit .env with your database credentials
# DB_NAME=db
# DB_USER=your_username
# DB_PASSWORD=your_password
# DB_HOST=localhost
# Start development server
npm run dev
4οΈβ£ Setup Frontend
# Open new terminal, navigate to frontend directory
cd Front_sql_projrct
# Install dependencies
npm install
# Start development server
npm run dev
5οΈβ£ Access the Application
| Service |
URL |
| Frontend |
http://localhost:5173 |
| Backend API |
http://localhost:3000/api/v1 |
Quick Test
# Test backend health
curl http://localhost:3000
# Test API endpoint
curl http://localhost:3000/api/v1/course
π Documentation
Project Documentation Files
πΈ Screenshots
Landing Page
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βββββββββββ ββββββββ ββββββββ β
β β LOGO β HOME FEATURES ABOUT βLOGIN β βSIGNUPβ β
β βββββββββββ ββββββββ ββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Welcome to Examination System β
β β
β Take your exams online with confidence β
β β
β βββββββββββββββββββββββββββ β
β β GET STARTED β β
β βββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Student Dashboard
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NAVBAR ββββββββββββββββββββββββ β
β Dashboard | Courses | Exams β Student Name βΌ β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Welcome, John! π β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Courses β β Exams β β Avg β β
β β 5 β β 12 β β 78.5% β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β
β Recent Exams [View All β] β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β JavaScript β 85% β Passed β Jan 23, 2026 β β
β β SQL Basics β 70% β Passed β Jan 22, 2026 β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Exam Taking Interface
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β JavaScript Exam β±οΈ 12:45 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Question 3 of 10 π© Flag β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β What is the correct way to declare a variable β β
β β in JavaScript ES6? β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β β A) var x = 5 β
β β B) let x = 5 β
β β C) int x = 5 β
β β D) variable x = 5 β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β 1 β 2 β 3ββ 4 β 5 β 6 β 7 β 8 β 9 β 10β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [β Previous] [Next β] β
β [Submit Exam] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π‘ API Reference
Base URL
http://localhost:3000/api/v1
Authentication Endpoints
| Method |
Endpoint |
Description |
POST |
/auth/login |
Student login |
POST |
/auth/register |
Student registration |
POST |
/auth/instructor/login |
Instructor login |
Core Endpoints
| Resource |
Endpoints |
Description |
| Courses |
GET/POST/PATCH/DELETE /course |
Course CRUD |
| Students |
GET/POST/PATCH/DELETE /student |
Student CRUD |
| Instructors |
GET/POST/PATCH/DELETE /instructor |
Instructor CRUD |
| Exams |
/exams/generate, /exams/submit, /exams/review |
Exam operations |
Example Requests
Generate Exam
curl -X POST http://localhost:3000/api/v1/exams/generate \
-H "Content-Type: application/json" \
-d '{
"courseId": 11,
"studentId": 1,
"mcqCount": 6,
"tfCount": 4
}'
Submit Exam
curl -X POST http://localhost:3000/api/v1/exams/submit \
-H "Content-Type: application/json" \
-d '{
"examID": 101,
"studentID": 1,
"answers": "A,B,C,True,False,A,B,True,C,A"
}'
ποΈ Database Schema
Tables Overview
| Table |
Description |
Records |
department |
Academic departments |
~5 |
track |
Learning tracks/specializations |
~10 |
student |
Student records |
~100+ |
instructor |
Instructor records |
~20 |
topic |
Subject categories |
~10 |
course |
Course catalog |
~30 |
question |
Question bank |
~500+ |
choice |
MCQ answer options |
~2000+ |
exam |
Generated exams |
~1000+ |
examquestion |
Exam-Question mapping |
~10000+ |
studentquestionanswer |
Student responses |
~10000+ |
Key Stored Procedures
| Procedure |
Purpose |
generate_exam |
Create exam with random questions |
exam_answers |
Submit student answers |
exam_correction |
Grade exam and calculate score |
GetExamReview_Split |
Get detailed exam review |
GetStudentExamsHistory |
Fetch studentβs exam history |
sp_StudentLogin |
Authenticate student |
sp_InstructorLogin |
Authenticate instructor |
π Full database documentation: DATABASE_DOCUMENTATION.md
π’ Deployment
Production Checklist
Environment Variables
Backend (.env)
NODE_ENV=production
PORT=3000
API_VERSION=api/v1
DB_NAME=ExaminationDB
DB_USER=app_user
DB_PASSWORD=secure_password
DB_HOST=your-sql-server-host
Frontend (.env)
VITE_API_BASE_URL=https://api.yourdomain.com/api/v1
Docker Deployment (Optional)
# Backend Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
# docker-compose.yml
version: '3.8'
services:
backend:
build: ./Back_sql_project
ports:
- "3000:3000"
environment:
- DB_HOST=sqlserver
- DB_NAME=db
depends_on:
- sqlserver
frontend:
build: ./Front_sql_projrct
ports:
- "80:80"
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=YourStrong@Password
ports:
- "1433:1433"
π§ͺ Testing
Backend Testing
cd Back_sql_project
npm test
Frontend Testing
cd Front_sql_projrct
npm run lint
API Testing with Postman
Import the API collection from Back_sql_project/postman_collection.json (if available)
π€ Contributing
We welcome contributions! Please follow these steps:
1. Fork & Clone
git clone https://github.com/your-username/examination-system.git
2. Create Branch
git checkout -b feature/amazing-feature
3. Make Changes
- Follow the coding style guidelines
- Write meaningful commit messages
- Add documentation for new features
4. Submit PR
git push origin feature/amazing-feature
Then open a Pull Request on GitHub.
Coding Guidelines
| Area |
Guideline |
| JavaScript |
ES6+ syntax, functional components |
| React |
Hooks, Context API, PascalCase components |
| CSS |
Tailwind utility classes |
| API |
RESTful conventions, proper status codes |
| SQL |
Stored procedures for complex logic |
| Git |
Conventional commits |
π License
This project is licensed under the ISC License.
ISC License
Copyright (c) 2026 CrossITI Team
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
π¨βπ» Team
CrossITI Team
| Role |
Responsibility |
| Full-Stack Developer |
Frontend & Backend development |
| Database Engineer |
SQL Server design & optimization |
| UI/UX Designer |
User interface design |
π Acknowledgments
### π Star this repository if you found it helpful!
[](https://github.com/crossiti/examination-system)
---
**Built with β€οΈ by CrossITI Team**
*January 2026*