Skip to main content
Back to Site

System Documentation

Website Live: core-collection.comPhase 1 Complete βœ…Next.js 13.5 + TypeScript + Prisma

Core Collection

Complete System Documentation & Technical Specification

🚧 In Developmentβœ… Phase 1 CompleteπŸ“Š MySQL + Prisma

Core Collection - Multidisciplinary Scientific Journal

Complete System Documentation

<div align="center">

Status Live Next.js TypeScript MySQL

πŸ“– View This Documentation Online

https://core-collection.com/docs

</div>

🎯 Single Source of Truth - This document contains all information about the Core Collection journal system architecture, design decisions, implementation details, and operational procedures. Share this with any AI or developer to understand the complete system.


πŸ“Š Current Development Status

ComponentStatusProgress
Core Infrastructure
Project Setupβœ… Complete100%
Database Schema (Prisma)βœ… Complete100%
Database Seedingβœ… Complete100%
Header/Footer Componentsβœ… Complete100%
Global Styling & Design Systemβœ… Complete100%
TypeScript Typesβœ… Complete100%
Utility Functionsβœ… Complete100%
Public Pages
Homepageβœ… Complete100%
About Pageβœ… Complete100%
Editorial Board Pageβœ… Complete100%
Contact Pageβœ… Complete100%
For Authors Pageβœ… Complete100%
For Reviewers Pageβœ… Complete100%
Archive/Browse Pageβœ… Complete100%
Article Display Pagesβœ… Complete100%
Categories Pageβœ… Complete100%
Search Pageβœ… Complete100%
Announcements Pageβœ… Complete100%
FAQ Pageβœ… Complete100%
Submission System
Submit Manuscript Page (UI)βœ… Complete100%
Publication Ethics Pageβœ… Complete100%
Article Processing Chargesβœ… Complete100%
Authentication
Login Page (UI + Backend)βœ… Complete100%
Register Page (UI + Backend)βœ… Complete100%
Forgot Password (UI + Backend)βœ… Complete100%
Password Reset Flowβœ… Complete100%
Email Sending (Nodemailer)βœ… Complete100%
Legal Pages
Privacy Policyβœ… Complete100%
Terms of Useβœ… Complete100%
Cookie Policyβœ… Complete100%
Accessibility Statementβœ… Complete100%
Sitemapβœ… Complete100%
Author Dashboard
Main Dashboardβœ… Complete100%
Profile Managementβœ… Complete100%
Submissions Listβœ… Complete100%
Submission Detail Pageβœ… Complete100%
Recent Activity Feedβœ… Complete100%
Manuscript Submission
6-Step Submission Wizardβœ… Complete100%
File Upload Systemβœ… Complete100%
Draft Save & Continueβœ… Complete100%
Co-Author Email Notificationsβœ… Complete100%
Submission Confirmation Emailβœ… Complete100%
Reviewer Dashboardβœ… Complete100%
Review Invitationsβœ… Complete100%
Active Reviewsβœ… Complete100%
Review Form & Scoringβœ… Complete100%
Completed Reviewsβœ… Complete100%
Editor Dashboardβœ… Complete100%
Main Editor Dashboardβœ… Complete100%
Submissions Queueβœ… Complete100%
Submission Detail Viewβœ… Complete100%
Assign Reviewers (with workload)βœ… Complete100%
Invite Reviewers (with/without account)βœ… Complete100%
Make Decisions (2-reviewer min)βœ… Complete100%
Workflow Automationβœ… Complete100%
Author notify on reviewer acceptβœ… Complete100%
Author notify on editor assignmentβœ… Complete100%
Revision submission workflowβœ… Complete100%
Auto-notify reviewers on revisionβœ… Complete100%
Double-blind review enforcementβœ… Complete100%
File versioning & downloadβœ… Complete100%
Edit history trackingβœ… Complete100%
Response to reviewers displayβœ… Complete100%
Galley proof section (UI)βœ… Complete100%
Editorial Panel Enhancementsβœ… Complete100%
Desk Rejectionβœ… Complete100%
Reassign Reviewers (revisions)βœ… Complete100%
Editor Self-Reviewβœ… Complete100%
Editor-Author Messagingβœ… Complete100%
Author Withdrawal Requestβœ… Complete100%
Author Notifications Panelβœ… Complete100%
Reviewer UI Enhancementsβœ… Complete100%
Previous review display (own)βœ… Complete100%
Other reviewers' feedbackβœ… Complete100%
Confidential comments (to editor)βœ… Complete100%
File versioning in review UIβœ… Complete100%
Author response displayβœ… Complete100%
New reviewer invitation fixβœ… Complete100%
UI/UX Improvements (v0.17)βœ… Complete100%
Files sidebar in editor panelβœ… Complete100%
Review rounds display (author)βœ… Complete100%
Author-editor messaging UIβœ… Complete100%
Activity Notification Systemβœ… Complete100%
Message notificationsβœ… Complete100%
Reviewer event badgesβœ… Complete100%
Editor decision badgesβœ… Complete100%
Submission list highlightsβœ… Complete100%
Issue ManagementπŸ“‹ Planned0%
Admin PanelπŸ“‹ Planned0%
User ManagementπŸ“‹ Planned0%
SettingsπŸ“‹ Planned0%
AnalyticsπŸ“‹ Planned0%
External Integrations
ISSN ApplicationπŸ“‹ Planned0%
DOI Registration (CrossRef)πŸ“‹ Planned0%

Build Output (Latest)

Route (app)                              Size     First Load JS
β”Œ β—‹ /                                    201 B    91 kB
β”œ β—‹ /about                               206 B    91 kB
β”œ β—‹ /accessibility                       144 B    84 kB
β”œ Ξ» /announcements                       202 B    91 kB
β”œ Ξ» /announcements/[id]                  397 B    91.2 kB
β”œ Ξ» /archive                             201 B    91 kB
β”œ Ξ» /article/[slug]                      397 B    91.2 kB
β”œ Ξ» /categories                          206 B    91 kB
β”œ Ξ» /categories/[slug]                   395 B    91.2 kB
β”œ β—‹ /contact                             144 B    84 kB
β”œ β—‹ /cookie-policy                       205 B    91 kB
β”œ β—‹ /docs                                206 B    91 kB
β”œ β—‹ /editorial-board                     206 B    91 kB
β”œ β—‹ /faq                                 6.01 kB  96.8 kB
β”œ β—‹ /for-authors                         7.05 kB  97.8 kB
β”œ β—‹ /for-authors/ethics                  206 B    91 kB
β”œ β—‹ /for-authors/fees                    206 B    91 kB
β”œ β—‹ /for-reviewers                       6.57 kB  97.3 kB
β”œ β—‹ /forgot-password                     2.98 kB  93.8 kB
β”œ β—‹ /login                               3.33 kB  94.1 kB
β”œ β—‹ /privacy-policy                      206 B    91 kB
β”œ β—‹ /register                            4.75 kB  95.5 kB
β”œ β—‹ /search                              4.86 kB  95.6 kB
β”œ β—‹ /sitemap                             206 B    91 kB
β”œ β—‹ /submit                              5.92 kB  96.7 kB
β”” β—‹ /terms-of-use                        144 B    84 kB

Ξ»  (Server)  server-side renders at runtime
β—‹  (Static)  automatically rendered as static HTML

Last Updated: December 6, 2025 - UI/UX Improvements & Enhanced Notification System βœ…

🌐 Live Deployment Status

All Public Pages (37 verified routes):

CategoryPagesStatus
Main/, /about, /editorial-board, /contactβœ… Live
Content/archive, /article/[slug], /categories, /categories/[slug], /search, /announcements, /announcements/[id]βœ… Live
Authors/for-authors, /for-authors/ethics, /for-authors/fees, /submitβœ… Live
Reviewers/for-reviewersβœ… Live
Auth/login, /register, /forgot-passwordβœ… Live
Support/faq, /docsβœ… Live
Legal/privacy-policy, /terms-of-use, /cookie-policy, /accessibility, /sitemapβœ… Live

Server Management: PM2 (auto-restart enabled)

πŸ—„οΈ Database Status

ItemStatus
MySQL Databaseβœ… Connected
Prisma Schemaβœ… Synced
Sample Dataβœ… Seeded
Categories8 active
Sample Articles3 published
Sample Users4 created
Volumes/IssuesVol 1, Issues 1-2
Announcements3 active

Table of Contents

  1. Overview
  2. Publisher Information
  3. Research & Competitor Analysis
  4. Design Philosophy
  5. Technical Architecture
  6. Database Schema
  7. Features & Functionality
  8. ISSN & DOI Registration
  9. Page Structure
  10. API Endpoints
  11. Editorial Workflow
  12. Security & Compliance
  13. Deployment & Infrastructure
  14. Future Roadmap
  15. Development Changelog

1. Overview

Core Collection is a peer-reviewed, open-access, multidisciplinary scientific journal with monthly publication frequency. The journal accepts high-quality research across all scientific disciplines.

Key Characteristics

  • Type: Open Access, Peer-Reviewed
  • Frequency: Monthly
  • Format: Online (HTML + PDF)
  • Review Process: Double-blind peer review
  • Licensing: Creative Commons CC-BY 4.0
  • Website: https://core-collection.com

Mission Statement

To provide a high-quality, accessible platform for researchers worldwide to publish and disseminate multidisciplinary scientific research, fostering collaboration and knowledge sharing across all fields of study.


2. Publisher Information

Legal Entity: Science Scholar Limited

  • Company Number: 16312869
  • Registered Address: 167-169 Great Portland Street, London, England, W1W 5PF
  • Company Status: Active
  • Incorporated: 13 March 2025
  • Company Type: Private Limited Company

SIC Codes (Nature of Business)

  • 58110 - Book publishing
  • 58190 - Other publishing activities
  • 74909 - Other professional, scientific and technical activities

Company Registration


3. Research & Competitor Analysis

Publishers Analyzed

Elsevier

  • Strengths: Comprehensive author guidelines, robust Editorial Manager system, clear metrics display
  • Design: Clean professional look, ScienceDirect integration
  • Features: Graphical abstracts, supplementary materials, citation tools
  • Key Learning: Detailed "Guide for Authors" structure, PDF/HTML dual format

MDPI (Multidisciplinary Digital Publishing Institute)

  • Strengths: Rapid publication, open access focus, SuSy submission system
  • Design: Modern, clean interface with clear navigation
  • Features: Open peer review option, video abstracts, rapid turnaround
  • Key Learning: Streamlined submission process, transparent fees

SAGE Publications

  • Strengths: Strong author support, comprehensive reviewer resources
  • Design: User-friendly interface, consistent branding
  • Features: Multimedia support, author services, altmetrics
  • Key Learning: Reviewer guidelines, ethical standards presentation

Nature/Springer Nature

  • Strengths: Premium design, extensive article metrics, high-quality PDF layouts
  • Design: Sophisticated, data-rich article pages
  • Features: Article metrics, recommendations, related content
  • Key Learning: Article page layout, metrics integration

PLOS ONE

  • Strengths: Pioneer in open access, multidisciplinary scope
  • Design: Clean, accessible, research-focused
  • Features: Article-level metrics, discussion comments, open data
  • Key Learning: Multidisciplinary categorization, open science practices

Frontiers

  • Strengths: Research Topics (special issues), collaborative review
  • Design: Modern, interactive, community-focused
  • Features: Loop (researcher network), impact metrics, editorials
  • Key Learning: Special issue management, community engagement

BMJ (British Medical Journal)

  • Strengths: Strong search/filter tools, clear content segmentation
  • Design: Responsive, accessible, professional
  • Key Learning: Content organization, accessibility compliance

The Lancet

  • Strengths: Minimal clutter, focus on top research
  • Design: Elegant, authority-focused
  • Key Learning: Homepage prioritization, volume/issue navigation

Industry Best Practices Identified

  1. Homepage Design

    • Featured/latest articles prominently displayed
    • Clear navigation to all sections
    • Announcements and calls for papers visible
    • Journal metrics/impact displayed
  2. Article Pages

    • Abstract with keywords
    • HTML and PDF formats
    • Author information with ORCID
    • Citation tools (BibTeX, RIS, EndNote)
    • Article metrics (views, downloads, citations)
    • Social sharing buttons
    • Supplementary materials section
    • Related articles
  3. Submission System

    • Multi-step guided submission
    • Real-time progress tracking
    • Clear status indicators
    • Communication tools
    • File upload with validation
  4. Author Resources

    • Detailed preparation guidelines
    • Templates (Word, LaTeX)
    • Ethical guidelines
    • FAQs
    • Publication fees information
  5. Reviewer Portal

    • Clear evaluation criteria
    • Structured review forms
    • Deadline management
    • Communication with editors

4. Design Philosophy

Visual Identity

Color Palette

/* Primary Colors */
--primary-900: #0c1929;      /* Deep Navy - Headers, Footer */
--primary-800: #1a365d;      /* Navy Blue - Primary buttons */
--primary-700: #2a4365;      /* Medium Blue - Hover states */
--primary-600: #2b6cb0;      /* Blue - Links, accents */
--primary-500: #3182ce;      /* Light Blue - Secondary elements */

/* Accent Colors */
--accent-500: #38a169;       /* Green - Success, Open Access badge */
--accent-600: #2f855a;       /* Dark Green - Hover */
--warning-500: #d69e2e;      /* Amber - Warnings, Pending status */
--error-500: #e53e3e;        /* Red - Errors, Rejected status */

/* Neutral Colors */
--gray-50: #f7fafc;          /* Lightest background */
--gray-100: #edf2f7;         /* Card backgrounds */
--gray-200: #e2e8f0;         /* Borders */
--gray-300: #cbd5e0;         /* Disabled states */
--gray-500: #718096;         /* Secondary text */
--gray-700: #2d3748;         /* Primary text */
--gray-900: #1a202c;         /* Headings */

Typography

/* Headings */
font-family: 'Source Serif Pro', 'Georgia', serif;

/* Body Text */
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

