Core Collection
Complete System Documentation & Technical Specification
Version
0.2.0
Core Collection - Multidisciplinary Scientific Journal
Complete System Documentation
<div align="center">π 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
| Component | Status | Progress |
|---|---|---|
| Core Infrastructure | ||
| Project Setup | β Complete | 100% |
| Database Schema (Prisma) | β Complete | 100% |
| Database Seeding | β Complete | 100% |
| Header/Footer Components | β Complete | 100% |
| Global Styling & Design System | β Complete | 100% |
| TypeScript Types | β Complete | 100% |
| Utility Functions | β Complete | 100% |
| Public Pages | ||
| Homepage | β Complete | 100% |
| About Page | β Complete | 100% |
| Editorial Board Page | β Complete | 100% |
| Contact Page | β Complete | 100% |
| For Authors Page | β Complete | 100% |
| For Reviewers Page | β Complete | 100% |
| Archive/Browse Page | β Complete | 100% |
| Article Display Pages | β Complete | 100% |
| Categories Page | β Complete | 100% |
| Search Page | β Complete | 100% |
| Announcements Page | β Complete | 100% |
| FAQ Page | β Complete | 100% |
| Submission System | ||
| Submit Manuscript Page (UI) | β Complete | 100% |
| Publication Ethics Page | β Complete | 100% |
| Article Processing Charges | β Complete | 100% |
| Authentication | ||
| Login Page (UI + Backend) | β Complete | 100% |
| Register Page (UI + Backend) | β Complete | 100% |
| Forgot Password (UI + Backend) | β Complete | 100% |
| Password Reset Flow | β Complete | 100% |
| Email Sending (Nodemailer) | β Complete | 100% |
| Legal Pages | ||
| Privacy Policy | β Complete | 100% |
| Terms of Use | β Complete | 100% |
| Cookie Policy | β Complete | 100% |
| Accessibility Statement | β Complete | 100% |
| Sitemap | β Complete | 100% |
| Author Dashboard | ||
| Main Dashboard | β Complete | 100% |
| Profile Management | β Complete | 100% |
| Submissions List | β Complete | 100% |
| Submission Detail Page | β Complete | 100% |
| Recent Activity Feed | β Complete | 100% |
| Manuscript Submission | ||
| 6-Step Submission Wizard | β Complete | 100% |
| File Upload System | β Complete | 100% |
| Draft Save & Continue | β Complete | 100% |
| Co-Author Email Notifications | β Complete | 100% |
| Submission Confirmation Email | β Complete | 100% |
| Reviewer Dashboard | β Complete | 100% |
| Review Invitations | β Complete | 100% |
| Active Reviews | β Complete | 100% |
| Review Form & Scoring | β Complete | 100% |
| Completed Reviews | β Complete | 100% |
| Editor Dashboard | β Complete | 100% |
| Main Editor Dashboard | β Complete | 100% |
| Submissions Queue | β Complete | 100% |
| Submission Detail View | β Complete | 100% |
| Assign Reviewers (with workload) | β Complete | 100% |
| Invite Reviewers (with/without account) | β Complete | 100% |
| Make Decisions (2-reviewer min) | β Complete | 100% |
| Workflow Automation | β Complete | 100% |
| Author notify on reviewer accept | β Complete | 100% |
| Author notify on editor assignment | β Complete | 100% |
| Revision submission workflow | β Complete | 100% |
| Auto-notify reviewers on revision | β Complete | 100% |
| Double-blind review enforcement | β Complete | 100% |
| File versioning & download | β Complete | 100% |
| Edit history tracking | β Complete | 100% |
| Response to reviewers display | β Complete | 100% |
| Galley proof section (UI) | β Complete | 100% |
| Editorial Panel Enhancements | β Complete | 100% |
| Desk Rejection | β Complete | 100% |
| Reassign Reviewers (revisions) | β Complete | 100% |
| Editor Self-Review | β Complete | 100% |
| Editor-Author Messaging | β Complete | 100% |
| Author Withdrawal Request | β Complete | 100% |
| Author Notifications Panel | β Complete | 100% |
| Reviewer UI Enhancements | β Complete | 100% |
| Previous review display (own) | β Complete | 100% |
| Other reviewers' feedback | β Complete | 100% |
| Confidential comments (to editor) | β Complete | 100% |
| File versioning in review UI | β Complete | 100% |
| Author response display | β Complete | 100% |
| New reviewer invitation fix | β Complete | 100% |
| UI/UX Improvements (v0.17) | β Complete | 100% |
| Files sidebar in editor panel | β Complete | 100% |
| Review rounds display (author) | β Complete | 100% |
| Author-editor messaging UI | β Complete | 100% |
| Activity Notification System | β Complete | 100% |
| Message notifications | β Complete | 100% |
| Reviewer event badges | β Complete | 100% |
| Editor decision badges | β Complete | 100% |
| Submission list highlights | β Complete | 100% |
| Issue Management | π Planned | 0% |
| Admin Panel | π Planned | 0% |
| User Management | π Planned | 0% |
| Settings | π Planned | 0% |
| Analytics | π Planned | 0% |
| External Integrations | ||
| ISSN Application | π Planned | 0% |
| DOI Registration (CrossRef) | π Planned | 0% |
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):
| Category | Pages | Status |
|---|---|---|
| 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
| Item | Status |
|---|---|
| MySQL Database | β Connected |
| Prisma Schema | β Synced |
| Sample Data | β Seeded |
| Categories | 8 active |
| Sample Articles | 3 published |
| Sample Users | 4 created |
| Volumes/Issues | Vol 1, Issues 1-2 |
| Announcements | 3 active |
Table of Contents
- Overview
- Publisher Information
- Research & Competitor Analysis
- Design Philosophy
- Technical Architecture
- Database Schema
- Features & Functionality
- ISSN & DOI Registration
- Page Structure
- API Endpoints
- Editorial Workflow
- Security & Compliance
- Deployment & Infrastructure
- Future Roadmap
- 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
-
Homepage Design
- Featured/latest articles prominently displayed
- Clear navigation to all sections
- Announcements and calls for papers visible
- Journal metrics/impact displayed
-
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
-
Submission System
- Multi-step guided submission
- Real-time progress tracking
- Clear status indicators
- Communication tools
- File upload with validation
-
Author Resources
- Detailed preparation guidelines
- Templates (Word, LaTeX)
- Ethical guidelines
- FAQs
- Publication fees information
-
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
- Scholarly Authority: Professional, trustworthy appearance
- Readability First: Optimal line length, generous spacing
- Clean Hierarchy: Clear visual distinction between sections
- Responsive: Mobile-first, works on all devices
- Accessible: WCAG 2.1 AA compliant
- 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
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 14.x | React framework with App Router |
| React | 18.x | UI library |
| TypeScript | 5.x | Type safety |
| Tailwind CSS | 3.x | Utility-first styling |
| Radix UI | Latest | Accessible UI primitives |
| Framer Motion | Latest | Animations |
| React Hook Form | Latest | Form management |
| Zod | Latest | Schema validation |
Backend
| Technology | Version | Purpose |
|---|---|---|
| Next.js API Routes | 14.x | API endpoints |
| Prisma | 5.x | ORM & database toolkit |
| NextAuth.js | 4.x | Authentication |
| Nodemailer | Latest | Email delivery |
| Sharp | Latest | Image processing |
| pdf-lib | Latest | PDF manipulation |
Database
| Technology | Purpose |
|---|---|
| PostgreSQL 15+ | Primary database |
| Redis (optional) | Caching, sessions |
Infrastructure
| Service | Purpose |
|---|---|
| Node.js 20 LTS | Runtime |
| Nginx | Reverse proxy |
| PM2 | Process management |
| Let's Encrypt | SSL 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:
- Article type selection
- Title, abstract, keywords
- Authors management (add co-authors)
- File uploads (manuscript, figures, supplementary)
- Cover letter
- Suggested reviewers (optional)
- Declarations (ethics, conflicts, data)
- 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
-
Contact: British Library - UK ISSN Centre
- Website: https://www.bl.uk/help/how-to-apply-for-an-issn
- Email: issn-uk@bl.uk
-
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
-
Information Needed:
- Journal title
- Abbreviated title
- Publisher name and address
- Publication frequency
- Subject coverage
- Language of publication
- Website URL
- First issue date
-
Timeline: 2-4 weeks typically
-
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
-
About CrossRef
- Primary DOI registration agency for scholarly content
- Website: https://www.crossref.org
-
Membership Requirements:
- Active publisher with content to register
- Website with published articles
- Commitment to maintain metadata
-
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
-
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 -
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
| Route | Page | Description | Status |
|---|---|---|---|
/ | Homepage | Main landing page | β Live |
/about | About | Journal mission, scope, history | β Live |
/editorial-board | Editorial Board | Team profiles | β Live |
/for-authors | For Authors | Guidelines, templates, FAQs | β Live |
/for-authors/ethics | Publication Ethics | Ethics policies | β Live |
/for-authors/fees | Article Processing Charges | Fee information | β Live |
/for-reviewers | For Reviewers | Review guidelines, criteria | β Live |
/archive | Archive | Browse all content | β Live |
/article/[slug] | Article Page | Full article | β Live |
/search | Search | Search interface | β Live |
/categories | Categories | Browse by subject | β Live |
/categories/[slug] | Category View | Articles in category | β Live |
/contact | Contact | Contact form | β Live |
/announcements | Announcements | News and updates | β Live |
/announcements/[id] | Announcement Detail | Individual announcement | β Live |
/submit | Submit Manuscript | Submission wizard | β Live |
/faq | FAQ | Frequently asked questions | β Live |
/docs | Documentation | System documentation | β Live |
/privacy-policy | Privacy Policy | Legal | β Live |
/terms-of-use | Terms of Use | Legal | β Live |
/cookie-policy | Cookie Policy | Cookie information | β Live |
/accessibility | Accessibility | Accessibility statement | β Live |
/sitemap | Sitemap | Site navigation | β Live |
Auth Pages
| Route | Page | Description |
|---|---|---|
/login | Login | User login |
/register | Register | User registration |
/forgot-password | Forgot Password | Password reset request |
/reset-password | Reset Password | Password reset |
/verify-email | Email Verification | Email confirmation |
Dashboard Pages
| Route | Page | Role |
|---|---|---|
/dashboard | Dashboard Home | All |
/dashboard/profile | Profile | All |
/dashboard/submissions | My Submissions | Author |
/dashboard/submissions/[id] | Submission Detail | Author |
/dashboard/submit | Submit Manuscript | Author |
/dashboard/reviews | My Reviews | Reviewer |
/dashboard/reviews/[id] | Review Form | Reviewer |
/dashboard/editor | Editor Dashboard | Editor |
/dashboard/editor/submissions | Manage Submissions | Editor |
/dashboard/editor/submissions/[id] | Submission Management | Editor |
/dashboard/editor/issues | Issue Management | Editor |
/dashboard/admin | Admin Panel | Admin |
/dashboard/admin/users | User Management | Admin |
/dashboard/admin/board | Editorial Board | Admin |
/dashboard/admin/categories | Categories | Admin |
/dashboard/admin/settings | Settings | Admin |
/dashboard/admin/analytics | Analytics | Admin |
10. API Endpoints
Authentication
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register | User registration |
| POST | /api/auth/login | User login |
| POST | /api/auth/logout | User logout |
| POST | /api/auth/forgot-password | Request password reset |
| POST | /api/auth/reset-password | Reset password |
| GET | /api/auth/verify-email | Verify email token |
| GET | /api/auth/session | Get current session |
Articles
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/articles | List published articles |
| GET | /api/articles/[slug] | Get article by slug |
| GET | /api/articles/[slug]/pdf | Download PDF |
| GET | /api/articles/[slug]/citation | Get citation formats |
| POST | /api/articles/[slug]/view | Record view |
Submissions
| Method | Endpoint | Description | Status |
|---|---|---|---|
| GET | /api/submissions | List user's submissions with stats | β Working |
| POST | /api/submissions | Create 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]/submit | Submit for review | β Working |
File Upload
| Method | Endpoint | Description | Status |
|---|---|---|---|
| POST | /api/upload | Upload file (manuscript, figure, table, supplementary) | β Working |
| DELETE | /api/upload?fileId=xxx | Delete uploaded file | β Working |
| GET | /api/files/[...path] | Serve uploaded files | β Working |
User
| Method | Endpoint | Description | Status |
|---|---|---|---|
| GET | /api/user/profile | Get user profile | β Working |
| PUT | /api/user/profile | Update user profile | β Working |
| GET | /api/user/submissions | Get user's submissions with stats | β Working |
Reviews
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/reviews | List reviewer's reviews |
| GET | /api/reviews/[id] | Get review details |
| POST | /api/reviews/[id]/accept | Accept review invitation |
| POST | /api/reviews/[id]/decline | Decline review invitation |
| PUT | /api/reviews/[id] | Submit review |
Editor
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/editor/submissions | List all submissions |
| PUT | /api/editor/submissions/[id]/assign | Assign editor |
| POST | /api/editor/submissions/[id]/invite-reviewer | Invite reviewer |
| PUT | /api/editor/submissions/[id]/decision | Make decision |
| GET | /api/editor/issues | List issues |
| POST | /api/editor/issues | Create issue |
| PUT | /api/editor/issues/[id] | Update issue |
| POST | /api/editor/issues/[id]/publish | Publish issue |
Admin
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/admin/users | List users |
| PUT | /api/admin/users/[id] | Update user |
| GET | /api/admin/board | List board members |
| POST | /api/admin/board | Add board member |
| PUT | /api/admin/board/[id] | Update board member |
| DELETE | /api/admin/board/[id] | Remove board member |
| GET | /api/admin/settings | Get settings |
| PUT | /api/admin/settings | Update settings |
| GET | /api/admin/analytics | Get analytics data |
Search
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/search | Search articles |
| GET | /api/search/suggestions | Search 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
| Stage | Target Duration |
|---|---|
| Initial Editor Assignment | 3 days |
| Reviewer Invitation Response | 7 days |
| Review Completion | 21 days |
| Editorial Decision | 7 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)
- Authorship: Clear criteria, corresponding author responsibility
- Conflicts of Interest: Mandatory disclosure
- Peer Review: Double-blind, confidential
- Plagiarism: Detection and response policies
- Corrections: Erratum, corrigendum, retraction policies
- 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 proceedsMINOR_REVISION: 14-day deadline, same reviewers auto-notifiedMAJOR_REVISION: 30-day deadline, editor chooses re-reviewersREJECT: 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
revisionRoundincrements (v1 β v2)- Minor Revision: Same reviewers automatically invited for re-review
- Major Revision: Editor manually assigns reviewers
Notification Types
| Event | Author | Editor | Reviewer | Co-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:
| Badge | Icon | Event | Description |
|---|---|---|---|
| Messages | π¬ | Author sent message | Unread messages from author |
| Review Done | β (green) | Review completed | Reviewer submitted review in last 7 days |
| Accepted | β (blue) | Reviewer accepted | Reviewer accepted invitation in last 7 days |
| Declined | β (red) | Reviewer declined | Reviewer declined invitation in last 7 days |
| Revision | π (purple) | Revision submitted | Author submitted revision in last 7 days |
Author Submissions List - Badge Types:
| Badge | Icon | Event | Description |
|---|---|---|---|
| Messages | π¬ | Editor sent message | Unread messages from editor |
| Decision | β | Decision made | Editorial decision in last 7 days |
| Revision | π | Revision requested | Revision requested in last 7 days |
| Progress | π | Review progress | Reviewer completed review in last 7 days |
| Assigned | π€ | Editor assigned | Editor 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
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 4 cores |
| RAM | 4 GB | 8 GB |
| Storage | 50 GB SSD | 100 GB SSD |
| OS | Ubuntu 22.04 LTS | Ubuntu 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):
| Badge | Event | Color |
|---|---|---|
| π¬ | New message from author | Orange |
| β | Review completed | Green |
| β | Reviewer accepted invitation | Blue |
| β | Reviewer declined invitation | Red |
| π | Author submitted revision | Purple |
For Authors (on submissions list):
| Badge | Event | Color |
|---|---|---|
| π¬ | New message from editor | Blue |
| β Decision | Editor made a decision | Green |
| π Revision needed | Revision requested | Amber |
| π Review update | Reviewer completed review | Purple |
| π€ Editor assigned | Editor assigned to manuscript | Indigo |
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:
- β
withdrawalRequestedandwithdrawalReasonfields 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:
| Endpoint | Method | Changes |
|---|---|---|
/api/user/submissions | GET | Added notifications object with event counts |
/api/editor/submissions | GET | Added notifications object with event counts |
/api/submissions/[id] | GET | Added previousSubmission reviews for round display |
/api/editor/submissions/[id] | GET | Added 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-reviewerandreset-passwordAPIs - Fix: Unified to use
crypto.randomByteswith SHA256 hash stored inSettingtable - Fix: Added
emailparameter to reset URL
- Issue: Token storage mechanism mismatch between
-
β Fixed: New reviewers couldn't see previous round reviews:
- Issue: Code checked
review.isRevisionReviewwhich is false for new reviewers - Fix: Changed to check
submission.previousSubmissionIdORrevisionRound > 1 - Fix: Added fallback to find completed reviews on same submission if no previousSubmissionId
- Issue: Code checked
-
β Fixed: Notification click not showing editor message:
- Issue: No UI to display notifications in author dashboard
- Fix: Created
/api/notificationsendpoint 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:
| Endpoint | Method | Description |
|---|---|---|
/api/notifications | GET | Fetch user notifications |
/api/notifications | POST | Mark all notifications as read |
/api/editor/submissions/[id]/desk-reject | POST | Desk reject submission |
/api/editor/submissions/[id]/reassign-reviewers | POST | Reassign reviewers for revision |
/api/editor/submissions/[id]/editor-review | POST | Editor submits own review |
/api/editor/submissions/[id]/message | POST | Send message to author |
/api/editor/submissions/[id]/withdrawal | POST | Approve/deny withdrawal |
/api/submissions/[id]/withdrawal-request | POST | Author requests withdrawal |
/api/reviews/[id] | GET | Enhanced 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:
originalValuesref 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:
sortOrderfield typo (authorOrder) in revision API - β
Fixed: Logout when clicking "Submit Manuscript": Links now correctly go to
/dashboard/submitinstead of/submit - β
Fixed: Download causing page reset: Changed from
<a>tag to<button>withwindow.open() - β
Fixed: Revision data not loading: Added
reviseSubmissionIdto useEffect dependency array - β
Fixed: Page resetting on interactions: Added
dataLoadedRefto prevent data reload - β Database restore: Restored accidentally deleted authors after failed revision attempt
API Endpoints Created/Modified:
| Endpoint | Method | Description |
|---|---|---|
/api/files/download/[fileId] | GET | Secure file download by ID |
/api/submissions/[id]/revision | POST | Submit 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:
revisionRoundfield tracks revision iterations - β Auto-notify reviewers: Minor revision β same reviewers auto-invited for re-review
Email Templates Added:
| Template | Trigger |
|---|---|
sendManuscriptUnderReviewEmail | When reviewer accepts invitation |
sendEditorAssignedEmail | When editor assigns to submission |
sendDecisionEmail | Editorial decision with anonymized reviews |
sendRevisionSubmittedToReviewerEmail | When author submits revision |
sendReviewerRegistrationInviteEmail | Invite 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:
| Endpoint | Method | Description |
|---|---|---|
/api/editor/submissions | GET | List all submissions with stats |
/api/editor/submissions/[id] | GET | Get submission details |
/api/editor/submissions/[id] | PUT | Update submission (assign editor) |
/api/editor/submissions/[id]/invite-reviewer | POST | Invite reviewer |
/api/editor/submissions/[id]/decision | POST | Make 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:
| Endpoint | Method | Description |
|---|---|---|
/api/reviews | GET | List reviewer's reviews with stats |
/api/reviews/[id] | GET | Get review details (double-blind) |
/api/reviews/[id] | PUT | Submit completed review |
/api/reviews/[id]/accept | POST | Accept review invitation |
/api/reviews/[id]/decline | POST | Decline review invitation |
Email Templates:
- β Review Invitation Email (sent by editor when inviting reviewer)
- β Review Accepted Confirmation (sent to reviewer upon acceptance)
Review Workflow:
- Editor invites reviewer β Email sent with Accept/Decline links
- Reviewer accepts β Status: ACCEPTED, Due date set (21 days)
- Reviewer works on review β Can save draft progress
- Reviewer submits β Status: COMPLETED, Editor notified
- 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:
Reviewmodel withstatusenum: INVITED, ACCEPTED, DECLINED, IN_PROGRESS, COMPLETED, EXPIREDReviewRecommendationenum: 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
ArticleFiledatabase 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)
- Created
Submission Wizard Improvements:
-
β 6-Step Wizard with new Files step:
- Article Type
- Manuscript Details (title, abstract, keywords)
- Authors (with co-author management)
- Files (NEW - upload manuscript and supplementary files)
- Cover Letter
- Review & Submit
-
β Draft Save & Continue Flow:
- "Save Draft & Enable Uploads" button in Files step
- Creates draft submission and gets
articleIdfor 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
formidablefor multipart parsing - Files stored with UUID filenames for security
- Original filenames preserved in database
- Draft loading uses
useSearchParamswith 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:
| Template | Subject | Trigger |
|---|---|---|
| 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:
- Registration: User fills form β API validates β Creates user β Sends welcome email β Redirect to login
- Login: User enters credentials β NextAuth validates β JWT created β Redirect to dashboard
- 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:
| Endpoint | Method | Description |
|---|---|---|
/api/submissions | POST | Create new submission |
/api/submissions | GET | List user's submissions |
/api/submissions/[id] | GET | Get submission details |
/api/submissions/[id] | PUT | Update draft submission |
/api/submissions/[id] | DELETE | Delete draft submission |
/api/submissions/[id]/submit | POST | Submit for review |
/api/categories | GET | Get 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:
- User visits
/login - Enters credentials (email + password)
- NextAuth validates against database (bcrypt comparison)
- On success: JWT token created, user redirected to
/dashboard - Session persists for 30 days (JWT strategy)
- 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]
- Volume/issue links now use query parameters (
- β
Visual spacing fixes - Added proper padding (
p-6) to card components:- Archive article cards
- Archive sidebar cards (volumes and categories)
- β
Added
container-customCSS 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
- Dynamic routing
π 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:
| Entity | Count | Details |
|---|---|---|
| Categories | 8 | Physics, Life Sciences, Computer Science, Math, Environmental, Engineering, Chemistry, Social Sciences |
| Volumes | 1 | Volume 1 (2025) |
| Issues | 2 | January 2025, February 2025 |
| Users | 4 | Admin, Editor, Author, Reviewer |
| Articles | 3 | Quantum Computing, ML Drug Discovery, Climate Biodiversity |
| Announcements | 3 | Launch, 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
- Live Site: https://core-collection.com
- For Authors: https://core-collection.com/for-authors
- For Reviewers: https://core-collection.com/for-reviewers
- Archive: https://core-collection.com/archive
- Companies House: https://find-and-update.company-information.service.gov.uk/company/16312869
- ISSN Application: https://www.bl.uk/help/how-to-apply-for-an-issn
- CrossRef (DOI): https://www.crossref.org
Document maintained by: Core Collection Development Team Last updated: December 6, 2025 - Version 0.17.0
π Next Steps (Roadmap)
β Completed Phases
| Phase | Features | Status |
|---|---|---|
| Phase 1 | Core website, authentication, registration | β Complete |
| Phase 2 | Author dashboard, submission wizard | β Complete |
| Phase 3 | File uploads, draft management | β Complete |
| Phase 4 | Reviewer dashboard, review workflow | β Complete |
| Phase 5 | Editor dashboard, decision workflow | β Complete |
| Phase 6 | Revision workflow, notifications | β Complete |
| Phase 7 | Editorial panel enhancements, reviewer UI | β Complete |
| Phase 8 | UI/UX improvements, activity notifications | β Complete |
Immediate Next: Admin Panel (Step 9)
| Feature | Description | Priority |
|---|---|---|
| User Management | View/edit/deactivate users | High |
| Role Assignment | Assign roles (Reviewer, Editor) | High |
| Editorial Board | Manage board members | Medium |
| Categories | Manage subject categories | Medium |
| Settings | Journal settings and configuration | Medium |
| Analytics | Submission and publication stats | Low |
Issue Management (Step 10)
| Feature | Description | Priority |
|---|---|---|
| Create Issues | Create new journal issues | High |
| Assign Articles | Assign accepted articles to issues | High |
| Publish Issues | Publish issues with DOIs | High |
| Archive Management | Manage published content | Medium |
External Integrations (Final Steps)
| Integration | Description | When |
|---|---|---|
| ISSN Application | Apply via British Library | After first content ready |
| CrossRef DOI | Register for DOI prefix | After ISSN obtained |
| Google Scholar | Ensure proper indexing | After DOIs active |
| DOAJ Listing | Directory of Open Access Journals | After 1 year of publishing |