Skip to content

Olivia0012/SWEN90007_2020_SuperGirls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SWEN90007_2020_SuperGirls

All Contributors

GitHub repo size GitHub

Introduction

This repository is used for managing deliverables of SWEN90007. 
All deliverables will be uploaded and managed here.

Contributors


Lu Wang


Jianjing Yao


Xueling Liu

- - -
- - -

Description

Patterns:

  1. Domain Logic

    Domain model

    Service Interface ; Service Implementation

  2. Data-source layer

    Data mapper

  3. Object-to-relational behavioural design

    Unit of Work

    Lazy load: question list in the Exam and answer list in the Submission.

    Identity Field: all tables

  4. Presentation layer:

    Implemented with React: frontend

  5. Concurrency:

    Pessimistic lock: ExclusiveWriteLock editingExamLockController editingMarkLockController

  6. Security:

    authentication

    Authorization: checking the user role in every controller before handling the request, for example, admin request controller for viewing and add subjects

    Secure Pipe: AESCrypto

Environment:

Backend: JavaEE - Java SE 14.0.2; Tomcat v9.0; 
Frontend: React v16.13.1; Node 11.0.0; npm: 6.14.8
Database: PostgreSql

Repository Structure

.
β”œβ”€β”€ LICENSE
β”œβ”€β”€ Procfile
β”œβ”€β”€ README.md
β”œβ”€β”€ WebContent
β”‚Β Β  β”œβ”€β”€ META-INF
β”‚Β Β  β”‚Β Β  └── MANIFEST.MF
β”‚Β Β  β”œβ”€β”€ WEB-INF
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ lib
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ fastjson-1.1.6.jar
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── postgresql-42.2.14.jar
β”‚Β Β  β”‚Β Β  └── web.xml
β”‚Β Β  └── test.jsp
β”œβ”€β”€ build
β”‚Β Β  └── classes
β”‚Β Β      β”œβ”€β”€ database
β”‚Β Β      β”‚Β Β  └── DatabaseConnection.class
β”‚Β Β      β”œβ”€β”€ domain
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Admin.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Answer.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ DomainObject.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Exam.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Instructor.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Question.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Student.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Subject.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Submission.class
β”‚Β Β      β”‚Β Β  └── User.class
β”‚Β Β      β”œβ”€β”€ enumeration
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamStatus.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ QuestionType.class
β”‚Β Β      β”‚Β Β  └── Role.class
β”‚Β Β      β”œβ”€β”€ mapper
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ AnswerMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ DataMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ QuestionMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ SubjectMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ SubmissionMapper.class
β”‚Β Β      β”‚Β Β  └── UserMapper.class
β”‚Β Β      β”œβ”€β”€ service
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ CreateNewExam.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ CreateNewExamImp.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ViewExam.class
β”‚Β Β      β”‚Β Β  └── ViewExamImp.class
β”‚Β Β      β”œβ”€β”€ servlet
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamController.class
β”‚Β Β      β”‚Β Β  └── HelloServlet.class
β”‚Β Β      └── shared
β”‚Β Β          β”œβ”€β”€ IdentityMap.class
β”‚Β Β          β”œβ”€β”€ LazyLoad.class
β”‚Β Β          └── UnitOfWork.class
β”œβ”€β”€ docs
β”‚Β Β  β”œβ”€β”€ Part2_Figures
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 1\ Domain\ Model.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 2\ οΏ½\200\2344+1οΏ½\200\235\ Framework.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 3\ UML\ Class\ Diagram\ Relationships.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 4\ Class\ Diagram.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 5\ Sequence\ Diagram\ of\ Instructor.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 6\ Sequence\ Diagram\ of\ Student.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 7\ Component\ Diagram.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 8-1\ Deployment\ Diagram.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 8-2\ Deployment\ Diagram.png
β”‚Β Β  β”‚Β Β  └── Figure\ 9\ Use\ Case\ Diagram.png
β”‚Β Β  β”œβ”€β”€ architecture
β”‚Β Β  β”‚Β Β  └── SWEN90007_CIS-TMPLT-ARCH-1.docx
β”‚Β Β  β”œβ”€β”€ meetings
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ README.md
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 2\ Minutes_Aug\ 10_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 3\ Minutes_Aug\ 17_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 4\ Minutes_Aug\ 24_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 5\ Minutes_Aug\ 31_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 6\ Minutes_Sep\ 07_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 7\ Minutes_Sep\ 14_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 8\ Minutes_Sep\ 21_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  └── Week\ 9\ Minutes_Sep\ 28_Team\ Super\ Girls.pdf
β”‚Β Β  β”œβ”€β”€ part1
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ README.md
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SWEN90007_2020_Part1_SuperGirls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ [01.00-D05]SWEN90007_2020_Part1_SuperGirls.doc
β”‚Β Β  β”‚Β Β  └── [01.00-D06]SWEN90007_2020_Part1_SuperGirls(1).doc
β”‚Β Β  └── part2
β”‚Β Β      └── SWEN90007_2020_Part2_SuperGirls.pdf
β”œβ”€β”€ frontend
β”‚Β Β  β”œβ”€β”€ LICENSE
β”‚Β Β  β”œβ”€β”€ LICENSE.md
β”‚Β Β  β”œβ”€β”€ README.md
β”‚Β Β  β”œβ”€β”€ jsconfig.json
β”‚Β Β  β”œβ”€β”€ nginx.conf
β”‚Β Β  β”œβ”€β”€ package-lock.json
β”‚Β Β  β”œβ”€β”€ package.json
β”‚Β Β  β”œβ”€β”€ public
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ _redirects
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ favicon.ico
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.html
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ manifest.json
β”‚Β Β  β”‚Β Β  └── static
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ images
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ auth.jpeg
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ avatars
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_1.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_10.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_11.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_2.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_3.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_4.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_5.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_6.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_7.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_8.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── avatar_9.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ not_found.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ products
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_1.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_2.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_3.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_4.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_5.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── product_6.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ undraw_page_not_found_su7k.svg
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── undraw_resume_folder_2_arse.svg
β”‚Β Β  β”‚Β Β      └── logo.svg
β”‚Β Β  β”œβ”€β”€ server.js
β”‚Β Β  β”œβ”€β”€ setupProxy.js
β”‚Β Β  β”œβ”€β”€ src
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ App.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ examAPI.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── instructorAPI.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ components
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ GlobalStyles.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Logo.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Page.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ icons
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Facebook.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Google.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ layouts
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DashboardAdmin
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavBar
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavItem.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ TopBar.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DashboardLayout
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavBar
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavItem.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ TopBar.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── MainLayout
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ TopBar.js
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── index.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ mixins
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── chartjs.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ routes.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ serviceWorker.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ setupProxy.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ theme
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ shadows.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── typography.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ util
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── GetJson.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ utils
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ getInitials.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ loading.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── setAuthToken.js
β”‚Β Β  β”‚Β Β  └── views
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ admin
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ SubjectManagement
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectManagement.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── UserTransferList.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── UserManagement
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── UserManagement.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ auth
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ LoginView.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── RegisterView.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ exam
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ EditExamView
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamBasicInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NewQuestion.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamView
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamBasicInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NewQuestion.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionCard.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ MarkExamView
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionCard.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── TakeExam
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ ExamInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ QuestionCard.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── index.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ student
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── UserListView
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ data.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── index.js
β”‚Β Β  β”‚Β Β      └── subject
β”‚Β Β  β”‚Β Β          └── SubjectListView
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ ResultsforStudent.js
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ data.json
β”‚Β Β  β”‚Β Β              └── index.js
β”‚Β Β  β”œβ”€β”€ tree.text
β”‚Β Β  └── yarn.lock
β”œβ”€β”€ pom.xml
β”œβ”€β”€ src
β”‚Β Β  β”œβ”€β”€ database
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ConnectionPool.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DBMaintain.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DatabaseConnection.java
β”‚Β Β  β”‚Β Β  └── QueryExecutor.java
β”‚Β Β  β”œβ”€β”€ domain
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Answer.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DomainObject.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Exam.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Instructor.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorList.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListProxyImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Question.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Relationship.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Student.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Subject.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Submission.java
β”‚Β Β  β”‚Β Β  └── User.java
β”‚Β Β  β”œβ”€β”€ enumeration
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamStatus.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionType.java
β”‚Β Β  β”‚Β Β  └── Role.java
β”‚Β Β  β”œβ”€β”€ mapper
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AnswerMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DataMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExclusiveWriteLockManager.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockManager.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RelationshipMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionMapper.java
β”‚Β Β  β”‚Β Β  └── UserMapper.java
β”‚Β Β  β”œβ”€β”€ service
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamService.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentService.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectService.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionService.java
β”‚Β Β  β”‚Β Β  └── UserService.java
β”‚Β Β  β”œβ”€β”€ serviceImp
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamServiceImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentServiceImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectServiceImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionServiceImp.java
β”‚Β Β  β”‚Β Β  └── UserServiceImp.java
β”‚Β Β  β”œβ”€β”€ servlet
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AddExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminSubjectsController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUserInSubjectController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUsersController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteQuestionController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ EditExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorEditMarkController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockEditExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockMarkExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LoginController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LogoutController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MarkExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectController.java
β”‚Β Β  β”‚Β Β  └── TakeExamController.java
β”‚Β Β  β”œβ”€β”€ shared
β”‚Β Β  β”‚Β Β  └── UnitOfWork.java
β”‚Β Β  └── util
β”‚Β Β      β”œβ”€β”€ AESCrypto.java
β”‚Β Β      β”œβ”€β”€ JsonToObject.java
β”‚Β Β      β”œβ”€β”€ ResponseHeader.java
β”‚Β Β      └── SSOLogin.java
β”œβ”€β”€ system.properties
β”œβ”€β”€ target
β”‚Β Β  β”œβ”€β”€ classes
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ database
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ConnectionPool.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DBMaintain.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DatabaseConnection.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── QueryExecutor.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ domain
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Answer.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DomainObject.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Exam.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Instructor.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorList.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListProxyImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Question.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Relationship.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Student.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Subject.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Submission.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── User.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ enumeration
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamStatus.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionType.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Role.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ mapper
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AnswerMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DataMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExclusiveWriteLockManager.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockManager.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RelationshipMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UserMapper.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ service
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UserService.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ serviceImp
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UserServiceImp.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ servlet
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AddExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminSubjectsController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUserInSubjectController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUsersController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteQuestionController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ EditExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorEditMarkController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockEditExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockMarkExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LoginController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LogoutController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MarkExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── TakeExamController.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ shared
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UnitOfWork.class
β”‚Β Β  β”‚Β Β  └── util
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ AESCrypto.class
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ JsonToObject.class
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ ResponseHeader.class
β”‚Β Β  β”‚Β Β      └── SSOLogin.class
β”‚Β Β  β”œβ”€β”€ m2e-wtp
β”‚Β Β  β”‚Β Β  └── web-resources
β”‚Β Β  β”‚Β Β      └── META-INF
β”‚Β Β  β”‚Β Β          β”œβ”€β”€ MANIFEST.MF
β”‚Β Β  β”‚Β Β          └── maven
β”‚Β Β  β”‚Β Β              └── SWEN90007_2020_SuperGirls
β”‚Β Β  β”‚Β Β                  └── SWEN90007_2020_SuperGirls
β”‚Β Β  β”‚Β Β                      β”œβ”€β”€ pom.properties
β”‚Β Β  β”‚Β Β                      └── pom.xml
β”‚Β Β  └── test-classes
β”œβ”€β”€ test
β”‚Β Β  └── SWEN90007-CIS-SW-TSTD.doc
└── tree.text