/* Monospace (Code) */
font-family: 'JetBrains Mono', 'Fira Code', monospace;

Design Principles

  1. Scholarly Authority: Professional, trustworthy appearance
  2. Readability First: Optimal line length, generous spacing
  3. Clean Hierarchy: Clear visual distinction between sections
  4. Responsive: Mobile-first, works on all devices
  5. Accessible: WCAG 2.1 AA compliant
  6. Fast: Optimized for performance

Anti-Patterns to Avoid (No "AI Slop")

  • ❌ Generic purple gradients
  • ❌ Overused fonts (Inter as primary, Roboto)
  • ❌ Excessive rounded corners everywhere
  • ❌ Gratuitous animations
  • ❌ Stock photo backgrounds
  • ❌ Generic card layouts without purpose

5. Technical Architecture

Technology Stack

Frontend

TechnologyVersionPurpose
Next.js14.xReact framework with App Router
React18.xUI library
TypeScript5.xType safety
Tailwind CSS3.xUtility-first styling
Radix UILatestAccessible UI primitives
Framer MotionLatestAnimations
React Hook FormLatestForm management
ZodLatestSchema validation

Backend

TechnologyVersionPurpose
Next.js API Routes14.xAPI endpoints
Prisma5.xORM & database toolkit
NextAuth.js4.xAuthentication
NodemailerLatestEmail delivery
SharpLatestImage processing
pdf-libLatestPDF manipulation

Database

TechnologyPurpose
PostgreSQL 15+Primary database
Redis (optional)Caching, sessions

Infrastructure

ServicePurpose
Node.js 20 LTSRuntime
NginxReverse proxy
PM2Process management
Let's EncryptSSL certificates

Project Structure

/home/corecollection/public_html/
β”œβ”€β”€ app/                          # Next.js App Router
β”‚   β”œβ”€β”€ (public)/                 # Public pages
β”‚   β”‚   β”œβ”€β”€ page.tsx              # Homepage
β”‚   β”‚   β”œβ”€β”€ about/
β”‚   β”‚   β”œβ”€β”€ editorial-board/
β”‚   β”‚   β”œβ”€β”€ for-authors/
β”‚   β”‚   β”œβ”€β”€ for-reviewers/
β”‚   β”‚   β”œβ”€β”€ archive/
β”‚   β”‚   β”œβ”€β”€ article/[slug]/
β”‚   β”‚   β”œβ”€β”€ search/
β”‚   β”‚   └── contact/
β”‚   β”œβ”€β”€ (auth)/                   # Auth pages
β”‚   β”‚   β”œβ”€β”€ login/
β”‚   β”‚   β”œβ”€β”€ register/
β”‚   β”‚   └── forgot-password/
β”‚   β”œβ”€β”€ (dashboard)/              # Protected dashboards
β”‚   β”‚   β”œβ”€β”€ author/
β”‚   β”‚   β”œβ”€β”€ reviewer/
β”‚   β”‚   β”œβ”€β”€ editor/
β”‚   β”‚   └── admin/
β”‚   β”œβ”€β”€ submit/                   # Submission wizard
β”‚   β”œβ”€β”€ api/                      # API routes
β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ articles/
β”‚   β”‚   β”œβ”€β”€ submissions/
β”‚   β”‚   β”œβ”€β”€ reviews/
β”‚   β”‚   β”œβ”€β”€ users/
β”‚   β”‚   └── files/
β”‚   β”œβ”€β”€ layout.tsx
β”‚   └── globals.css
β”œβ”€β”€ components/                   # React components
β”‚   β”œβ”€β”€ ui/                       # Base UI components
β”‚   β”œβ”€β”€ forms/                    # Form components
β”‚   β”œβ”€β”€ layout/                   # Layout components
β”‚   β”œβ”€β”€ article/                  # Article-specific
β”‚   └── dashboard/                # Dashboard components
β”œβ”€β”€ lib/                          # Utilities
β”‚   β”œβ”€β”€ db.ts                     # Database client
β”‚   β”œβ”€β”€ auth.ts                   # Auth configuration
β”‚   β”œβ”€β”€ email.ts                  # Email utilities
β”‚   β”œβ”€β”€ doi.ts                    # DOI utilities
β”‚   β”œβ”€β”€ citation.ts               # Citation generators
β”‚   └── validations/              # Zod schemas
β”œβ”€β”€ prisma/
β”‚   β”œβ”€β”€ schema.prisma             # Database schema
β”‚   └── seed.ts                   # Seed data
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ images/
β”‚   β”‚   └── journal-cover.jpg     # Journal cover image (NASA Earth)
β”‚   β”œβ”€β”€ templates/                # Manuscript templates
β”‚   └── fonts/
β”œβ”€β”€ types/                        # TypeScript types
β”œβ”€β”€ hooks/                        # Custom React hooks
β”œβ”€β”€ .env.local                    # Environment variables
β”œβ”€β”€ next.config.js
β”œβ”€β”€ tailwind.config.js
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ package.json
└── SYSTEM_DOCUMENTATION.md       # This file

6. Database Schema

Entity Relationship Diagram (Conceptual)

Users ──────┬──────────── Submissions ────────── Articles
            β”‚                   β”‚                    β”‚
            β”‚                   β”‚                    β”‚
            β”œβ”€β”€β”€β”€ Reviews β”€β”€β”€β”€β”€β”€β”˜                    β”‚
            β”‚                                        β”‚
            └── EditorialBoard                       β”‚
                                                     β”‚
                                    ArticleFiles ─────
                                    ArticleAuthors ───
                                    ArticleCategories─
                                                     β”‚
Issues ──── Volumes                                  β”‚
   β”‚                                                 β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Prisma Schema

// prisma/schema.prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

// ============ USER MANAGEMENT ============

enum UserRole {
  AUTHOR
  REVIEWER
  EDITOR
  CHIEF_EDITOR
  ADMIN
}

model User {
  id            String    @id @default(cuid())
  email         String    @unique
  passwordHash  String?
  name          String
  title         String?   // Dr., Prof., etc.
  orcid         String?   @unique
  affiliation   String?
  country       String?
  bio           String?   @db.Text
  avatar        String?
  roles         UserRole[] @default([AUTHOR])
  emailVerified DateTime?
  isActive      Boolean   @default(true)
  createdAt     DateTime  @default(now())
  updatedAt     DateTime  @updatedAt
  
  // Relations
  submissions       Submission[]
  reviews           Review[]
  editorialPosition EditorialBoard?
  authoredArticles  ArticleAuthor[]
  notifications     Notification[]
  auditLogs         AuditLog[]
  sessions          Session[]
  accounts          Account[]
}

model Account {
  id                String  @id @default(cuid())
  userId            String
  type              String
  provider          String
  providerAccountId String
  refresh_token     String? @db.Text
  access_token      String? @db.Text
  expires_at        Int?
  token_type        String?
  scope             String?
  id_token          String? @db.Text
  session_state     String?
  
  user User @relation(fields: [userId], references: [id], onDelete: Cascade)
  
  @@unique([provider, providerAccountId])
}

model Session {
  id           String   @id @default(cuid())
  sessionToken String   @unique
  userId       String
  expires      DateTime
  user         User     @relation(fields: [userId], references: [id], onDelete: Cascade)
}

model VerificationToken {
  identifier String
  token      String   @unique
  expires    DateTime
  
  @@unique([identifier, token])
}

// ============ EDITORIAL BOARD ============

enum BoardPosition {
  CHIEF_EDITOR
  ASSOCIATE_EDITOR
  MANAGING_EDITOR
  SECTION_EDITOR
  EDITORIAL_BOARD_MEMBER
  ADVISORY_BOARD
}

model EditorialBoard {
  id          String        @id @default(cuid())
  userId      String        @unique
  position    BoardPosition
  department  String?
  expertise   String[]
  displayBio  String?       @db.Text
  sortOrder   Int           @default(0)
  isPublic    Boolean       @default(true)
  startDate   DateTime      @default(now())
  endDate     DateTime?
  
  user User @relation(fields: [userId], references: [id])
}

// ============ ARTICLES & PUBLICATIONS ============

enum ArticleStatus {
  DRAFT
  SUBMITTED
  UNDER_REVIEW
  REVISION_REQUESTED
  REVISED
  ACCEPTED
  REJECTED
  PUBLISHED
  RETRACTED
}

enum ArticleType {
  RESEARCH_ARTICLE
  REVIEW_ARTICLE
  SHORT_COMMUNICATION
  CASE_REPORT
  EDITORIAL
  LETTER
  COMMENTARY
  BOOK_REVIEW
}

model Article {
  id              String        @id @default(cuid())
  slug            String        @unique
  title           String
  abstract        String        @db.Text
  keywords        String[]
  articleType     ArticleType   @default(RESEARCH_ARTICLE)
  status          ArticleStatus @default(DRAFT)
  
  // Publication info
  doi             String?       @unique
  volume          Int?
  issue           Int?
  pageStart       Int?
  pageEnd         Int?
  articleNumber   String?
  
  // Dates
  receivedDate    DateTime?
  revisedDate     DateTime?
  acceptedDate    DateTime?
  publishedDate   DateTime?
  
  // Content
  htmlContent     String?       @db.Text
  pdfPath         String?
  
  // Metrics
  viewCount       Int           @default(0)
  downloadCount   Int           @default(0)
  citationCount   Int           @default(0)
  
  // Metadata
  fundingInfo     String?       @db.Text
  conflictOfInterest String?    @db.Text
  acknowledgments String?       @db.Text
  dataAvailability String?      @db.Text
  ethicsStatement String?       @db.Text
  
  createdAt       DateTime      @default(now())
  updatedAt       DateTime      @updatedAt
  
  // Relations
  issueId         String?
  issue           Issue?        @relation(fields: [issueId], references: [id])
  submissions     Submission[]
  authors         ArticleAuthor[]
  categories      ArticleCategory[]
  files           ArticleFile[]
  references      Reference[]
}

model ArticleAuthor {
  id            String  @id @default(cuid())
  articleId     String
  userId        String?
  
  // For non-registered authors
  name          String
  email         String
  orcid         String?
  affiliation   String
  country       String?
  
  isCorresponding Boolean @default(false)
  sortOrder       Int     @default(0)
  
  article Article @relation(fields: [articleId], references: [id], onDelete: Cascade)
  user    User?   @relation(fields: [userId], references: [id])
  
  @@unique([articleId, email])
}

enum FileType {
  MANUSCRIPT
  FIGURE
  TABLE
  SUPPLEMENTARY
  COVER_LETTER
  REVISION_RESPONSE
  GRAPHICAL_ABSTRACT
  VIDEO_ABSTRACT
  DATASET
  PDF_PROOF
  PUBLISHED_PDF
}

model ArticleFile {
  id          String    @id @default(cuid())
  articleId   String
  fileType    FileType
  fileName    String
  originalName String
  mimeType    String
  size        Int
  path        String
  caption     String?
  sortOrder   Int       @default(0)
  uploadedAt  DateTime  @default(now())
  
  article Article @relation(fields: [articleId], references: [id], onDelete: Cascade)
}

model Reference {
  id        String  @id @default(cuid())
  articleId String
  sortOrder Int
  citation  String  @db.Text
  doi       String?
  url       String?
  
  article Article @relation(fields: [articleId], references: [id], onDelete: Cascade)
}

// ============ CATEGORIES ============

model Category {
  id          String    @id @default(cuid())
  name        String    @unique
  slug        String    @unique
  description String?
  parentId    String?
  sortOrder   Int       @default(0)
  
  parent      Category? @relation("CategoryHierarchy", fields: [parentId], references: [id])
  children    Category[] @relation("CategoryHierarchy")
  articles    ArticleCategory[]
}

model ArticleCategory {
  articleId   String
  categoryId  String
  isPrimary   Boolean @default(false)
  
  article     Article  @relation(fields: [articleId], references: [id], onDelete: Cascade)
  category    Category @relation(fields: [categoryId], references: [id], onDelete: Cascade)
  
  @@id([articleId, categoryId])
}

// ============ VOLUMES & ISSUES ============

model Volume {
  id          String   @id @default(cuid())
  number      Int      @unique
  year        Int
  description String?
  createdAt   DateTime @default(now())
  
  issues      Issue[]
}

model Issue {
  id          String    @id @default(cuid())
  volumeId    String
  number      Int
  title       String?   // Special issue title
  description String?   @db.Text
  coverImage  String?
  isSpecial   Boolean   @default(false)
  publishedAt DateTime?
  createdAt   DateTime  @default(now())
  
  volume      Volume    @relation(fields: [volumeId], references: [id])
  articles    Article[]
  
  @@unique([volumeId, number])
}

// ============ SUBMISSION & REVIEW ============

enum SubmissionStatus {
  DRAFT
  SUBMITTED
  EDITOR_ASSIGNED
  UNDER_REVIEW
  AWAITING_DECISION
  REVISION_REQUESTED
  REVISED_SUBMITTED
  ACCEPTED
  REJECTED
  WITHDRAWN
}

model Submission {
  id              String           @id @default(cuid())
  articleId       String
  submitterId     String
  editorId        String?
  
  status          SubmissionStatus @default(DRAFT)
  version         Int              @default(1)
  
  // Cover letter and notes
  coverLetter     String?          @db.Text
  authorNotes     String?          @db.Text
  editorNotes     String?          @db.Text
  
  // Suggested/Excluded reviewers
  suggestedReviewers String[]
  excludedReviewers  String[]
  
  // Dates
  submittedAt     DateTime?
  assignedAt      DateTime?
  decisionAt      DateTime?
  
  // Decision
  decision        String?
  decisionComments String?         @db.Text
  
  createdAt       DateTime         @default(now())
  updatedAt       DateTime         @updatedAt
  
  // Relations
  article         Article          @relation(fields: [articleId], references: [id])
  submitter       User             @relation(fields: [submitterId], references: [id])
  reviews         Review[]
}

enum ReviewRecommendation {
  ACCEPT
  MINOR_REVISION
  MAJOR_REVISION
  REJECT
}

