Skip to content

chouaibKr0/Conference-Management-System---REST-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Conference Management System - REST API

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.

📋 Table of Contents

🎯 Overview

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.

✨ Features

🏛️ Conference Management

  • Create and manage conferences with title, theme, and date ranges
  • Role-based access control for conference operations
  • Conference listing and retrieval

📝 Submission Management

  • Authors can submit papers to conferences
  • Automatic reviewer assignment
  • Bulk reviewer assignment functionality
  • Submission tracking and status management

🔍 Evaluation System

  • Reviewers can evaluate assigned submissions
  • Comprehensive evaluation tracking
  • Evaluation history and analytics

👥 User Management

  • User registration and management
  • Role-based permissions (Editor, Author, Reviewer)
  • Secure user authentication

🛠️ Technologies Used

  • 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

📁 Project Structure

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

🚀 Getting Started

Prerequisites

  • Java 17 or higher
  • Maven 3.6 or higher
  • MySQL 8.0 or higher (for production)

Installation

  1. Clone the repository

    git clone <repository-url>
    cd ProjetSi
  2. Install dependencies

    mvn clean install

Database Setup

  1. Create MySQL Database

    CREATE DATABASE conference_db;
  2. 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

Running the Application

  1. Using Maven

    mvn spring-boot:run
  2. Using Java

    mvn clean package
    java -jar target/project-0.0.1-SNAPSHOT.jar

The application will start on http://localhost:8080

📚 API Endpoints

🏛️ Conference Management

  • POST /api/conferences - Create a new conference (Editor only)
  • GET /api/conferences - Get all conferences

📝 Submission Management

  • 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

🔍 Evaluation Management

  • POST /api/evaluations/submissions/{submissionId}/evaluate - Submit evaluation (Reviewer only)
  • GET /api/evaluations - Get all evaluations

🗂️ Entity Models

Conference

  • id (Long) - Primary key
  • title (String) - Conference title
  • startDate (LocalDate) - Conference start date
  • endDate (LocalDate) - Conference end date
  • theme (String) - Conference theme

User

  • id (Long) - Primary key
  • name (String) - User name
  • Relationships with conferences, submissions, and evaluations

Submission

  • id (Long) - Primary key
  • Associated with a conference and author
  • Can have multiple reviewers and evaluations

Evaluation

  • id (Long) - Primary key
  • Links reviewer to submission with evaluation details

Role (Enum)

  • EDITOR - Manages conferences
  • AUTHOR - Submits papers
  • REVIEWER - Reviews submissions

🔐 Security

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.

🧪 Testing

Run the test suite:

mvn test

The project includes unit tests for core functionality and integration tests for API endpoints.

👨‍💻 Contributors

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

📄 License

This project was created for educational purposes as part of an Information Systems course.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages