My bachelor's graduate work.
I was trying to create a system similar to EasyChair.
The application has a role system.
The basic flow:
- You apply with your conference, and then application admin validates your request and creates the conference.\
- You acquire the organizer role and can invite users into conference.
- Assign conference roles on a participant's page. There are several roles within a conference:
- submitter - submits a thesis
- conference admin - can manage roles and send submissions on review
- reviewer - reviews user's submissions
- After thesis was submitted, conference admin has to assign reviewers, and send it on review
- Reviewers can download it and write a review in the system
- If thesis is not acceptable, then Submitter has to edit and reupload it
- Conference admin sends it on review one more time
- The process continues until thesis will be accepted
- Windows 10
- Java 20
- Gradle 7.5
- Node 18.17.1
- NPM 10.1.0
All commands should be executed from the root project folder
cd frontend
npm install
npm start
cd backend
gradlew.bat clean build bootRun
Application will be displayed at http://localhost:4200
There is stub data for conferences. Home page will display several conferences, but only first one has predefined participants:
- organizer
- login: creator@test.com
- password: test
- 1 reviewer
- login: first_reviewer@test.com
- password: test
- 2 reviewer
- login: second_reviewer@test.com
- password: test
- 1st plain user
- login: plain_user1@test.com
- password: test
- 2nd plain user
- login: plain_user2@test.com
- password: test
- Introduce object storage for documents (MinIo - open source solution)
- Switch from h2 to postgresql
- Introduce database change library: Liquibase/Flyway
- Move from custom security to OpenID Connect (Keycloak)
- Code refactoring & Tests
- Rewrite reviewing system: Move from 'reviewers per submissions' to 'reviewers per conference'