model Review {
  id              String               @id @default(cuid())
  submissionId    String
  reviewerId      String
  
  // Review content
  recommendation  ReviewRecommendation?
  commentsToAuthor String?             @db.Text
  commentsToEditor String?             @db.Text
  
  // Scoring (1-5 scale)
  originalityScore     Int?
  significanceScore    Int?
  methodologyScore     Int?
  clarityScore         Int?
  referencesScore      Int?
  
  // Status
  invitedAt       DateTime             @default(now())
  acceptedAt      DateTime?
  declinedAt      DateTime?
  completedAt     DateTime?
  dueDate         DateTime?
  
  // Revision reviews
  isRevisionReview Boolean             @default(false)
  previousReviewId String?
  
  createdAt       DateTime             @default(now())
  updatedAt       DateTime             @updatedAt
  
  submission      Submission           @relation(fields: [submissionId], references: [id])
  reviewer        User                 @relation(fields: [reviewerId], references: [id])
}

// ============ NOTIFICATIONS ============

enum NotificationType {
  SUBMISSION_RECEIVED
  REVIEW_INVITATION
  REVIEW_REMINDER
  REVIEW_COMPLETED
  DECISION_MADE
  REVISION_REQUESTED
  ARTICLE_PUBLISHED
  SYSTEM_ANNOUNCEMENT
}

model Notification {
  id        String           @id @default(cuid())
  userId    String
  type      NotificationType
  title     String
  message   String           @db.Text
  link      String?
  isRead    Boolean          @default(false)
  createdAt DateTime         @default(now())
  
  user      User             @relation(fields: [userId], references: [id])
}

// ============ AUDIT LOG ============

model AuditLog {
  id          String   @id @default(cuid())
  userId      String?
  action      String
  entityType  String
  entityId    String?
  details     Json?
  ipAddress   String?
  userAgent   String?
  createdAt   DateTime @default(now())
  
  user        User?    @relation(fields: [userId], references: [id])
  
  @@index([entityType, entityId])
  @@index([userId])
  @@index([createdAt])
}

// ============ SITE SETTINGS ============

model Setting {
  id        String   @id @default(cuid())
  key       String   @unique
  value     Json
  updatedAt DateTime @updatedAt
}

// ============ ANNOUNCEMENTS ============

model Announcement {
  id          String    @id @default(cuid())
  title       String
  content     String    @db.Text
  isPublished Boolean   @default(false)
  isPinned    Boolean   @default(false)
  publishedAt DateTime?
  expiresAt   DateTime?
  createdAt   DateTime  @default(now())
  updatedAt   DateTime  @updatedAt
}

7. Features & Functionality

Public Website

Homepage

  • Hero section with journal identity and A4 journal cover
  • Professional journal cover with current issue info (responsive design)
  • Latest published articles (6-8 cards)
  • Current issue highlight
  • Announcements/news ticker
  • Quick links (Submit, Author Guidelines, etc.)
  • Journal metrics summary (dynamic from database)
  • Subject areas/categories (dynamic from database)

Article Pages

  • Full article display (HTML format)
  • Abstract section
  • Keywords with links
  • Author information with ORCID links
  • Affiliations
  • Citation tools (BibTeX, RIS, APA, MLA, Chicago)
  • Download PDF button
  • Article metrics (views, downloads)
  • Altmetric badge (future)
  • Social sharing buttons
  • Related articles
  • Supplementary materials
  • References section
  • Article history (received, revised, accepted, published)

Archive Browser

  • Browse by volume/issue
  • Browse by year
  • Browse by category/subject
  • Search within archive
  • Filter by article type

Search

  • Full-text search
  • Advanced search (author, title, keywords, date range, category)
  • Search results with snippets
  • Sort options (relevance, date, citations)

Author Dashboard

My Submissions

  • List of all submissions with status
  • Submission details view
  • Track review progress
  • View editor comments
  • Submit revisions
  • Communication log

Submit New Manuscript

  • Multi-step wizard:
    1. Article type selection
    2. Title, abstract, keywords
    3. Authors management (add co-authors)
    4. File uploads (manuscript, figures, supplementary)
    5. Cover letter
    6. Suggested reviewers (optional)
    7. Declarations (ethics, conflicts, data)
    8. Review and submit

Profile Management

  • Personal information
  • ORCID integration
  • Affiliation details
  • Research interests
  • Password change

Reviewer Dashboard

Pending Invitations

  • List of review invitations
  • Accept/decline with reason
  • View article abstract

Active Reviews

  • Assigned reviews with due dates
  • Review form with criteria
  • File downloads
  • Submit review

Completed Reviews

  • Review history
  • Thank you acknowledgments

Editor Dashboard

Submissions Queue

  • New submissions requiring assignment
  • Under review
  • Awaiting decision
  • All submissions with filters

Manuscript Management

  • Assign reviewers
  • Send reminders
  • View reviews
  • Make decisions
  • Communicate with authors
  • Request revisions

Issue Management

  • Create new issues
  • Assign articles to issues
  • Order articles
  • Schedule publication
  • Generate issue PDF

Admin Dashboard

User Management

  • View all users
  • Edit roles
  • Activate/deactivate accounts
  • View user activity

Editorial Board

  • Manage board members
  • Edit positions and order
  • Public/private toggle

Categories

  • Manage subject categories
  • Hierarchical structure

Settings

  • Journal information
  • Email templates
  • DOI settings
  • File upload limits

Analytics

  • Submission statistics
  • Publication metrics
  • User registration trends
  • Geographic distribution

8. ISSN & DOI Registration

ISSN (International Standard Serial Number)

What is ISSN?

  • Unique 8-digit identifier for serial publications
  • Format: XXXX-XXXX
  • Separate ISSNs for print and online editions

UK Application Process

  1. Contact: British Library - UK ISSN Centre

  2. Requirements:

    • Journal must be ready to publish (website live)
    • At least preliminary/forthcoming content
    • Clear title and publisher information
    • Statement of frequency
    • ISSN displayed on website
  3. Information Needed:

    • Journal title
    • Abbreviated title
    • Publisher name and address
    • Publication frequency
    • Subject coverage
    • Language of publication
    • Website URL
    • First issue date
  4. Timeline: 2-4 weeks typically

  5. Cost: Free in the UK

DOI (Digital Object Identifier)

What is DOI?

  • Persistent identifier for digital content
  • Format: 10.XXXX/XXXXX
  • Ensures permanent link even if URL changes

CrossRef Membership

  1. About CrossRef

  2. Membership Requirements:

    • Active publisher with content to register
    • Website with published articles
    • Commitment to maintain metadata
  3. Cost Structure (as of 2024):

    • Annual membership fee: Based on publishing output
    • Small publishers: ~$275/year
    • Per-DOI fee: $1 per DOI (first year), $0.06 backfile
  4. DOI Format for Core Collection:

    10.XXXXX/cc.YYYY.VVII.NNNN
    
    Where:
    - 10.XXXXX = Our assigned prefix
    - cc = Core Collection identifier
    - YYYY = Year
    - VV = Volume (2 digits)
    - II = Issue (2 digits)
    - NNNN = Article number (4 digits)
    
    Example: 10.12345/cc.2025.0101.0001
    
  5. Integration:

    • Register DOIs via CrossRef XML deposit
    • API integration for automated registration
    • Metadata requirements: title, authors, publication date, URL

DOI Implementation

// lib/doi.ts

interface DOIMetadata {
  title: string;
  authors: { name: string; orcid?: string }[];
  publicationDate: Date;
  url: string;
  volume: number;
  issue: number;
  articleNumber: string;
}

function generateDOI(articleNumber: string, year: number, volume: number, issue: number): string {
  const prefix = process.env.DOI_PREFIX; // e.g., "10.12345"
  const suffix = `cc.${year}.${String(volume).padStart(2, '0')}${String(issue).padStart(2, '0')}.${articleNumber}`;
  return `${prefix}/${suffix}`;
}

async function registerDOI(doi: string, metadata: DOIMetadata): Promise<boolean> {
  // Generate CrossRef XML
  // Submit to CrossRef API
  // Handle response
}

9. Page Structure

Public Pages

RoutePageDescriptionStatus
/HomepageMain landing pageβœ… Live
/aboutAboutJournal mission, scope, historyβœ… Live
/editorial-boardEditorial BoardTeam profilesβœ… Live
/for-authorsFor AuthorsGuidelines, templates, FAQsβœ… Live
/for-authors/ethicsPublication EthicsEthics policiesβœ… Live
/for-authors/feesArticle Processing ChargesFee informationβœ… Live
/for-reviewersFor ReviewersReview guidelines, criteriaβœ… Live
/archiveArchiveBrowse all contentβœ… Live
/article/[slug]Article PageFull articleβœ… Live
/searchSearchSearch interfaceβœ… Live
/categoriesCategoriesBrowse by subjectβœ… Live
/categories/[slug]Category ViewArticles in categoryβœ… Live
/contactContactContact formβœ… Live
/announcementsAnnouncementsNews and updatesβœ… Live
/announcements/[id]Announcement DetailIndividual announcementβœ… Live
/submitSubmit ManuscriptSubmission wizardβœ… Live
/faqFAQFrequently asked questionsβœ… Live
/docsDocumentationSystem documentationβœ… Live
/privacy-policyPrivacy PolicyLegalβœ… Live
/terms-of-useTerms of UseLegalβœ… Live
/cookie-policyCookie PolicyCookie informationβœ… Live
/accessibilityAccessibilityAccessibility statementβœ… Live
/sitemapSitemapSite navigationβœ… Live

Auth Pages

RoutePageDescription
/loginLoginUser login
/registerRegisterUser registration
/forgot-passwordForgot PasswordPassword reset request
/reset-passwordReset PasswordPassword reset
/verify-emailEmail VerificationEmail confirmation

Dashboard Pages

RoutePageRole
/dashboardDashboard HomeAll
/dashboard/profileProfileAll
/dashboard/submissionsMy SubmissionsAuthor
/dashboard/submissions/[id]Submission DetailAuthor
/dashboard/submitSubmit ManuscriptAuthor
/dashboard/reviewsMy ReviewsReviewer
/dashboard/reviews/[id]Review FormReviewer
/dashboard/editorEditor DashboardEditor
/dashboard/editor/submissionsManage SubmissionsEditor
/dashboard/editor/submissions/[id]Submission ManagementEditor
/dashboard/editor/issuesIssue ManagementEditor
/dashboard/adminAdmin PanelAdmin
/dashboard/admin/usersUser ManagementAdmin
/dashboard/admin/boardEditorial BoardAdmin
/dashboard/admin/categoriesCategoriesAdmin
/dashboard/admin/settingsSettingsAdmin
/dashboard/admin/analyticsAnalyticsAdmin

10. API Endpoints

Authentication

MethodEndpointDescription
POST/api/auth/registerUser registration
POST/api/auth/loginUser login
POST/api/auth/logoutUser logout
POST/api/auth/forgot-passwordRequest password reset
POST/api/auth/reset-passwordReset password
GET/api/auth/verify-emailVerify email token
GET/api/auth/sessionGet current session

Articles

MethodEndpointDescription
GET/api/articlesList published articles
GET/api/articles/[slug]Get article by slug
GET/api/articles/[slug]/pdfDownload PDF
GET/api/articles/[slug]/citationGet citation formats
POST/api/articles/[slug]/viewRecord view

Submissions

MethodEndpointDescriptionStatus
GET/api/submissionsList user's submissions with statsβœ… Working
POST/api/submissionsCreate new submission draftβœ… Working
GET/api/submissions/[id]Get submission details (full data)βœ… Working
PUT/api/submissions/[id]Update draft submissionβœ… Working
DELETE/api/submissions/[id]Delete draft submissionβœ… Working
POST/api/submissions/[id]/submitSubmit for reviewβœ… Working

File Upload

MethodEndpointDescriptionStatus
POST/api/uploadUpload file (manuscript, figure, table, supplementary)βœ… Working
DELETE/api/upload?fileId=xxxDelete uploaded fileβœ… Working
GET/api/files/[...path]Serve uploaded filesβœ… Working

User

MethodEndpointDescriptionStatus
GET/api/user/profileGet user profileβœ… Working
PUT/api/user/profileUpdate user profileβœ… Working
GET/api/user/submissionsGet user's submissions with statsβœ… Working

Reviews

MethodEndpointDescription
GET/api/reviewsList reviewer's reviews
GET/api/reviews/[id]Get review details
POST/api/reviews/[id]/acceptAccept review invitation
POST/api/reviews/[id]/declineDecline review invitation
PUT/api/reviews/[id]Submit review

Editor

MethodEndpointDescription
GET/api/editor/submissionsList all submissions
PUT/api/editor/submissions/[id]/assignAssign editor
POST/api/editor/submissions/[id]/invite-reviewerInvite reviewer
PUT/api/editor/submissions/[id]/decisionMake decision
GET/api/editor/issuesList issues
POST/api/editor/issuesCreate issue
PUT/api/editor/issues/[id]Update issue
POST/api/editor/issues/[id]/publishPublish issue

Admin

MethodEndpointDescription
GET/api/admin/usersList users
PUT/api/admin/users/[id]Update user
GET/api/admin/boardList board members
POST/api/admin/boardAdd board member
PUT/api/admin/board/[id]Update board member
DELETE/api/admin/board/[id]Remove board member
GET/api/admin/settingsGet settings
PUT/api/admin/settingsUpdate settings
GET/api/admin/analyticsGet analytics data

Search

MethodEndpointDescription
GET/api/searchSearch articles
GET/api/search/suggestionsSearch suggestions

11. Editorial Workflow

