📐 Online Examination App
Published:

Project Timeline
August 2020 - October 2020
Github: https://github.com/ZhangzihanGit/Online-Examination-App
Project Description
This project is a simulated Online Examination App that allows an administrator to manage different subjects, exams, instructors, and students; allows instructors to create/update/delete/publish/close/mark
exams; allows students to take exams. The application also takes care of concurrency and security issues.
This project intended to explore many patterns used in the enterprise, so no backend frameworks were used.
Tech Stack
- Backend: Java Servlet + Tomcat
- Frontend: React + Redux
- Security: Apache Shiro
- Database: PostgreSQL

Main Features
User Abilities
Admin has the ability to:
- create new subjects
- view all subjects and associated instructors, students, and exams


Instructor has the ability to:
- view subjects he/she teaches
- create/update/delete/mark/publish/close exams
- mark students’ submissions in table and detailed view




Student has the ability to:
- view subjects he/she enrolls
- take available exams

Patterns Used
Category | Patterns |
---|---|
Organising domain logic | Domain model |
Architecture design for data-source layer | Data mapper |
Object-to-relational behavioral design | Unit of work; Lazy load |
Object-to-relational structural design | Identity field; Foreign key mapping; Association table mapping; Embedded value; Single table inheritance |
Concurrency | Pessimistic offline lock |
Security | Authentication enforcer; Authorisation enforcer; Secure Pipe |
Appendix

Source: https://www3.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_HowTo.html