82 directories, 292 files
.
β”œβ”€β”€ LICENSE
β”œβ”€β”€ Procfile
β”œβ”€β”€ README.md
β”œβ”€β”€ WebContent
β”‚Β Β  β”œβ”€β”€ META-INF
β”‚Β Β  β”‚Β Β  └── MANIFEST.MF
β”‚Β Β  β”œβ”€β”€ WEB-INF
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ lib
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ fastjson-1.1.6.jar
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── postgresql-42.2.14.jar
β”‚Β Β  β”‚Β Β  └── web.xml
β”‚Β Β  └── test.jsp
β”œβ”€β”€ build
β”‚Β Β  └── classes
β”‚Β Β      β”œβ”€β”€ database
β”‚Β Β      β”‚Β Β  └── DatabaseConnection.class
β”‚Β Β      β”œβ”€β”€ domain
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Admin.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Answer.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ DomainObject.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Exam.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Instructor.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Question.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Student.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Subject.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Submission.class
β”‚Β Β      β”‚Β Β  └── User.class
β”‚Β Β      β”œβ”€β”€ enumeration
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamStatus.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ QuestionType.class
β”‚Β Β      β”‚Β Β  └── Role.class
β”‚Β Β      β”œβ”€β”€ mapper
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ AnswerMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ DataMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ QuestionMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ SubjectMapper.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ SubmissionMapper.class
β”‚Β Β      β”‚Β Β  └── UserMapper.class
β”‚Β Β      β”œβ”€β”€ service
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ CreateNewExam.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ CreateNewExamImp.class
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ViewExam.class
β”‚Β Β      β”‚Β Β  └── ViewExamImp.class
β”‚Β Β      β”œβ”€β”€ servlet
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamController.class
β”‚Β Β      β”‚Β Β  └── HelloServlet.class
β”‚Β Β      └── shared
β”‚Β Β          β”œβ”€β”€ IdentityMap.class
β”‚Β Β          β”œβ”€β”€ LazyLoad.class
β”‚Β Β          └── UnitOfWork.class
β”œβ”€β”€ docs
β”‚Β Β  β”œβ”€β”€ Part2_Figures
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 1\ Domain\ Model.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 2\ οΏ½\200\2344+1οΏ½\200\235\ Framework.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 3\ UML\ Class\ Diagram\ Relationships.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 4\ Class\ Diagram.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 5\ Sequence\ Diagram\ of\ Instructor.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 6\ Sequence\ Diagram\ of\ Student.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 7\ Component\ Diagram.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 8-1\ Deployment\ Diagram.png
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Figure\ 8-2\ Deployment\ Diagram.png
β”‚Β Β  β”‚Β Β  └── Figure\ 9\ Use\ Case\ Diagram.png
β”‚Β Β  β”œβ”€β”€ architecture
β”‚Β Β  β”‚Β Β  └── SWEN90007_CIS-TMPLT-ARCH-1.docx
β”‚Β Β  β”œβ”€β”€ meetings
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ README.md
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 2\ Minutes_Aug\ 10_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 3\ Minutes_Aug\ 17_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 4\ Minutes_Aug\ 24_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 5\ Minutes_Aug\ 31_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 6\ Minutes_Sep\ 07_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 7\ Minutes_Sep\ 14_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Week\ 8\ Minutes_Sep\ 21_Team\ Super\ Girls.pdf
β”‚Β Β  β”‚Β Β  └── Week\ 9\ Minutes_Sep\ 28_Team\ Super\ Girls.pdf
β”‚Β Β  β”œβ”€β”€ part1
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ README.md
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SWEN90007_2020_Part1_SuperGirls.pdf
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ [01.00-D05]SWEN90007_2020_Part1_SuperGirls.doc
β”‚Β Β  β”‚Β Β  └── [01.00-D06]SWEN90007_2020_Part1_SuperGirls(1).doc
β”‚Β Β  └── part2
β”‚Β Β      └── SWEN90007_2020_Part2_SuperGirls.pdf
β”œβ”€β”€ frontend
β”‚Β Β  β”œβ”€β”€ LICENSE
β”‚Β Β  β”œβ”€β”€ LICENSE.md
β”‚Β Β  β”œβ”€β”€ README.md
β”‚Β Β  β”œβ”€β”€ jsconfig.json
β”‚Β Β  β”œβ”€β”€ nginx.conf
β”‚Β Β  β”œβ”€β”€ package-lock.json
β”‚Β Β  β”œβ”€β”€ package.json
β”‚Β Β  β”œβ”€β”€ public
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ _redirects
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ favicon.ico
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.html
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ manifest.json
β”‚Β Β  β”‚Β Β  └── static
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ images
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ auth.jpeg
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ avatars
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_1.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_10.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_11.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_2.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_3.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_4.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_5.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_6.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_7.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ avatar_8.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── avatar_9.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ not_found.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ products
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_1.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_2.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_3.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_4.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_5.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── product_6.png
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ undraw_page_not_found_su7k.svg
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── undraw_resume_folder_2_arse.svg
β”‚Β Β  β”‚Β Β      └── logo.svg
β”‚Β Β  β”œβ”€β”€ server.js
β”‚Β Β  β”œβ”€β”€ setupProxy.js
β”‚Β Β  β”œβ”€β”€ src
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ App.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ examAPI.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── instructorAPI.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ components
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ GlobalStyles.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Logo.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Page.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ icons
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Facebook.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Google.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ layouts
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DashboardAdmin
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavBar
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavItem.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ TopBar.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DashboardLayout
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavBar
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NavItem.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ TopBar.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── MainLayout
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ TopBar.js
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── index.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ mixins
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── chartjs.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ routes.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ serviceWorker.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ setupProxy.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ theme
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ index.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ shadows.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── typography.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ util
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── GetJson.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ utils
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ getInitials.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ loading.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── setAuthToken.js
β”‚Β Β  β”‚Β Β  └── views
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ admin
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ SubjectManagement
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectManagement.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── UserTransferList.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── UserManagement
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── UserManagement.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ auth
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ LoginView.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── RegisterView.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ exam
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ EditExamView
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamBasicInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NewQuestion.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ ExamView
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamBasicInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ NewQuestion.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionCard.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ MarkExamView
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionCard.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── index.js
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── TakeExam
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ ExamInfo.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ QuestionCard.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── index.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ student
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── UserListView
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ data.js
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── index.js
β”‚Β Β  β”‚Β Β      └── subject
β”‚Β Β  β”‚Β Β          └── SubjectListView
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ Results.js
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ ResultsforStudent.js
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ Toolbar.js
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ data.json
β”‚Β Β  β”‚Β Β              └── index.js
β”‚Β Β  β”œβ”€β”€ tree.text
β”‚Β Β  └── yarn.lock
β”œβ”€β”€ pom.xml
β”œβ”€β”€ src
β”‚Β Β  β”œβ”€β”€ database
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ConnectionPool.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DBMaintain.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DatabaseConnection.java
β”‚Β Β  β”‚Β Β  └── QueryExecutor.java
β”‚Β Β  β”œβ”€β”€ domain
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Answer.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DomainObject.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Exam.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Instructor.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorList.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListProxyImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Question.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Relationship.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Student.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Subject.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Submission.java
β”‚Β Β  β”‚Β Β  └── User.java
β”‚Β Β  β”œβ”€β”€ enumeration
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamStatus.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionType.java
β”‚Β Β  β”‚Β Β  └── Role.java
β”‚Β Β  β”œβ”€β”€ mapper
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AnswerMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DataMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExclusiveWriteLockManager.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockManager.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RelationshipMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectMapper.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionMapper.java
β”‚Β Β  β”‚Β Β  └── UserMapper.java
β”‚Β Β  β”œβ”€β”€ service
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamService.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentService.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectService.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionService.java
β”‚Β Β  β”‚Β Β  └── UserService.java
β”‚Β Β  β”œβ”€β”€ serviceImp
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamServiceImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentServiceImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectServiceImp.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionServiceImp.java
β”‚Β Β  β”‚Β Β  └── UserServiceImp.java
β”‚Β Β  β”œβ”€β”€ servlet
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AddExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminSubjectsController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUserInSubjectController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUsersController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteQuestionController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ EditExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorEditMarkController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockEditExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockMarkExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LoginController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LogoutController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MarkExamController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectController.java
β”‚Β Β  β”‚Β Β  └── TakeExamController.java
β”‚Β Β  β”œβ”€β”€ shared
β”‚Β Β  β”‚Β Β  └── UnitOfWork.java
β”‚Β Β  └── util
β”‚Β Β      β”œβ”€β”€ AESCrypto.java
β”‚Β Β      β”œβ”€β”€ JsonToObject.java
β”‚Β Β      β”œβ”€β”€ ResponseHeader.java
β”‚Β Β      └── SSOLogin.java
β”œβ”€β”€ system.properties
β”œβ”€β”€ target
β”‚Β Β  β”œβ”€β”€ classes
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ database
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ConnectionPool.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DBMaintain.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DatabaseConnection.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── QueryExecutor.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ domain
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Answer.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DomainObject.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Exam.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Instructor.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorList.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorListProxyImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Question.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Relationship.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Student.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Subject.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Submission.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── User.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ enumeration
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamStatus.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionType.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Role.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ mapper
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AnswerMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DataMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExclusiveWriteLockManager.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockManager.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ QuestionMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RelationshipMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionMapper.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UserMapper.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ service
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UserService.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ serviceImp
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubmissionServiceImp.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UserServiceImp.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ servlet
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AddExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminSubjectsController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUserInSubjectController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AdminUsersController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ DeleteQuestionController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ EditExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ InstructorEditMarkController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockEditExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LockMarkExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LoginController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LogoutController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MarkExamController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StudentController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SubjectController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── TakeExamController.class
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ shared
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UnitOfWork.class
β”‚Β Β  β”‚Β Β  └── util
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ AESCrypto.class
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ JsonToObject.class
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ ResponseHeader.class
β”‚Β Β  β”‚Β Β      └── SSOLogin.class
β”‚Β Β  β”œβ”€β”€ m2e-wtp
β”‚Β Β  β”‚Β Β  └── web-resources
β”‚Β Β  β”‚Β Β      └── META-INF
β”‚Β Β  β”‚Β Β          β”œβ”€β”€ MANIFEST.MF
β”‚Β Β  β”‚Β Β          └── maven
β”‚Β Β  β”‚Β Β              └── SWEN90007_2020_SuperGirls
β”‚Β Β  β”‚Β Β                  └── SWEN90007_2020_SuperGirls
β”‚Β Β  β”‚Β Β                      β”œβ”€β”€ pom.properties
β”‚Β Β  β”‚Β Β                      └── pom.xml
β”‚Β Β  └── test-classes
β”œβ”€β”€ test
β”‚Β Β  └── SWEN90007-CIS-SW-TSTD.doc
└── tree.text