Submission Process

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    SUBMISSION WORKFLOW                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚  β”‚  DRAFT  β”‚ ──▢ β”‚ SUBMITTED β”‚ ──▢ β”‚   EDITOR     β”‚            β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚   ASSIGNED   β”‚            β”‚
β”‚                                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚                                            β”‚                    β”‚
β”‚                                            β–Ό                    β”‚
β”‚                                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚                                    β”‚ UNDER REVIEW │◀───────┐   β”‚
β”‚                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚   β”‚
β”‚                                            β”‚               β”‚   β”‚
β”‚                                            β–Ό               β”‚   β”‚
β”‚                                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚   β”‚
β”‚                                   β”‚    AWAITING    β”‚       β”‚   β”‚
β”‚                                   β”‚    DECISION    β”‚       β”‚   β”‚
β”‚                                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚   β”‚
β”‚                                            β”‚               β”‚   β”‚
β”‚                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
β”‚                          β–Ό                 β–Ό           β–Ό   β”‚   β”‚
β”‚                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”  β”‚
β”‚                   β”‚ ACCEPTED β”‚     β”‚ REVISION β”‚  β”‚REJECTED β”‚  β”‚
β”‚                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚ REQUESTEDβ”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                          β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚
β”‚                          β”‚                β”‚                   β”‚
β”‚                          β–Ό                β–Ό                   β”‚
β”‚                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚
β”‚                   β”‚PUBLISHED β”‚     β”‚ REVISED  β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚SUBMITTED β”‚
β”‚                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Review Process

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      REVIEW WORKFLOW                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚   Editor invites reviewer                                       β”‚
β”‚           β”‚                                                     β”‚
β”‚           β–Ό                                                     β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                             β”‚
β”‚   β”‚   INVITED    β”‚                                             β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                             β”‚
β”‚           β”‚                                                     β”‚
β”‚     β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”                                              β”‚
β”‚     β–Ό           β–Ό                                              β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                       β”‚
β”‚ β”‚ACCEPTEDβ”‚  β”‚ DECLINED β”‚ ──▢ Editor invites another reviewer   β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                       β”‚
β”‚     β”‚                                                           β”‚
β”‚     β–Ό                                                           β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                               β”‚
β”‚ β”‚  IN PROGRESS β”‚ ──▢ Reviewer accesses manuscript              β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     Reviewer evaluates                        β”‚
β”‚     β”‚                                                           β”‚
β”‚     β–Ό                                                           β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                               β”‚
β”‚ β”‚  COMPLETED   β”‚ ──▢ Scores + Comments submitted               β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                               β”‚
β”‚                                                                 β”‚
β”‚   Recommendations:                                              β”‚
β”‚   β€’ Accept                                                      β”‚
β”‚   β€’ Minor Revision                                              β”‚
β”‚   β€’ Major Revision                                              β”‚
β”‚   β€’ Reject                                                      β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Decision Timeline

StageTarget Duration
Initial Editor Assignment3 days
Reviewer Invitation Response7 days
Review Completion21 days
Editorial Decision7 days
Author Revision (Minor)14 days
Author Revision (Major)30 days
Total (Accept)~8 weeks

12. Security & Compliance

Authentication & Authorization

  • Password Hashing: bcrypt with cost factor 12
  • Session Management: HTTP-only, secure cookies
  • CSRF Protection: Built-in Next.js protection
  • Rate Limiting: Login attempts, API calls
  • Role-Based Access Control (RBAC)

Data Protection

  • GDPR Compliance: UK/EU data protection
  • Data Encryption: TLS 1.3 in transit, encrypted at rest
  • Audit Logging: All significant actions logged
  • Data Retention: Clear policies, user deletion capability

Content Integrity

  • Plagiarism: Integration with plagiarism detection services
  • Version Control: All manuscript versions preserved
  • DOI Permanence: Persistent identifiers

Publication Ethics (COPE Guidelines)

  1. Authorship: Clear criteria, corresponding author responsibility
  2. Conflicts of Interest: Mandatory disclosure
  3. Peer Review: Double-blind, confidential
  4. Plagiarism: Detection and response policies
  5. Corrections: Erratum, corrigendum, retraction policies
  6. Data Integrity: Research data policies

12.5 Complete Peer Review Workflow

Workflow Overview (Double-Blind)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   AUTHOR    │────▢│    EDITOR    │────▢│   REVIEWERS  │────▢│   DECISION  β”‚
β”‚  Submits    β”‚     β”‚   Assigns    β”‚     β”‚   Review     β”‚     β”‚   Made      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
      β”‚                    β”‚                    β”‚                    β”‚
      β–Ό                    β–Ό                    β–Ό                    β–Ό
   Email:              Email:              Email:              Email:
   Confirmation        Assignment          Invitation          Decision
   to Author           to Author           to Reviewer         to Author

Step-by-Step Workflow

1. Author Submission

  • Author completes 6-step submission wizard
  • Files uploaded (manuscript, figures, tables, supplementary)
  • Submission status: SUBMITTED
  • Emails sent: Author confirmation, co-author notifications

2. Editor Assignment

  • Editor reviews new submissions queue
  • Editor clicks "Assign to Me" to become handling editor
  • Submission status: EDITOR_ASSIGNED
  • Email sent: Author notified of editor assignment

3. Reviewer Invitation

  • Editor invites reviewers (dropdown shows workload/availability)
  • With account: Standard invitation email sent
  • Without account: Auto-create account + registration invite
  • Review status: INVITED
  • Email sent: Review invitation to reviewer

4. Reviewer Accepts/Declines

  • Accept: Review status β†’ ACCEPTED, due date set (21 days)
    • Email sent: Reviewer confirmation with link
    • Email sent: Author notified "manuscript under review"
  • Decline: Review status β†’ DECLINED
    • Editor notified to invite another reviewer

5. Review Submission

  • Reviewer downloads manuscript (double-blind - no author info)
  • For revision reviews: Reviewer sees:
    • Author's response to reviewers
    • Their own previous review (if re-invited)
    • Other reviewers' feedback from previous round (anonymized)
    • Files grouped by version (current vs original)
  • Fills scoring form (Originality, Significance, Methodology, Clarity, References)
  • Provides recommendation (Accept, Minor Revision, Major Revision, Reject)
  • Adds comments (to author + confidential to editor)
  • Review status: COMPLETED

6. Editorial Decision

  • Minimum 2 completed reviews required (enforced by system)
  • Editor can override with explicit acknowledgment
  • Decision options:
    • ACCEPT: Article status β†’ ACCEPTED, publication proceeds
    • MINOR_REVISION: 14-day deadline, same reviewers auto-notified
    • MAJOR_REVISION: 30-day deadline, editor chooses re-reviewers
    • REJECT: Process ends
  • Email sent: Decision email with anonymized reviewer comments

7. Revision (if applicable)

  • Author receives decision email with deadline
  • Author submits revision via /api/submissions/[id]/revision
  • Must include "Response to Reviewers" document
  • revisionRound increments (v1 β†’ v2)
  • Minor Revision: Same reviewers automatically invited for re-review
  • Major Revision: Editor manually assigns reviewers

Notification Types

EventAuthorEditorReviewerCo-Authors
Submissionβœ…--βœ…
Editor Assignedβœ…---
Reviewer Invited--βœ…-
Reviewer Acceptsβœ…βœ…βœ…-
Review Completed-βœ…--
Decision Madeβœ…---
Revision Submitted-βœ…βœ…*-

*Only for minor revisions (auto-notified)

Activity Notification Badges (v0.17+)

The submissions list pages display real-time activity badges for both editors and authors.

Editor Submissions Queue - Badge Types:

BadgeIconEventDescription
MessagesπŸ’¬Author sent messageUnread messages from author
Review Doneβœ“ (green)Review completedReviewer submitted review in last 7 days
Acceptedβœ“ (blue)Reviewer acceptedReviewer accepted invitation in last 7 days
Declined❌ (red)Reviewer declinedReviewer declined invitation in last 7 days
RevisionπŸ“ (purple)Revision submittedAuthor submitted revision in last 7 days

Author Submissions List - Badge Types:

BadgeIconEventDescription
MessagesπŸ’¬Editor sent messageUnread messages from editor
Decisionβœ…Decision madeEditorial decision in last 7 days
RevisionπŸ“Revision requestedRevision requested in last 7 days
ProgressπŸ‘Review progressReviewer completed review in last 7 days
AssignedπŸ‘€Editor assignedEditor assigned in last 7 days

Visual Indicators:

  • Row highlighting: Different background colors based on notification type
  • Header badge: Animated pulse showing total updates count
  • Individual badges: Small colored pills next to manuscript titles
  • 7-day window: Notifications automatically clear after 7 days

Submission Status Flow

DRAFT β†’ SUBMITTED β†’ EDITOR_ASSIGNED β†’ UNDER_REVIEW β†’ 
    β”œβ”€β†’ ACCEPTED (end)
    β”œβ”€β†’ REJECTED (end)
    └─→ REVISION_REQUESTED β†’ REVISED_SUBMITTED β†’ UNDER_REVIEW (loop)

13. Deployment & Infrastructure

Server Requirements

ComponentMinimumRecommended
CPU2 cores4 cores
RAM4 GB8 GB
Storage50 GB SSD100 GB SSD
OSUbuntu 22.04 LTSUbuntu 22.04 LTS

Environment Variables

# .env.local

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/corecollection"

# NextAuth
NEXTAUTH_URL="https://core-collection.com"
NEXTAUTH_SECRET="your-secret-key"

# Email
SMTP_HOST="smtp.example.com"
SMTP_PORT="587"
SMTP_USER="noreply@core-collection.com"
SMTP_PASSWORD="your-password"
EMAIL_FROM="Core Collection <noreply@core-collection.com>"

# File Storage
UPLOAD_DIR="/var/uploads/corecollection"
MAX_FILE_SIZE="52428800"  # 50MB

# DOI
DOI_PREFIX="10.XXXXX"
CROSSREF_USERNAME="your-username"
CROSSREF_PASSWORD="your-password"

# Analytics
GOOGLE_ANALYTICS_ID="G-XXXXXXXXXX"

Deployment Steps

# 1. Clone repository
git clone https://github.com/your-repo/core-collection.git
cd core-collection

# 2. Install dependencies
npm install

# 3. Set up environment
cp .env.example .env.local
# Edit .env.local with your values

# 4. Initialize database
npx prisma migrate deploy
npx prisma db seed

# 5. Build application
npm run build

# 6. Start with PM2
pm2 start npm --name "core-collection" -- start
pm2 save
pm2 startup

Nginx Configuration

# /etc/nginx/sites-available/core-collection.com

server {
    listen 80;
    server_name core-collection.com www.core-collection.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name core-collection.com www.core-collection.com;

    ssl_certificate /etc/letsencrypt/live/core-collection.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/core-collection.com/privkey.pem;

    # SSL settings
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;

    # Security headers
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Gzip
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }

    # Static files
    location /_next/static {
        proxy_pass http://127.0.0.1:3000;
        add_header Cache-Control "public, max-age=31536000, immutable";
    }

    # Uploads
    location /uploads {
        alias /var/uploads/corecollection;
        expires 30d;
        add_header Cache-Control "public";
    }
}

14. Future Roadmap

Phase 1: MVP (Current)

  • Research & Documentation
  • Basic website structure
  • Homepage and public pages
  • User authentication
  • Basic submission system
  • Article display pages
  • Admin dashboard

Phase 2: Core Features

  • Complete peer review workflow
  • Email notifications
  • DOI integration
  • PDF generation
  • Citation export
  • Search functionality

Phase 3: Enhanced Features

  • ORCID integration
  • Plagiarism detection integration
  • Altmetric badges
  • Article recommendations
  • RSS feeds
  • XML/JATS export

Phase 4: Advanced Features

  • API for third parties
  • Preprint server integration
  • Author analytics
  • Institutional subscriptions
  • Mobile app
  • AI-powered reviewer matching

Phase 5: Indexing & Recognition

  • Google Scholar indexing
  • DOAJ listing
  • Scopus application
  • Web of Science application
  • PubMed (if applicable)

Appendix A: Email Templates

Registration Welcome

Subject: Welcome to Core Collection

Dear [Name],

Thank you for registering with Core Collection, a peer-reviewed multidisciplinary scientific journal.

Your account has been created with the following details:
- Email: [email]
- Role: Author

To get started:
1. Complete your profile with your affiliation and research interests
2. Review our Author Guidelines
3. Submit your manuscript when ready

If you have any questions, please contact our editorial office.

Best regards,
The Core Collection Editorial Team

Submission Received

Subject: Submission Received - [Manuscript ID]

Dear [Author Name],

We have received your manuscript titled "[Title]" for consideration in Core Collection.

Manuscript ID: [ID]
Submission Date: [Date]

Your submission is now being processed and will be assigned to a handling editor. You will receive further communication regarding the peer review process.

Track your submission: [Link]

Best regards,
The Core Collection Editorial Team

Review Invitation

Subject: Invitation to Review - Core Collection

Dear [Reviewer Name],

We invite you to review a manuscript for Core Collection.

Manuscript ID: [ID]
Title: [Title]
Abstract: [Abstract]

Please respond by [Date]:
- Accept: [Accept Link]
- Decline: [Decline Link]

Review deadline if accepted: [Deadline]

Thank you for your contribution to scientific publishing.

Best regards,
[Editor Name]
Editor, Core Collection

Appendix B: SEO & Google Scholar

Meta Tags for Articles

<!-- Essential meta tags for Google Scholar -->
<meta name="citation_title" content="Article Title">
<meta name="citation_author" content="Author Name">
<meta name="citation_publication_date" content="2025/01/15">
<meta name="citation_journal_title" content="Core Collection">
<meta name="citation_volume" content="1">
<meta name="citation_issue" content="1">
<meta name="citation_firstpage" content="1">
<meta name="citation_lastpage" content="15">
<meta name="citation_doi" content="10.XXXXX/cc.2025.0101.0001">
<meta name="citation_issn" content="XXXX-XXXX">
<meta name="citation_pdf_url" content="https://core-collection.com/articles/slug/download/pdf">

<!-- Dublin Core for broader indexing -->
<meta name="DC.title" content="Article Title">
<meta name="DC.creator" content="Author Name">
<meta name="DC.date" content="2025-01-15">
<meta name="DC.identifier" content="doi:10.XXXXX/cc.2025.0101.0001">

