A production-grade, secure, and AI-enhanced Online Examination System designed to modernize the assessment lifecycle. This platform integrates advanced proctoring, anti-cheating mechanisms, and interactive question types to ensure academic integrity in digital learning environments.
- π Live Demo
- π Documentation
- π οΈ Installation Guide
- π‘οΈ Security Policy
- About the Project
- Key Features
- Interactive Question Types
- Architecture
- Tech Stack
- Getting Started
- Security
- Contributing
- Future Roadmap
Traditional examination processes often suffer from administrative overhead and security vulnerabilities. This project provides a robust solution by automating the entire examination lifecycle while maintaining high standards of integrity through AI-driven monitoring.
Originally developed to address challenges in South African education, it is designed for scalability, allowing institutions to manage thousands of students, diverse course structures, and complex assessment types within a single, unified dashboard.
- Face Detection & Verification: Real-time monitoring using
face-api.jsto ensure the candidate stays on screen. - Identity Verification: Multi-stage identity check including face and ID card analysis powered by OpenAI models via OpenRouter.
- Environment Scanning: AI-driven detection of unauthorized objects and behavior monitoring.
- Refresh Prevention: Blocks F5, Ctrl+R, and right-click menus during active exams.
- Tab/Window Switching Detection: Automatically tracks when a student leaves the exam window and initiates a warning/termination countdown.
- Navigation Blocking: Disables back/forward navigation to keep the user within the assessment environment.
- Violation Logging: Every suspicious activity is logged in the
exam_violationstable for post-exam auditing.
- Role-Based Access Control (RBAC): Secure dashboards for Admins, Lecturers, and Students.
- Dynamic Question Bank: CRUD operations for multiple question types, including image support.
- Real-time Analytics: Instant grading and performance reports for both students and instructors.
The system supports a variety of assessment methods beyond standard Multiple Choice:
- Drag & Drop: Matching items to targets using a modern, intuitive interface.
- Rearrange: Sequential ordering questions where items must be placed in a specific order.
- True/False & Multi-Select: Flexible formats for diverse subject matter.
The system follows a refined Model-View-Controller (MVC) pattern for Java Web Applications.
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Client β β Controller β β Database β
β (JSP/JS/CSS) β ββββΆ β (controller.jsp)β ββββΆ β (MySQL Server) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β² β β
ββββββββββββββββββββββββββ΄βββββββββββββββββββββββββ
The system uses a robust relational schema:
- Users & Roles: Manages students, lecturers, and admins.
- Courses & Questions: Relational question bank with support for interactive types.
- Exams & Answers: Tracks attempts, saves progress in real-time, and stores detailed results.
- Proctoring Logs: Dedicated tables for identity verification and incident reporting.
| Category | Technology |
|---|---|
| Backend | Java (JSP), Servlet API |
| Database | MySQL 8.0+ |
| AI/Vision | OpenAI (GPT-4o via OpenRouter), face-api.js |
| Frontend | HTML5, CSS3, JavaScript (ES6+) |
| Server | Apache Tomcat 8.5+ |
| Security | jBCrypt Hashing, Session Management |
- JDK 8+
- MySQL 8.0+
- Apache Tomcat 8.5+
- Apache Ant (Build tool)
-
Clone the Repository
git clone https://github.com/Siphelele-Maphumulo/Online-Test-Web-Application.git cd Online-Test-Web-Application -
Database Configuration
- Create a database named
exam_system. - Import the schema from
db script/. Runexam_system.sqlfirst, followed by any specialized scripts likecreate_drag_drop_table.sql. - Configure credentials in
src/java/myPackage/DatabaseClass.java(or viaconfig/secrets.propertiesif using the updated security config).
- Create a database named
-
API Keys (OpenRouter)
- Copy
openrouter.properties.exampletoopenrouter.properties. - Add your
OPENROUTER_API_KEY.
- Copy
-
Build & Deploy
- Use
ant distto generate the.warfile. - Deploy the
.warto your Tomcatwebappsdirectory.
- Use
Security is a core pillar of this application.
- No Secrets in Git: Sensitive data is managed via
.propertiesand.envfiles ignored by version control. - Password Protection: Industry-standard jBCrypt hashing.
- Session Integrity: Secure session handling to prevent hijacking.
See SECURITY.md for full configuration details.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Mobile App: Native Android/iOS applications for remote testing.
- LMS Integration: LTI compliance for integration with Canvas/Moodle.
- Advanced Analytics: Predictive performance modeling.
Distributed under the MIT License.
Maintained by Siphelele Maphumulo