Git Workflow

1. Development set up

γ€€Clone the repository

git clone git@github.com:Olivia0012/SWEN90007_2020_SuperGirls.git

2. Branch naming

γ€€Create a new branch

git branch <new-branch> 

γ€€Change the current working branch to the new branch

git checkout <new-branch> 

γ€€Push the new branch

git push origin <new-branch> 

γ€€Branch naming standard

<end>/<tag>/<description>
 Β· <application> can be one of backend or frontend.
 Β· <tag> element matches the tags for the commit standards.
 Β· <description> should be limited to a small number of works.
Examples:γ€€frontend/feature/student-login
           backend/test/instructor-logout
           backend/fix/view-exams 

3. Commit standards

Tag Description
feature A new feature
fix Fix a bug
test Unit testing/ integration testing

4. Merge changes

Β· Create a pull request 
Β· Do code review with team members 
Β· Merge the change 

Deliverables:

Deadlines

    Part 1 : 23/08/2020
    Part 2 : 04/10/2020
    Part 3 : 01/11/2020

Details

1. Part 1

  • A report, in pdf format, including
    • team’s name, team members’ names, student ids, unimelb usernames and emails.
    • A use case diagram
    • A detailed description (see Appendix B for a sample template) of each use case. Each use case must contain: the list of actors associated with the use case, a high-level description of the use case, the typical course of events, and the main alternative courses of action.
    • A link to your private Git repository. Before the submission deadline, all the teaching team must have read and write access to your repository. A copy of this stage’s report should already be stored in your repository.
    • A Git release tag:
      • create a release tag in your Git repository for this deliverable in the following format: SWEN90007_2020_Part1_<team name>
      • The created release tag must be added to your report.