robots.txt

User-agent: *
Allow: /

Sitemap: https://core-collection.com/sitemap.xml

Appendix C: Development Commands

# Development
npm run dev              # Start development server
npm run build            # Build production
npm run start            # Start production server
npm run lint             # Run linter
npm run test             # Run tests

# Database
npx prisma migrate dev   # Create migration
npx prisma migrate deploy # Apply migrations
npx prisma db seed       # Seed database
npx prisma studio        # Database GUI

# Utilities
npm run generate:types   # Generate TypeScript types
npm run generate:sitemap # Generate sitemap

15. Development Changelog

Version 0.17.0 (December 6, 2025) - UI/UX Improvements & Enhanced Notification System

πŸŽ‰ Comprehensive UI/UX Improvements & Activity Notifications!

This update brings significant improvements to the user interface for both authors and editors, along with an expanded notification system that tracks all important workflow events.

1. Files Sidebar in Editor Panel (Like Author Panel):

  • βœ… Files now grouped by version with collapsible sections
  • βœ… Current round highlighted with πŸ†• emoji and "Current" badge
  • βœ… Original submission marked with πŸ“„ emoji and "Original" badge
  • βœ… File count shown in each version header
  • βœ… Click to expand/collapse each version section
  • βœ… Download buttons with proper file type icons

2. Round 1 vs Round 2 Reviews in Author Panel:

  • βœ… Reviews grouped by revision round
  • βœ… Latest round highlighted with "πŸ”΅ Latest" badge
  • βœ… Round headers only shown when multiple rounds exist
  • βœ… Different visual styling for current vs previous rounds
  • βœ… Reviewer count per round displayed

3. Editor Panel - Latest Round Focus:

  • βœ… Reviews section header shows "Round X Reviews"
  • βœ… Gradient header with clear round indication
  • βœ… Note directing editors to Revision Panel for previous round feedback
  • βœ… Cleaner separation between current and historical reviews

4. Author-Editor Communication Improvements:

  • βœ… Messaging moved to sidebar for cleaner layout
  • βœ… Compact message input with "Enter to send"
  • βœ… Last 5 messages preview with "Showing last 5 messages" note
  • βœ… Unread message badge with count
  • βœ… Different styling for accepted papers (green theme) vs others
  • βœ… Header notification badge when new messages arrive
  • βœ… Removed duplicate "Messages from Editorial Team" from main content

5. Expanded Notification System (Beyond Messages):

For Editors (on submissions list):

BadgeEventColor
πŸ’¬New message from authorOrange
βœ“Review completedGreen
βœ“Reviewer accepted invitationBlue
❌Reviewer declined invitationRed
πŸ“Author submitted revisionPurple

For Authors (on submissions list):

BadgeEventColor
πŸ’¬New message from editorBlue
βœ… DecisionEditor made a decisionGreen
πŸ“ Revision neededRevision requestedAmber
πŸ‘ Review updateReviewer completed reviewPurple
πŸ‘€ Editor assignedEditor assigned to manuscriptIndigo

Visual Indicators:

  • βœ… Row highlighting based on notification type
  • βœ… Header badge shows total updates count with animated pulse
  • βœ… "!" indicator on file icon for important updates
  • βœ… Notifications track events from last 7 days

6. Withdrawal System Improvements:

  • βœ… withdrawalRequested and withdrawalReason fields added to Submission model
  • βœ… Proper storage and retrieval of withdrawal requests
  • βœ… Editor can approve/deny with clear UI
  • βœ… Fields cleared when withdrawal is denied

API Endpoints Modified:

EndpointMethodChanges
/api/user/submissionsGETAdded notifications object with event counts
/api/editor/submissionsGETAdded notifications object with event counts
/api/submissions/[id]GETAdded previousSubmission reviews for round display
/api/editor/submissions/[id]GETAdded messages array

Database Schema Updates:

// Submission model additions
withdrawalRequested Boolean? @default(false)
withdrawalReason    String?  @db.Text

Files Modified:

src/app/dashboard/submissions/page.tsx          # Notification badges on list
src/app/dashboard/submissions/[id]/page.tsx     # Messaging sidebar, review rounds
src/app/dashboard/editor/submissions/page.tsx   # Notification badges on list
src/app/dashboard/editor/submissions/[id]/page.tsx # Files sidebar, review improvements
src/app/api/user/submissions/route.ts           # Notification counts
src/app/api/editor/submissions/route.ts         # Notification counts
src/app/api/submissions/[id]/route.ts           # Previous round reviews
src/app/api/editor/submissions/[id]/route.ts    # Messages included
prisma/schema.prisma                            # Withdrawal fields

UI Layout Changes:

Author Submission Detail Page:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Header                    [πŸ”” 2 new messages from editor]       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  LEFT COLUMN               β”‚  RIGHT COLUMN (Sidebar)             β”‚
β”‚  β€’ Manuscript Details      β”‚  πŸ“‹ Actions                         β”‚
β”‚  β€’ Authors                 β”‚  πŸ’¬ Contact Editor [compact chat]   β”‚
β”‚  β€’ Editor's Decision       β”‚  πŸ• Timeline                        β”‚
β”‚  β€’ Reviewer Feedback       β”‚  πŸ“„ Files (grouped by version)      β”‚
β”‚    └─ πŸ”΅ Round 2 [Latest]  β”‚                                     β”‚
β”‚    └─ βšͺ Round 1           β”‚                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Editor Submission Detail Page:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Header        [🟠 3 new from author]              [Status Badge]β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  LEFT COLUMN               β”‚  RIGHT COLUMN (Sidebar)             β”‚
β”‚  β€’ Title & Abstract        β”‚  πŸ“‹ Actions                         β”‚
β”‚  β€’ Revision Panel          β”‚  ⚠️ Withdrawal Alert (if any)       β”‚
β”‚    └─ Author Response      β”‚  πŸ“Š Submission Info                 β”‚
β”‚    └─ File Comparison      β”‚  πŸ’¬ Messages with Author            β”‚
β”‚    └─ Round 1 Reviews      β”‚  πŸ“„ Files (grouped by version)      β”‚
β”‚  β€’ Authors                 β”‚    └─ πŸ†• Round 2 [Current]          β”‚
β”‚  β€’ Round 2 Reviews         β”‚    └─ πŸ“„ Round 1 [Original]         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Version 0.16.0 (December 5, 2025) - Complete Reviewer UI & Editorial Panel Enhancements

πŸŽ‰ Comprehensive Reviewer & Editorial Panel Complete!

This update implements extensive enhancements to the reviewer interface and editorial panel, including viewing previous reviews, other reviewers' feedback, editor-author communication, and various workflow improvements.

Reviewer UI Enhancements:

  • βœ… "Your Previous Review" Section (Blue-themed):

    • Shows for re-invited reviewers on revision submissions
    • Displays previous recommendation and overall score
    • Individual scores grid: Originality, Significance, Methodology, Clarity, References
    • Comments to Author (marked as "Shared with Author" βœ“)
    • Confidential Comments to Editor (marked as "Not Shared with Author" πŸ”’)
    • Completion date of previous review
  • βœ… "Other Reviewers' Feedback" Section (Purple-themed):

    • Shows for ALL reviewers on revised submissions (both re-invited AND new)
    • Anonymized as "Reviewer 1", "Reviewer 2", etc.
    • Shows recommendation and overall score
    • Shows comments to author only (confidential comments hidden)
    • Different messaging for new vs returning reviewers:
      • Returning: "Review these comments to ensure the author has addressed all concerns"
      • New: "You are new to this submission. Below are reviews from the previous round..."
  • βœ… Author's Response to Reviewers (Orange-themed):

    • Displays prominently at top of review page for revisions
    • Shows the author's point-by-point response document
  • βœ… File Versioning in Review UI:

    • Files grouped by version (Current vs Original)
    • "Version 2 - Current" badge for latest files
    • "Version 1 - Original" badge for previous files
    • Download buttons for all file versions
  • βœ… Revision Round Indicator:

    • Orange banner: "Revision Round X"
    • Guidance text for reviewers to focus on whether issues were addressed

Editorial Panel Enhancements:

  • βœ… Desk Rejection: Editors can reject without peer review
  • βœ… Reassign Reviewers: Re-invite previous or select new reviewers for revisions
  • βœ… Editor Self-Review: Editors can submit their own review
  • βœ… Editor-Author Messaging: Message system with email + in-app notifications
  • βœ… Author Withdrawal Request: Authors can request withdrawal, editors approve/deny

Author Dashboard Enhancements:

  • βœ… Notifications Panel: New section showing all notifications

    • Unread count badge
    • "Mark all as read" button
    • Click to navigate to relevant page
    • Bell icon with color-coded read/unread states
  • βœ… Messages from Editorial Team: Section in submission detail page

    • Shows all messages from editor
    • Read/unread indicators
    • Date stamps

Bug Fixes:

  • βœ… Fixed: New reviewer invitation link not working:

    • Issue: Token storage mechanism mismatch between invite-reviewer and reset-password APIs
    • Fix: Unified to use crypto.randomBytes with SHA256 hash stored in Setting table
    • Fix: Added email parameter to reset URL
  • βœ… Fixed: New reviewers couldn't see previous round reviews:

    • Issue: Code checked review.isRevisionReview which is false for new reviewers
    • Fix: Changed to check submission.previousSubmissionId OR revisionRound > 1
    • Fix: Added fallback to find completed reviews on same submission if no previousSubmissionId
  • βœ… Fixed: Notification click not showing editor message:

    • Issue: No UI to display notifications in author dashboard
    • Fix: Created /api/notifications endpoint and integrated notifications panel

Registration & Role System Cleanup:

  • βœ… Removed test credentials from login page: Production-ready login page
  • βœ… Simplified registration page:
    • Removed "interests" checkboxes (no longer applicable)
    • Updated title to "Author Registration"
    • Added note: "Reviewers are invited directly by editors"
  • βœ… Auto-add REVIEWER role: When editor invites existing author as reviewer, REVIEWER role is automatically added to their account

API Endpoints Created/Modified:

EndpointMethodDescription
/api/notificationsGETFetch user notifications
/api/notificationsPOSTMark all notifications as read
/api/editor/submissions/[id]/desk-rejectPOSTDesk reject submission
/api/editor/submissions/[id]/reassign-reviewersPOSTReassign reviewers for revision
/api/editor/submissions/[id]/editor-reviewPOSTEditor submits own review
/api/editor/submissions/[id]/messagePOSTSend message to author
/api/editor/submissions/[id]/withdrawalPOSTApprove/deny withdrawal
/api/submissions/[id]/withdrawal-requestPOSTAuthor requests withdrawal
/api/reviews/[id]GETEnhanced to include otherReviewersFeedback

Database Schema Updates:

// NotificationType enum additions
MESSAGE_RECEIVED

// SubmissionMessage model (already existed)
// Used for editor-author communication

Files Modified:

src/app/dashboard/reviews/[id]/page.tsx    # Complete reviewer UI overhaul
src/app/api/reviews/[id]/route.ts          # Other reviewers feedback logic
src/app/dashboard/page.tsx                 # Notifications panel
src/app/api/notifications/route.ts         # NEW - Notifications API
src/app/dashboard/submissions/[id]/page.tsx # Messages section
src/app/dashboard/editor/submissions/[id]/page.tsx # All editorial modals
src/app/api/editor/submissions/[id]/invite-reviewer/route.ts # Fixed token

