A comprehensive Spring Boot REST API for managing academic conferences, paper submissions, and peer review processes. This project was developed as part of an Information Systems course during our undergraduate studies in Software and Information Systems.
- Overview
 - Features
 - Technologies Used
 - Project Structure
 - Getting Started
 - API Endpoints
 - Entity Models
 - Security
 - Testing
 - Contributors
 - License
 
This REST API provides a complete solution for managing academic conferences, including:
- Conference creation and management
 - Paper/article submissions
 - Peer review assignment and evaluation
 - Role-based access control (Editor, Author, Reviewer)
 
The system follows a typical academic conference workflow where editors manage conferences, authors submit papers, and reviewers evaluate submissions.
- Create and manage conferences with title, theme, and date ranges
 - Role-based access control for conference operations
 - Conference listing and retrieval
 
- Authors can submit papers to conferences
 - Automatic reviewer assignment
 - Bulk reviewer assignment functionality
 - Submission tracking and status management
 
- Reviewers can evaluate assigned submissions
 - Comprehensive evaluation tracking
 - Evaluation history and analytics
 
- User registration and management
 - Role-based permissions (Editor, Author, Reviewer)
 - Secure user authentication
 
- Backend Framework: Spring Boot 3.3.7
 - Programming Language: Java 17
 - Database: MySQL (with H2 for testing)
 - ORM: Spring Data JPA / Hibernate
 - Security: Spring Security
 - Build Tool: Maven
 - Additional Libraries:
- Lombok (for reducing boilerplate code)
 - MySQL Connector
 
 
src/
├── main/
│   ├── java/tp/isilb/ProjetSi/
│   │   ├── ProjetSiApplication.java          # Main application class
│   │   ├── controllers/                       # REST controllers
│   │   │   ├── ConferenceController.java
│   │   │   ├── EvaluationController.java
│   │   │   └── SubmissionController.java
│   │   ├── entities/                         # JPA entities
│   │   │   ├── Conference.java
│   │   │   ├── Evaluation.java
│   │   │   ├── Role.java
│   │   │   ├── Submission.java
│   │   │   └── User.java
│   │   ├── repositories/                     # Data access layer
│   │   │   ├── ConferenceRepository.java
│   │   │   ├── EvaluationRepository.java
│   │   │   ├── SubmissionRepository.java
│   │   │   └── UserRepository.java
│   │   └── services/                         # Business logic layer
│   │       ├── ConferenceService.java
│   │       ├── EvaluationService.java
│   │       ├── SubmissionService.java
│   │       └── UserService.java
│   └── resources/
│       └── application.properties            # Application configuration
└── test/
    └── java/tp/isilb/ProjetSi/
        └── ProjetSiApplicationTests.java     # Test classes
- Java 17 or higher
 - Maven 3.6 or higher
 - MySQL 8.0 or higher (for production)
 
- 
Clone the repository
git clone <repository-url> cd ProjetSi
 - 
Install dependencies
mvn clean install
 
- 
Create MySQL Database
CREATE DATABASE conference_db;
 - 
Configure Database Connection
Update
src/main/resources/application.properties:# MySQL DataSource Configuration spring.datasource.url=jdbc:mysql://localhost:3306/conference_db spring.datasource.username=your_username spring.datasource.password=your_password # Hibernate Configuration spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect spring.jpa.hibernate.ddl-auto=update
 
- 
Using Maven
mvn spring-boot:run
 - 
Using Java
mvn clean package java -jar target/project-0.0.1-SNAPSHOT.jar
 
The application will start on http://localhost:8080
- POST 
/api/conferences- Create a new conference (Editor only) - GET 
/api/conferences- Get all conferences 
- POST 
/api/submissions- Submit a paper (Author only) - POST 
/api/submissions/{id}/assign-reviewer- Assign a single reviewer - POST 
/api/submissions/{id}/assign-reviewers- Assign multiple reviewers - GET 
/api/submissions- Get all submissions 
- POST 
/api/evaluations/submissions/{submissionId}/evaluate- Submit evaluation (Reviewer only) - GET 
/api/evaluations- Get all evaluations 
id(Long) - Primary keytitle(String) - Conference titlestartDate(LocalDate) - Conference start dateendDate(LocalDate) - Conference end datetheme(String) - Conference theme
id(Long) - Primary keyname(String) - User name- Relationships with conferences, submissions, and evaluations
 
id(Long) - Primary key- Associated with a conference and author
 - Can have multiple reviewers and evaluations
 
id(Long) - Primary key- Links reviewer to submission with evaluation details
 
EDITOR- Manages conferencesAUTHOR- Submits papersREVIEWER- Reviews submissions
The application implements role-based access control:
- Editors: Can create and manage conferences
 - Authors: Can submit papers to conferences
 - Reviewers: Can evaluate assigned submissions
 
Authentication and authorization are handled through Spring Security.
Run the test suite:
mvn testThe project includes unit tests for core functionality and integration tests for API endpoints.
This project was developed by a team of 4 contributors as part of an Information Systems course:
- KARBALLA CHOUAIB
 - YOUSRA NEDJAH
 - MASOUM MONCEF
 - OURAOU ABEDILILAH
 
This project was created for educational purposes as part of an Information Systems course.