2. Part 2

  • The application coded and deployed.
    • The source code of your application must be committed to your Git repository.
    • The application must be deployed in Heroku.
  • You must create a tag in your Git repository for this deliverable in the following format: SWEN90007_2020_Part2_. The tag must be created before the submission deadline as this will be used to assess your deliverable (no exceptions).
  • A Software Architecture Design (SAD) report with the following items:
    • The domain model of your application.
    • The class diagram of your application.
    • A description of all patterns used. The description must be contextualized, this means it must include details of how the pattern was implemented as part of your particular application design. A sequence diagram illustrating the use of the pattern in your application must be included as part of your description.
    • Design rationale for unit of work and lazy load: an explanation on where the patterns were used and why.
    • A link to your Heroku deployed app, including a populated database with a range of realistic data samples/information that are necessary for the teaching team to test your application. You also need to provide additional instructions on how to use the existing data that you created in your system, for example: the administrator username and password. We do not expect to create any test data from scratch. Again, this is your project. Make sure you test your deliverable before your submission and that you have real/appropriate data in the deployed system. Meaningless data such as abc, 123, blah blah, subject ASDFG and so on will compromise the assessment of your project (and your final marks). See Appendix D for more details.
    • The Git release tag.

3. Part 3

  • The application coded and deployed. The source code of your application must be committed to your Git repository. The application must be deployed in Heroku.
  • You must create a tag in your Git repository for this deliverable in the following format: SWEN90007_2020_Part3_. The tag must be created before the submission deadline as this will be used to assess your deliverable (no exceptions).
  • A Software Architecture Design (SAD) report with the following items:
    • The updated class diagram of your application, with any updates made to it highlighted.
    • A description of all patterns used. The description must be contextualized, this means it must include details of how the pattern was implemented as part of your particular application design. A sequence diagram illustrating the use of the pattern in your application must also be included as part of your description.
    • An explanation and justification supporting your choice of concurrency pattern(s).
    • A link to your Heroku deployed App including data/information that we need in order to be able to test your application.
  • The Git release tag.