Reviewer UI Layout (Revision Review):

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ”„ Revision Round 2                                     β”‚
β”‚ This is a revised submission. Focus on whether issues   β”‚
β”‚ have been addressed.                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ’¬ Author's Response to Reviewers                       β”‚
β”‚ [Author's point-by-point response...]                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ“œ Your Previous Review (Round 1)              [BLUE]   β”‚
β”‚ Recommendation: Minor Revision    ⭐ 3.5/5              β”‚
β”‚ Originality: 4 | Significance: 3 | Method: 4 | ...      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ βœ“ Comments to Author (Shared)                       β”‚ β”‚
β”‚ β”‚ [Your previous comments to author...]               β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ πŸ”’ Confidential to Editor (Not Shared)              β”‚ β”‚
β”‚ β”‚ [Your confidential notes to editor...]              β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ Submitted on 5 December 2025                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ‘₯ Other Reviewers' Feedback (Round 1)         [PURPLE] β”‚
β”‚ Review these to ensure ALL concerns were addressed      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Reviewer 1          Major Revision      ⭐ 2.5/5    β”‚ β”‚
β”‚ β”‚ [Their comments to author...]                       β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Reviewer 2          Minor Revision      ⭐ 4/5      β”‚ β”‚
β”‚ β”‚ [Their comments to author...]                       β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ“„ Manuscript Files                                     β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚ β”‚ Version 2 [Current]                               β”‚   β”‚
β”‚ β”‚ β€’ revised-manuscript.pdf  πŸ“₯                      β”‚   β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚ β”‚ Version 1 [Original]                              β”‚   β”‚
β”‚ β”‚ β€’ original-manuscript.pdf  πŸ“₯                     β”‚   β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ“ Your Review                                          β”‚
β”‚ [Scoring form, recommendation, comments...]             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Version 0.15.0 (December 5, 2025) - Enhanced Revision Workflow & Bug Fixes

πŸŽ‰ Comprehensive Revision Submission System Complete!

This update implements a professional revision workflow with full edit history tracking, reviewer comments display, and file versioning.

Revision Workflow Enhancements:

  • βœ… Cover Letter β†’ Response to Reviewers: Step 5 dynamically changes for revisions
    • Shows "Response to Reviewers" title and description
    • Required field (minimum 50 characters)
    • Displays all reviewer comments above the response textarea for easy reference
    • Shows editor's decision and deadline prominently
  • βœ… Reviewer Comments Display: Authors can see all reviewer comments while writing response
    • Individual reviewer boxes with recommendations
    • Color-coded by recommendation type (Accept/Minor/Major/Reject)
  • βœ… Start from Title: Revision now starts at Step 1, allowing authors to edit title, abstract, keywords, and authors

File Versioning System:

  • βœ… Original Files Section: Read-only display of previous version files
    • Shows version number (v1, v2, etc.)
    • Download button for each original file (opens in new tab)
    • Files cannot be deleted (preserved for reference)
  • βœ… New Files Section: Upload revised files marked as new version
    • Clear "Version X - NEW" labeling
    • Version numbers auto-increment with revision round
  • βœ… Secure File Download API: /api/files/download/[fileId]
    • Authorization check (submitter, editor, or reviewer role)
    • Proper Content-Disposition headers
    • MIME type detection

Edit History Tracking:

  • βœ… "Show Original Version" Toggle: In Details step (Step 2)
    • Compare current vs original title/abstract
    • "(modified)" labels on changed fields
    • Amber highlighting for modified fields
    • Collapsible original values panel
  • βœ… History stored in state: originalValues ref tracks original submission data

Author Submission Detail Page Improvements:

  • βœ… Editor's Final Decision Section: Clear, color-coded decision display
    • Green for Accept, Red for Reject, Amber for Revisions
    • Shows revision deadline if applicable
    • Editor's comments displayed prominently
  • βœ… Reviewer Feedback Section: Separated from decision
    • Clarifying note: "These are individual reviewer recommendations"
    • "Recommends:" prefix for each reviewer's vote
  • βœ… Quick Navigation Links: Jump to decision/feedback sections
    • "View Editor's Decision" button
    • "View Reviewer Comments" button
    • "Submit Revision" button (when applicable)
  • βœ… Galley Proof Discussion: New section for accepted papers
    • Production status information
    • Message thread UI (placeholder for future)

Bug Fixes:

  • βœ… Fixed: Authors disappearing during revision: sortOrder field typo (authorOrder) in revision API
  • βœ… Fixed: Logout when clicking "Submit Manuscript": Links now correctly go to /dashboard/submit instead of /submit
  • βœ… Fixed: Download causing page reset: Changed from <a> tag to <button> with window.open()
  • βœ… Fixed: Revision data not loading: Added reviseSubmissionId to useEffect dependency array
  • βœ… Fixed: Page resetting on interactions: Added dataLoadedRef to prevent data reload
  • βœ… Database restore: Restored accidentally deleted authors after failed revision attempt

API Endpoints Created/Modified:

EndpointMethodDescription
/api/files/download/[fileId]GETSecure file download by ID
/api/submissions/[id]/revisionPOSTSubmit revision with updated fields

Files Modified:

src/app/dashboard/submit/page.tsx      # Full revision workflow UI
src/app/dashboard/submissions/[id]/page.tsx  # Decision/feedback display
src/app/dashboard/page.tsx             # Fixed submit link
src/app/dashboard/submissions/page.tsx # Fixed submit link
src/app/api/files/download/[fileId]/route.ts  # NEW - File download API
src/app/api/submissions/[id]/revision/route.ts # Fixed sortOrder, added fields

Version 0.14.0 (December 5, 2025) - Complete Peer Review Workflow

πŸŽ‰ Double-Blind Peer Review Workflow Complete!

This update implements comprehensive peer review workflow improvements based on senior editor-in-chief standards.

Notification System Improvements:

  • βœ… Author notified when reviewer accepts: Email + dashboard notification when manuscript enters review
  • βœ… Author notified when editor assigned: Email + dashboard notification with editor name
  • βœ… Co-author notifications: All co-authors receive submission confirmation emails

Double-Blind Review Enforcement:

  • βœ… Minimum 2 reviewers required: System requires at least 2 completed reviews before non-reject decisions
  • βœ… Editor override option: Editors can override with explicit acknowledgment
  • βœ… Review count indicator: Shows "X/2 completed" in decision modal
  • βœ… Anonymized reviews: Author sees "Reviewer 1", "Reviewer 2" (no identities revealed)

Reviewer Invitation Improvements:

  • βœ… Invite existing users: Dropdown with workload indicator (Available/Busy/Overloaded)
  • βœ… Invite non-users: Auto-create account + send registration invite email
  • βœ… Workload display: Shows active reviews, completed reviews, availability status

Revision Workflow:

  • βœ… Revision deadlines: 14 days for minor, 30 days for major revisions
  • βœ… Revision submission API: /api/submissions/[id]/revision
  • βœ… Response to reviewers: Required field for revision submissions
  • βœ… Version tracking: revisionRound field tracks revision iterations
  • βœ… Auto-notify reviewers: Minor revision β†’ same reviewers auto-invited for re-review

Email Templates Added:

TemplateTrigger
sendManuscriptUnderReviewEmailWhen reviewer accepts invitation
sendEditorAssignedEmailWhen editor assigns to submission
sendDecisionEmailEditorial decision with anonymized reviews
sendRevisionSubmittedToReviewerEmailWhen author submits revision
sendReviewerRegistrationInviteEmailInvite reviewer without account

Database Schema Updates:

// User model additions
isVerified         Boolean   @default(false)
resetToken         String?   @db.VarChar(255)
resetTokenExpiry   DateTime?

// Submission model additions
revisionRound        Int       @default(1)
revisionDeadline     DateTime?
previousSubmissionId String?
responseToReviewers  String?   @db.Text

// NotificationType enum additions
SUBMISSION_UPDATE
REVISION_SUBMITTED

File Upload Fix:

  • βœ… Fixed upload directory permissions (chmod 777)
  • βœ… Files now properly linked to ArticleFile database table

Version 0.13.0 (December 5, 2025) - Complete Editor Dashboard

πŸŽ‰ Editor Dashboard Complete!

Editor Dashboard Features:

  • βœ… Main Dashboard (/dashboard/editor):

    • Stats cards: Total, New, Under Review, Awaiting Decision, Accepted
    • Quick links to filtered submission queues
    • Decision summary (Accepted, Rejected, Revisions)
  • βœ… Submissions Queue (/dashboard/editor/submissions):

    • Search by title or author
    • Filter by status (New, Under Review, Awaiting Decision, etc.)
    • Filter by "Assigned to Me"
    • Table view with author, status, review progress, submission date
    • Direct links to submission detail
  • βœ… Submission Detail (/dashboard/editor/submissions/[id]):

    • Full manuscript details (title, abstract, keywords, type, category)
    • Author information with affiliations
    • Review management section:
      • View all reviews with scores and recommendations
      • View reviewer comments (to author + confidential to editor)
      • Invite new reviewers via email
    • Action buttons:
      • Assign to Me
      • Invite Reviewer
      • Make Decision
    • File downloads
    • Cover letter display
  • βœ… Invite Reviewer Modal:

    • Email input for reviewer
    • Validation (must have existing account)
    • Sends email invitation + in-app notification
    • Updates submission status to UNDER_REVIEW
  • βœ… Decision Modal:

    • 4 decision options: Accept, Minor Revision, Major Revision, Reject
    • Decision comments (required)
    • Additional comments to author (optional)
    • Sends decision email to corresponding author
    • Updates submission and article status

API Endpoints Created:

EndpointMethodDescription
/api/editor/submissionsGETList all submissions with stats
/api/editor/submissions/[id]GETGet submission details
/api/editor/submissions/[id]PUTUpdate submission (assign editor)
/api/editor/submissions/[id]/invite-reviewerPOSTInvite reviewer
/api/editor/submissions/[id]/decisionPOSTMake editorial decision

Email Templates:

  • Decision Email (Accept/Revise/Reject) - Branded with decision details

πŸ“ Files Created:

/home/corecollection/public_html/src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ api/editor/
β”‚   β”‚   └── submissions/
β”‚   β”‚       β”œβ”€β”€ route.ts              # GET submissions list
β”‚   β”‚       └── [id]/
β”‚   β”‚           β”œβ”€β”€ route.ts          # GET/PUT submission
β”‚   β”‚           β”œβ”€β”€ invite-reviewer/route.ts  # POST invite
β”‚   β”‚           └── decision/route.ts # POST decision
β”‚   └── dashboard/editor/
β”‚       β”œβ”€β”€ page.tsx                  # Main editor dashboard
β”‚       └── submissions/
β”‚           β”œβ”€β”€ page.tsx              # Submissions queue
β”‚           └── [id]/page.tsx         # Submission detail

Version 0.12.0 (December 5, 2025) - Complete Reviewer Dashboard

πŸŽ‰ Reviewer Dashboard Complete!

Reviewer Dashboard Features:

  • βœ… Main Reviews Page (/dashboard/reviews):

    • Stats cards: Total, Pending, Active, Completed, Declined, Overdue
    • Tabs: Pending Invitations, Active Reviews, Completed Reviews
    • Accept/Decline buttons for pending invitations
    • Due date tracking with overdue warnings
    • Link to continue active reviews
  • βœ… Review Form Page (/dashboard/reviews/[id]):

    • Manuscript details sidebar (title, abstract, keywords, type, category)
    • File download links for manuscript and supplementary files
    • Double-blind notice (author identities hidden)
    • 5-point scoring system:
      • Originality & Novelty
      • Significance & Impact
      • Methodology & Rigor
      • Clarity & Presentation
      • References & Citations
    • Recommendation selection (Accept, Minor Revision, Major Revision, Reject)
    • Comments to Author (required, min 50 chars)
    • Confidential Comments to Editor (optional)
    • Submit review button

API Endpoints Created:

EndpointMethodDescription
/api/reviewsGETList reviewer's reviews with stats
/api/reviews/[id]GETGet review details (double-blind)
/api/reviews/[id]PUTSubmit completed review
/api/reviews/[id]/acceptPOSTAccept review invitation
/api/reviews/[id]/declinePOSTDecline review invitation

Email Templates:

  • βœ… Review Invitation Email (sent by editor when inviting reviewer)
  • βœ… Review Accepted Confirmation (sent to reviewer upon acceptance)

Review Workflow:

  1. Editor invites reviewer β†’ Email sent with Accept/Decline links
  2. Reviewer accepts β†’ Status: ACCEPTED, Due date set (21 days)
  3. Reviewer works on review β†’ Can save draft progress
  4. Reviewer submits β†’ Status: COMPLETED, Editor notified
  5. When all reviews complete β†’ Submission status: AWAITING_DECISION

πŸ“ Files Created:

/home/corecollection/public_html/src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ api/reviews/
β”‚   β”‚   β”œβ”€β”€ route.ts              # GET reviews list
β”‚   β”‚   └── [id]/
β”‚   β”‚       β”œβ”€β”€ route.ts          # GET/PUT review
β”‚   β”‚       β”œβ”€β”€ accept/route.ts   # POST accept
β”‚   β”‚       └── decline/route.ts  # POST decline
β”‚   └── dashboard/reviews/
β”‚       β”œβ”€β”€ page.tsx              # Reviews dashboard
β”‚       └── [id]/page.tsx         # Review form
└── lib/
    └── email.ts                  # Added review email templates

Database Schema Used:

  • Review model with status enum: INVITED, ACCEPTED, DECLINED, IN_PROGRESS, COMPLETED, EXPIRED
  • ReviewRecommendation enum: ACCEPT, MINOR_REVISION, MAJOR_REVISION, REJECT
  • Scoring fields: originalityScore, significanceScore, methodologyScore, clarityScore, referencesScore (1-5 scale)

Version 0.11.0 (December 4, 2025) - Complete File Upload & Submission Fixes

πŸŽ‰ Complete Author Submission System!

File Upload System:

  • βœ… File Upload API (/api/upload):

    • Handles manuscript, figure, table, and supplementary files
    • File type validation (PDF, Word, LaTeX, images, Excel)
    • Size limits: Manuscript 50MB, Figures 20MB, Tables 10MB, Supplementary 100MB
    • Stores files in /uploads/{manuscripts,figures,tables,supplementary}/
    • Records metadata in ArticleFile database table
    • Delete functionality for uploaded files
  • βœ… File Serving API (/api/files/[...path]):

    • Secure file serving with path validation
    • Proper MIME type headers
    • Prevents directory traversal attacks
  • βœ… Upload Directory Permissions:

    • Created /uploads/ directory structure
    • Set proper ownership (corecollection:corecollection)
    • Set write permissions (777)

Submission Wizard Improvements:

  • βœ… 6-Step Wizard with new Files step:

    1. Article Type
    2. Manuscript Details (title, abstract, keywords)
    3. Authors (with co-author management)
    4. Files (NEW - upload manuscript and supplementary files)
    5. Cover Letter
    6. Review & Submit
  • βœ… Draft Save & Continue Flow:

    • "Save Draft & Enable Uploads" button in Files step
    • Creates draft submission and gets articleId for file uploads
    • Files can only be uploaded after draft is saved
    • Draft data loads when clicking "Continue" from submissions list
  • βœ… Bug Fix: Duplicate Submissions:

    • Fixed issue where continuing a draft and submitting created a duplicate
    • Now properly updates existing draft instead of creating new submission
    • Uses PUT to update draft, then POST to submit

Dashboard Improvements:

  • βœ… Dynamic Stats: Dashboard shows actual submission counts from database

    • Total submissions
    • Under Review count
    • Published count
    • Drafts count
  • βœ… Recent Activity Feed:

    • Shows last 5 submissions with status badges
    • Click to view submission details
    • Color-coded by status (Draft, Submitted, Under Review, etc.)
    • "View all" link for more than 5 submissions
  • βœ… Submissions List:

    • "Continue" button for draft submissions (orange accent color)
    • Links to /dashboard/submit?edit={id} to load draft data

Co-Author Notifications:

  • βœ… Submission confirmation emails sent to all co-authors
  • βœ… Separate email templates for corresponding author vs co-authors
  • βœ… Includes manuscript title and tracking link

πŸ“ Files Created/Modified:

/home/corecollection/public_html/
β”œβ”€β”€ uploads/                              # NEW - File storage directory
β”‚   β”œβ”€β”€ manuscripts/
β”‚   β”œβ”€β”€ figures/
β”‚   β”œβ”€β”€ tables/
β”‚   └── supplementary/
β”œβ”€β”€ src/app/
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ upload/route.ts               # NEW - File upload API
β”‚   β”‚   β”œβ”€β”€ files/[...path]/route.ts      # NEW - File serving API
β”‚   β”‚   β”œβ”€β”€ submissions/route.ts          # MODIFIED - Added stats, article data
β”‚   β”‚   └── submissions/[id]/
β”‚   β”‚       β”œβ”€β”€ route.ts                  # MODIFIED - Full article data for drafts
β”‚   β”‚       └── submit/route.ts           # MODIFIED - Co-author emails
β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   β”œβ”€β”€ page.tsx                      # MODIFIED - Stats & Recent Activity
β”‚   β”‚   β”œβ”€β”€ submit/page.tsx               # MODIFIED - File upload step, draft loading
β”‚   β”‚   └── submissions/
β”‚   β”‚       β”œβ”€β”€ page.tsx                  # MODIFIED - Continue button for drafts
β”‚   β”‚       └── [id]/page.tsx             # Submission detail page

πŸ”§ Technical Notes:

  • File uploads use formidable for multipart parsing
  • Files stored with UUID filenames for security
  • Original filenames preserved in database
  • Draft loading uses useSearchParams with Suspense boundary

Version 0.8.0 (December 4, 2025) - Complete Authentication System

πŸŽ‰ Authentication System 100% Complete!

Registration System (/src/app/api/auth/register/route.ts):

  • βœ… User registration with validation (name, email, password, affiliation, country, ORCID)
  • βœ… Password requirements: 8+ chars, uppercase, lowercase, number
  • βœ… Duplicate email/ORCID checking
  • βœ… bcrypt password hashing (cost 12)
  • βœ… Auto-assigns AUTHOR role
  • βœ… Creates welcome notification in database
  • βœ… Sends welcome email on successful registration

Password Reset System:

  • βœ… Forgot Password API (/src/app/api/auth/forgot-password/route.ts):

    • Generates secure 64-character reset token
    • SHA-256 token hashing for storage
    • 1-hour token expiry
    • Prevents email enumeration (always returns success)
    • Sends password reset email with branded template
  • βœ… Reset Password API (/src/app/api/auth/reset-password/route.ts):

    • Token verification with expiry check
    • One-time use tokens (marked as used after reset)
    • Password validation (same rules as registration)
    • Audit logging for security
  • βœ… Reset Password Page (/src/app/reset-password/page.tsx):

    • Accepts token and email from URL parameters
    • Password strength indicator
    • Confirm password matching
    • Success redirect to login

Email System (/src/lib/email.ts):

  • βœ… Nodemailer with sendmail transport (cPanel Exim)
  • βœ… Professional HTML email templates:
    • Welcome Email: Sent on registration
    • Password Reset Email: Sent on forgot password request
  • βœ… Branded templates with Core Collection styling
  • βœ… Footer with links to website, privacy policy, contact

πŸ“§ Email Templates:

TemplateSubjectTrigger
Welcome"Welcome to Core Collection!"User registration
Password Reset"Reset Your Password - Core Collection"Forgot password request

πŸ“ Files Created/Modified:

/home/corecollection/public_html/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ auth.ts                              # NextAuth configuration
β”‚   β”‚   └── email.ts                             # NEW - Email utility with templates
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ register/page.tsx                    # MODIFIED - Working registration
β”‚   β”‚   β”œβ”€β”€ forgot-password/page.tsx             # MODIFIED - Working password reset request
β”‚   β”‚   β”œβ”€β”€ reset-password/page.tsx              # NEW - Password reset completion page
β”‚   β”‚   └── api/auth/
β”‚   β”‚       β”œβ”€β”€ [...nextauth]/route.ts           # NextAuth handler
β”‚   β”‚       β”œβ”€β”€ register/route.ts                # NEW - Registration API
β”‚   β”‚       β”œβ”€β”€ forgot-password/route.ts         # NEW - Password reset request API
β”‚   β”‚       └── reset-password/route.ts          # NEW - Password reset completion API

πŸ” Complete Authentication Flow:

  1. Registration: User fills form β†’ API validates β†’ Creates user β†’ Sends welcome email β†’ Redirect to login
  2. Login: User enters credentials β†’ NextAuth validates β†’ JWT created β†’ Redirect to dashboard
  3. Password Reset: User requests reset β†’ API sends email β†’ User clicks link β†’ Sets new password β†’ Redirect to login

πŸ§ͺ Test Email Address: For testing, use: projectlagana-{anything}@mail-tester.com


Version 0.9.0 (December 4, 2025) - Author Dashboard (Step 4)

πŸŽ‰ Author Dashboard Complete!

Profile Page (/dashboard/profile):

  • βœ… User profile management form
  • βœ… Edit name, title, institution, department, country
  • βœ… ORCID iD field with registration link
  • βœ… Biography textarea
  • βœ… API endpoint: GET/PUT /api/user/profile
  • βœ… Validation and error handling
  • βœ… Profile update audit logging

Submissions List (/dashboard/submissions):

  • βœ… Stats cards (Total, Drafts, Submitted, Under Review, Revisions, Accepted, Published, Rejected)
  • βœ… Search by manuscript title
  • βœ… Filter by submission status
  • βœ… "New Submission" button
  • βœ… Empty state with CTA
  • βœ… API endpoint: GET /api/user/submissions
  • βœ… Ready to display submissions with View/Edit actions

Main Dashboard (/dashboard):

  • βœ… Fixed: Dashboard now fetches fresh user data from database (not cached session)
  • βœ… Profile changes reflect immediately after editing
  • βœ… Fallback to session data if API fails

πŸ“ Files Created/Modified:

/home/corecollection/public_html/
β”œβ”€β”€ src/app/
β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   β”œβ”€β”€ page.tsx                   # MODIFIED - Fetches fresh profile data
β”‚   β”‚   β”œβ”€β”€ profile/page.tsx           # Profile edit form
β”‚   β”‚   └── submissions/page.tsx       # Submissions list
β”‚   └── api/user/
β”‚       β”œβ”€β”€ profile/route.ts           # Profile API
β”‚       └── submissions/route.ts       # Submissions API

Version 0.10.0 (December 4, 2025) - Manuscript Submission Workflow (Step 5)

πŸŽ‰ Complete Multi-Step Submission Wizard!

Submission Wizard (/dashboard/submit):

  • βœ… Step 1: Article Type - Select from 6 article types:
    • Research Article, Review Article, Short Communication
    • Case Report, Letter to Editor, Commentary
  • βœ… Step 2: Manuscript Details:
    • Title (min 10 characters)
    • Abstract (min 100 characters)
    • Keywords (3-10, with add/remove)
    • Subject category dropdown
  • βœ… Step 3: Authors Management:
    • Add multiple authors with name, email, affiliation, ORCID
    • Designate corresponding author
    • Reorder/remove authors
  • βœ… Step 4: Cover Letter - Optional editor letter
  • βœ… Step 5: Review & Submit - Summary and confirmation
  • βœ… Save Draft functionality
  • βœ… Progress indicator showing all steps

API Endpoints Created:

EndpointMethodDescription
/api/submissionsPOSTCreate new submission
/api/submissionsGETList user's submissions
/api/submissions/[id]GETGet submission details
/api/submissions/[id]PUTUpdate draft submission
/api/submissions/[id]DELETEDelete draft submission
/api/submissions/[id]/submitPOSTSubmit for review
/api/categoriesGETGet categories list

Features:

  • βœ… Input validation with Zod schemas
  • βœ… Database transaction for atomicity
  • βœ… Audit logging for all actions
  • βœ… Email confirmation on submission
  • βœ… Notification creation
  • βœ… Draft saving functionality

πŸ“ Files Created:

/home/corecollection/public_html/
β”œβ”€β”€ src/app/
β”‚   β”œβ”€β”€ dashboard/submit/page.tsx      # Multi-step submission wizard
β”‚   └── api/
β”‚       β”œβ”€β”€ submissions/route.ts       # Create/list submissions
β”‚       β”œβ”€β”€ submissions/[id]/route.ts  # Get/update/delete submission
β”‚       β”œβ”€β”€ submissions/[id]/submit/route.ts  # Submit for review
β”‚       └── categories/route.ts        # Get categories

πŸ“§ Submission Confirmation Email:

  • Professional branded template
  • Manuscript details summary
  • "Track Submission" button link
  • Next steps explanation

Version 0.7.0 (December 4, 2025) - Authentication System (Step 1)

πŸŽ‰ Completed - Login & Session Management:

NextAuth.js Integration:

  • βœ… Authentication Configuration (/src/lib/auth.ts):

    • Credentials-based authentication with bcrypt password hashing
    • JWT session strategy with 30-day expiration
    • Custom login/logout page routing
    • Role-based user data embedded in session tokens
    • Audit logging for login events
    • Helper functions for role checking (hasRole, isAdminOrEditor)
  • βœ… API Route (/src/app/api/auth/[...nextauth]/route.ts):

    • NextAuth handler for GET/POST requests
    • Integrated with Prisma adapter
  • βœ… Session Provider (/src/components/providers/SessionProvider.tsx):

    • Client-side session provider wrapping the entire app
    • Integrated into root layout

Login Page Updates (/src/app/login/page.tsx):

  • βœ… Working login form with NextAuth signIn() function
  • βœ… Error handling with user-friendly messages
  • βœ… Loading states during authentication
  • βœ… Success messages for registration/password reset redirects
  • βœ… Test account information displayed for development

Dashboard Page (/src/app/dashboard/page.tsx):

  • βœ… Protected route with automatic redirect to login
  • βœ… Role-based UI sections:
    • Author Tools (all users)
    • Reviewer Tools (REVIEWER role)
    • Editor Tools (EDITOR, CHIEF_EDITOR roles)
    • Admin Tools (ADMIN role)
  • βœ… User info display (name, email, role badges)
  • βœ… Quick stats cards (submissions, reviews, published)
  • βœ… Sign out functionality

πŸ§ͺ Test Email for Development: Use projectlagana-{anything}@mail-tester.com to receive test emails and check deliverability.

πŸ“ Registration & Roles:

  • Authors register through the website (always assigned AUTHOR role)
  • Reviewers are invited by editors via email
  • When an existing author is invited as reviewer, REVIEWER role is automatically added
  • No role selection during registration (simplified workflow)

πŸ“ Files Created/Modified:

/home/corecollection/public_html/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   └── auth.ts                           # NEW - NextAuth configuration
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── providers/
β”‚   β”‚       └── SessionProvider.tsx           # NEW - Session provider component
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ layout.tsx                        # MODIFIED - Added SessionProvider
β”‚   β”‚   β”œβ”€β”€ login/page.tsx                    # MODIFIED - Working login with NextAuth
β”‚   β”‚   β”œβ”€β”€ dashboard/page.tsx                # NEW - User dashboard
β”‚   β”‚   └── api/auth/[...nextauth]/
β”‚   β”‚       └── route.ts                      # NEW - NextAuth API route
└── package.json                              # MODIFIED - Added @auth/prisma-adapter

πŸ” Authentication Flow:

  1. User visits /login
  2. Enters credentials (email + password)
  3. NextAuth validates against database (bcrypt comparison)
  4. On success: JWT token created, user redirected to /dashboard
  5. Session persists for 30 days (JWT strategy)
  6. Protected routes check session and redirect to login if needed

Version 0.6.0 (December 4, 2025) - Visual Polish & Journal Cover

πŸŽ‰ Completed:

Homepage Journal Cover:

  • βœ… Professional A4 journal cover added to homepage hero section:
    • A4 proportions (1:1.414 ratio) for authentic printed journal look
    • Responsive sizing: Desktop 280Γ—396px, Tablet 250Γ—354px, Mobile 220Γ—311px
    • Local image hosting (/public/images/journal-cover.jpg) - no external dependencies
    • Earth from space cover image (NASA public domain)
    • Branded header with Core Collection logo
    • Current issue info (Volume 1, Issue 1)
    • Date display (December 2025)
    • ISSN placeholder and Open Access badge
    • Book spine and page edge visual effects
    • Hover animation for interactivity
    • Visible on both desktop (side-by-side with hero text) and mobile (below hero text)

Button Styling Fixes:

  • βœ… Submit page buttons fixed (/submit):
    • "Login to Your Account" - Teal filled button with shadow
    • "Create an Account" - White outlined button with border
    • Consistent spacing, padding, and hover states
  • βœ… For Authors page buttons - Previously fixed explicit inline styling
  • βœ… For Reviewers page buttons - Previously fixed explicit inline styling

Visual Spacing Improvements:

  • βœ… Card padding (p-6) applied consistently across:
    • For Authors page (all card sections)
    • For Reviewers page (review process, criteria, ethics, FAQ)
    • Archive page (article cards, sidebar cards)
  • βœ… For Reviewers "Benefits" section layout changed from 4-column to 3-column for better readability

πŸ“ Files Modified:

/home/corecollection/public_html/
β”œβ”€β”€ src/app/
β”‚   β”œβ”€β”€ page.tsx                    # Added journal cover with responsive sizing
β”‚   β”œβ”€β”€ submit/page.tsx             # Fixed button styling
β”‚   β”œβ”€β”€ for-authors/page.tsx        # Added card padding, fixed buttons
β”‚   └── for-reviewers/page.tsx      # Added card padding, fixed buttons, layout adjustment
└── public/images/
    └── journal-cover.jpg           # NEW - Journal cover image (NASA Earth)

🎨 Design Notes:

  • Journal cover mimics real printed academic journals (Nature, Science, Elsevier style)
  • A4 ratio (210Γ—297mm = 1:1.414) ensures professional appearance
  • White border frame creates "printed cover" effect
  • Gradient overlays provide text legibility over image
  • Spine effect on left edge adds 3D depth

Version 0.5.0 (December 4, 2025) - Dynamic Routes & Bug Fixes

πŸŽ‰ Completed:

New Dynamic Routes:

  • βœ… Category Detail Page (/categories/[slug]) - Individual category view:

    • Dynamic category pages for all 8 subject areas
    • Articles filtered by category
    • Color-themed hero based on category color
    • Related categories sidebar
    • Article cards with metrics (views, downloads)
    • Submit CTA with category context
  • βœ… Announcement Detail Page (/announcements/[id]) - Individual announcement view:

    • Full announcement content display
    • Type badges (news, call for papers, events)
    • Pinned indicator
    • Social sharing buttons
    • Recent announcements sidebar
    • Newsletter subscription form

Bug Fixes:

  • βœ… Homepage category links fixed - Changed from generating slugs on-the-fly to using proper database slugs
  • βœ… Homepage announcement links fixed - Updated from numeric IDs to actual announcement IDs (announcement-1, etc.)
  • βœ… Archive sidebar links fixed:
    • Volume/issue links now use query parameters (/archive?volume=1&issue=1)
    • Category links now point to /categories/[slug] instead of non-existent /archive/category/[slug]
  • βœ… Visual spacing fixes - Added proper padding (p-6) to card components:
    • Archive article cards
    • Archive sidebar cards (volumes and categories)
  • βœ… Added container-custom CSS class - Fixed missing utility class used in some pages

πŸ“ Files Created/Modified:

/home/corecollection/public_html/src/app/
β”œβ”€β”€ categories/[slug]/page.tsx    # NEW - Individual category page
β”œβ”€β”€ announcements/[id]/page.tsx   # NEW - Individual announcement page
β”œβ”€β”€ archive/page.tsx              # MODIFIED - Fixed sidebar links, added padding
β”œβ”€β”€ page.tsx                      # MODIFIED - Fixed category/announcement links
└── globals.css                   # MODIFIED - Added container-custom class

πŸ“Š Route Verification:

  • All 37 routes tested and verified returning 200 OK
  • Dynamic routes tested with actual database slugs/IDs

Version 0.3.0 (December 4, 2025) - Database & Content Pages

πŸŽ‰ Completed:

  • βœ… MySQL database setup and connection configured
  • βœ… Database seeding with sample data (categories, articles, users, volumes, issues)
  • βœ… For Authors page - Comprehensive author guidelines with:
    • Manuscript types and word limits
    • Submission checklist
    • Peer review process timeline
    • Manuscript preparation guidelines
    • Ethics and policies section
    • FAQ section
  • βœ… For Reviewers page - Complete reviewer resources with:
    • Review process explanation
    • Review criteria and scoring
    • Decision options
    • Writing effective reviews guide
    • Ethical guidelines
    • FAQ section
  • βœ… Archive page - Dynamic article browser with:
    • Server-side rendered article list from database
    • Category and volume/issue sidebar navigation
    • Search bar (UI ready)
    • Article cards with metrics
  • βœ… Article display page - Full article view with:
    • Dynamic routing /article/[slug]
    • Complete metadata display (DOI, dates, metrics)
    • Author information with ORCID links
    • Citation block with multiple formats
    • Share buttons (Twitter, LinkedIn, Facebook)
    • Related articles section
    • Download and supplementary materials section
    • SEO metadata including Google Scholar tags

πŸ“ New Files Created:

/home/corecollection/public_html/
β”œβ”€β”€ prisma/
β”‚   └── seed.ts                      # Database seeding script
β”œβ”€β”€ src/app/
β”‚   β”œβ”€β”€ for-authors/page.tsx         # Author guidelines
β”‚   β”œβ”€β”€ for-reviewers/page.tsx       # Reviewer guidelines
β”‚   β”œβ”€β”€ archive/page.tsx             # Article archive browser
β”‚   └── article/[slug]/page.tsx      # Individual article view
β”œβ”€β”€ .env                             # Prisma database config
└── .env.local                       # Application environment config

πŸ—„οΈ Sample Data Created:

EntityCountDetails
Categories8Physics, Life Sciences, Computer Science, Math, Environmental, Engineering, Chemistry, Social Sciences
Volumes1Volume 1 (2025)
Issues2January 2025, February 2025
Users4Admin, Editor, Author, Reviewer
Articles3Quantum Computing, ML Drug Discovery, Climate Biodiversity
Announcements3Launch, Call for Papers, Editorial Board

πŸ”§ Technical Notes:

  • Archive and Article pages use dynamic = 'force-dynamic' for server-side rendering
  • Database credentials: corecollection:CoreCollection2025@localhost:3306/corecollection_db
  • Category colors stored as hex codes with dynamic styling
  • Article keywords stored as JSON arrays

Version 0.4.0 (December 4, 2025) - Complete Public Website

πŸŽ‰ Completed - 16 New Pages:

Submission & Author Resources:

  • βœ… Submit Manuscript page (/submit) - Multi-step submission wizard with:

    • Article type selection
    • Title & abstract entry
    • Author management
    • File upload interface
    • Review and submit flow
    • Login prompt for non-authenticated users
  • βœ… Publication Ethics page (/for-authors/ethics) - Comprehensive ethics guidelines:

    • Authorship criteria (ICMJE)
    • Plagiarism policy
    • Data integrity requirements
    • Conflicts of interest disclosure
    • Human & animal research ethics
    • Corrections & retractions policy
    • COPE guidelines reference
  • βœ… Article Processing Charges page (/for-authors/fees) - Fee information:

    • 2025 launch offer (free APCs)
    • Fee structure table
    • What's included in publication
    • Waiver information
    • FAQ section

Search & Discovery:

  • βœ… Search page (/search) - Full search interface:

    • Search by title, author, keyword, DOI
    • Advanced filters (category, type, date range)
    • Sort options (relevance, date, views, downloads)
    • Active filter tags
    • Results display with metrics
  • βœ… Categories page (/categories) - Subject browser:

    • Dynamic category grid from database
    • Article counts per category
    • Color-coded icons
    • Link to filtered archive
  • βœ… Announcements page (/announcements) - News feed:

    • Database-driven announcements
    • Type badges (news, call for papers, events)
    • Pinned announcements
    • Expiration dates
    • Newsletter subscription form

Authentication (UI Ready):

  • βœ… Login page (/login) - User authentication:

    • Email/password form
    • Remember me option
    • Password visibility toggle
    • Error handling
  • βœ… Register page (/register) - User registration:

    • Full name, email, password
    • Institution & department
    • Country selection
    • ORCID field
    • Interest checkboxes
    • Terms acceptance
    • Password strength meter
  • βœ… Forgot Password page (/forgot-password) - Password reset:

    • Email input
    • Success confirmation
    • Link to login

Support:

  • βœ… FAQ page (/faq) - Frequently asked questions:
    • Searchable FAQ
    • Category navigation
    • Expandable answers
    • 5 categories (Submission, Review, Fees, Publication, Ethics)

Legal & Compliance:

  • βœ… Privacy Policy (/privacy-policy) - GDPR-compliant:

    • Data collection disclosure
    • Legal basis for processing
    • User rights
    • Contact information
  • βœ… Terms of Use (/terms-of-use) - Website terms:

    • Usage conditions
    • Intellectual property
    • Author warranties
    • Limitation of liability
  • βœ… Cookie Policy (/cookie-policy) - Cookie disclosure:

    • Cookie types (essential, functional, analytics)
    • Third-party cookies
    • Management instructions
  • βœ… Accessibility Statement (/accessibility) - A11y commitment:

    • WCAG 2.1 compliance status
    • Accessibility features list
    • Known limitations
    • Contact for issues
  • βœ… Sitemap (/sitemap) - Site navigation:

    • All pages organized by category
    • XML sitemap reference

πŸ“ New Files Created:

/home/corecollection/public_html/src/app/
β”œβ”€β”€ submit/page.tsx                 # Manuscript submission wizard
β”œβ”€β”€ for-authors/
β”‚   β”œβ”€β”€ ethics/page.tsx             # Publication ethics
β”‚   └── fees/page.tsx               # Article processing charges
β”œβ”€β”€ search/page.tsx                 # Search interface
β”œβ”€β”€ categories/page.tsx             # Subject browser
β”œβ”€β”€ announcements/page.tsx          # News and announcements
β”œβ”€β”€ login/page.tsx                  # User login
β”œβ”€β”€ register/page.tsx               # User registration
β”œβ”€β”€ forgot-password/page.tsx        # Password reset
β”œβ”€β”€ faq/page.tsx                    # FAQ
β”œβ”€β”€ privacy-policy/page.tsx         # Privacy policy
β”œβ”€β”€ terms-of-use/page.tsx           # Terms of use
β”œβ”€β”€ cookie-policy/page.tsx          # Cookie policy
β”œβ”€β”€ accessibility/page.tsx          # Accessibility statement
└── sitemap/page.tsx                # Sitemap

πŸ“Š Website Statistics:

  • Total Routes: 26
  • Static Pages: 22
  • Dynamic Pages: 4 (archive, article, categories, announcements)
  • Total First Load JS: ~84-98 kB per page

Version 0.2.0 (December 3, 2025) - Core Website Structure

πŸŽ‰ Completed:

  • βœ… Project initialization with Next.js 13.5 + TypeScript
  • βœ… Tailwind CSS configuration with custom design system
  • βœ… Prisma ORM setup with MySQL database schema
  • βœ… Complete database schema with all models (Users, Articles, Submissions, Reviews, etc.)
  • βœ… Header component with responsive navigation
  • βœ… Footer component with all links and publisher info
  • βœ… Homepage with hero, latest articles, categories, stats, and announcements
  • βœ… About page with mission, vision, values, and publisher info
  • βœ… Editorial Board page with placeholder positions
  • βœ… Contact page with form and FAQ
  • βœ… Global CSS with component classes and animations
  • βœ… TypeScript type definitions for all entities
  • βœ… Utility functions library

πŸ“ Files Created:

/home/corecollection/public_html/
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ next.config.js
β”œβ”€β”€ tailwind.config.ts
β”œβ”€β”€ postcss.config.js
β”œβ”€β”€ .eslintrc.json
β”œβ”€β”€ env.example
β”œβ”€β”€ prisma/
β”‚   └── schema.prisma
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ globals.css
β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   β”œβ”€β”€ page.tsx (Homepage)
β”‚   β”‚   β”œβ”€β”€ about/page.tsx
β”‚   β”‚   β”œβ”€β”€ editorial-board/page.tsx
β”‚   β”‚   └── contact/page.tsx
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── layout/
β”‚   β”‚       β”œβ”€β”€ Header.tsx
β”‚   β”‚       β”œβ”€β”€ Footer.tsx
β”‚   β”‚       └── index.ts
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ db.ts
β”‚   β”‚   └── utils.ts
β”‚   └── types/
β”‚       └── index.ts
└── SYSTEM_DOCUMENTATION.md

πŸ”§ Technical Notes:

  • Using Node.js 16.20.2 (CentOS 7 GLIBC limitation)
  • Next.js 13.5.6 (compatible with Node 16)
  • MySQL 5.7 via cPanel
  • Production server runs on port 3001
  • Apache reverse proxy configured for domain access

Version 0.1.0 (December 3, 2025) - Initial Setup

  • Initial documentation created
  • Research completed on competitor journals (Elsevier, MDPI, SAGE, Nature, PLOS, Frontiers)
  • Design philosophy established
  • Technical architecture planned
  • Database schema designed

πŸ“Œ Quick Start for Developers

# Navigate to project
cd /home/corecollection/public_html

# Install dependencies
npm install

# Generate Prisma client
npx prisma generate

# Create .env.local from template
cp env.example .env.local
# Edit .env.local with your database credentials

# Seed database with sample data
npx ts-node --compiler-options '{"module":"CommonJS"}' prisma/seed.ts

# Run development server
npm run dev -- -p 3001

# Build for production
npm run build

# Start production server
npm run start -- -p 3001

# Manage with PM2
pm2 restart core-collection
pm2 logs core-collection

πŸ—„οΈ Database Access

# Connect to MySQL
mysql -u corecollection -pCoreCollection2025 corecollection_db

# Common queries
SELECT * FROM Article WHERE status = 'PUBLISHED';
SELECT * FROM Category WHERE isActive = 1;
SELECT * FROM User;

# Prisma Studio (visual database manager)
npx prisma studio

πŸ”— Useful Links


Document maintained by: Core Collection Development Team Last updated: December 6, 2025 - Version 0.17.0


πŸš€ Next Steps (Roadmap)

βœ… Completed Phases

PhaseFeaturesStatus
Phase 1Core website, authentication, registrationβœ… Complete
Phase 2Author dashboard, submission wizardβœ… Complete
Phase 3File uploads, draft managementβœ… Complete
Phase 4Reviewer dashboard, review workflowβœ… Complete
Phase 5Editor dashboard, decision workflowβœ… Complete
Phase 6Revision workflow, notificationsβœ… Complete
Phase 7Editorial panel enhancements, reviewer UIβœ… Complete
Phase 8UI/UX improvements, activity notificationsβœ… Complete

Immediate Next: Admin Panel (Step 9)

FeatureDescriptionPriority
User ManagementView/edit/deactivate usersHigh
Role AssignmentAssign roles (Reviewer, Editor)High
Editorial BoardManage board membersMedium
CategoriesManage subject categoriesMedium
SettingsJournal settings and configurationMedium
AnalyticsSubmission and publication statsLow

Issue Management (Step 10)

FeatureDescriptionPriority
Create IssuesCreate new journal issuesHigh
Assign ArticlesAssign accepted articles to issuesHigh
Publish IssuesPublish issues with DOIsHigh
Archive ManagementManage published contentMedium

External Integrations (Final Steps)

IntegrationDescriptionWhen
ISSN ApplicationApply via British LibraryAfter first content ready
CrossRef DOIRegister for DOI prefixAfter ISSN obtained
Google ScholarEnsure proper indexingAfter DOIs active
DOAJ ListingDirectory of Open Access JournalsAfter 1 year of publishing

This documentation is auto-generated from SYSTEM_DOCUMENTATION.md

Published by Science Scholar Limited β€’ Company No. 16312869