Nova JournalPort
Multi-tenant publishing infrastructure for academic journals.



Screenshots from the live system's public pages.
01 — Problem
Academic journals are stuck between shared national platforms and self-hosted open-source software that is heavy to install and maintain. There is no modern infrastructure that gives a journal its own brand, its own domain, enforced blind review and the metadata indexers expect.
02 — System
We designed a multi-tenant SaaS where every journal gets its own public site and a role-aware editorial desk on the same host. When a journal is approved, the system provisions a dedicated database, runs migrations and creates its owner. Submission, blind review, production, issue publishing, the DOI queue and indexing exports form one continuous flow.
Article state machine
Every article state is defined in the model; transitions are guarded by role and scope.
- 01Submitted
- 02In review
- 03Revision
- 04Accepted
- 05Published
Rejected → decision letter to author
Nova JournalPort — dergi yönetimi
Submitted
In review
Revision
Accepted
Published
03 — Architecture
Each request is routed to the journal resolved from its Host header: a subdomain or a custom domain whose CNAME has been verified. The catalogue lives in one master database; every journal's data lives in its own. Email and DOI jobs are processed from RabbitMQ queues by dedicated workers.
- L0Users
- Authors
- Reviewers
- 13 editorial roles
- Platform admins
- L1Interfaces
- novajournalport.com
- Platform admin
- {journal}.novajournalport.com
- Custom domains
- L2Application
- Tenant resolver
- Express API
- 5 workers
- L3Modules
- Submission
- Blind review
- Production
- Issues
- DOI queue
- Import / export
- Themes & CMS
- L4Data
- MySQL master
- Database per journal
- RabbitMQ
- MinIO (S3)
- L5External services
- Crossref XML
- DOAJ
- PubMed
- JATS 1.3
- Google Scholar
- Resend
04 — Capabilities
- 01
Per-journal isolation
Every approved journal gets its own MySQL database; tenant tables carry no tenant_id. Application, approval, provisioning and owner account creation run automatically.
- 02
Editorial workflow
13 roles, multi-role users, section-editor scoping; reviewer invitations and recommendations, editor decisions, revision rounds and decision letters sent by email.
- 03
Blind review, enforced in code
Reviewers never see author identity or original file names; emails to reviewers are filtered for identity leaks.
- 04
Issues and production
Volume/issue/year, early view, full-issue PDF and table of contents; language editor, layout editor and proofreader assignments; cover images rendered server-side from a PDF's first page.
- 05
Metadata and indexing
Crossref 5.3.1 deposit XML, DOAJ, PubMed/MEDLINE, JATS 1.3 and PhilPapers exports; Google Scholar meta tags, schema.org, sitemap and RSS on every article.
- 06
Migration tooling
Import back issues from Crossref XML, JATS, DOAJ or the Crossref API by ISSN; preview, single-transaction commit, SSRF-safe PDF fetching and undo.
- 07
Journal websites
11 themes, block-based pages, two-level menus, an in-browser PDF reader, 7 citation styles, BibTeX/RIS, search and editorial turnaround statistics.
- 08
Custom domains
A journal registers its own domain; the platform binds it once the CNAME is verified. A custom CDN domain can be verified separately.
05 — Impact
- 01
A journal can go from application to a live site without operator intervention.
- 02
Blind review is enforced by the system, not left to an editor's vigilance.
- 03
Back issues import with a preview and can be rolled back in one step.
- 13
- editorial roles
- 1:1
- database per journal
- 11
- journal themes
- 7
- citation styles
- 6
- indexing export formats
- 304
- automated test files
Technology stack
Frontend
- Next.js 15
- React 19
- Tailwind
- pdf.js
Backend
- Node.js 20
- Express
- TypeScript 5.8
- Sequelize
- Umzug
Data
- MySQL 8
- RabbitMQ 3.13
- MinIO (S3)
Documents
- pdf.js
- @napi-rs/canvas
- fast-xml-parser
Infrastructure
- Docker Swarm
- Portainer
- Nginx Proxy Manager
- Bitbucket Pipelines

