Welcome to MJS! We're building a modern, open-source journal system for the next generation of academic publishing. Whether you're a developer, researcher, or journal editor, MJS is designed to be powerful, extensible, and easy to use.
- Modern UI: Responsive, accessible interface built with React and Tailwind CSS
- AI-Powered Search: Smart recommendations and full-text search
- High-Performance Backend: Rust (Actix Web) for secure, scalable APIs
- Pluggable Architecture: (Planned) Support for plugins and custom modules
- Easy Deployment: Docker-based setup for local and production environments
- Robust Security: OAuth2/OpenID Connect (Keycloak), HTTPS-ready, secure session management
- Internationalization: (Planned) Multi-language support for global journals
MJS is a full-stack system with clear separation of concerns:
- Frontend: React + TypeScript (Next.js) — user interface, SSR, SEO
- Backend: Rust (Actix Web) — REST API, business logic, authentication
- AI/ML Service: Python (FastAPI) — peer review matching, citation analysis, recommendations
- Database: PostgreSQL — structured, reliable data storage
- File Storage: MinIO — scalable object storage for PDFs and media
- Search: Meilisearch — fast, typo-tolerant article search
- Caching: Redis — performance optimization for frequent queries
- Authentication: Keycloak — OAuth2, OpenID Connect
- Deployment: Docker, Kubernetes — scalable, portable infrastructure
- Monitoring: Prometheus, Grafana — system health and performance
- Code Quality: Pre-commit hooks, CI/CD (see CI_CD.md)
See docs/ARCHITECTURE.md for a detailed diagram, extensibility, and service interactions.
docker compose upVisit http://localhost:5173 to start using MJS!
cd frontend
npm install
npm run devcd backend
cargo build
cargo runcd ai-service
poetry install
poetry run uvicorn src.main:app --reload- Copy
.env.exampleto.envin each service directory and adjust settings as needed. - See
docs/CONFIGURATION.mdfor environment variables and secrets.
- Frontend:
npm test(Jest, React Testing Library) - Backend:
cargo test - AI Service:
pytest - Linting/Formatting: Prettier (TS), rustfmt (Rust), black (Python)
- CI/CD: GitHub Actions (see CI_CD.md)
- Pre-commit hooks: See PRECOMMIT.md
- OAuth2/OpenID Connect via Keycloak
- Secure session cookies (
SameSite,Secure) - HTTPS recommended for all deployments
- See
SECURITY.mdfor vulnerability reporting, secure configuration, and best practices
- (Planned) Plugin/module system for custom features and integrations
- API-first design for easy integration with external systems
- See
docs/PLUGINS.mdfor roadmap and guidelines
- Architecture
- Development Guide
- User Guide
- API Reference
- Configuration
- Troubleshooting
- Template Guide
- Roadmap
- Security
- Contributing
- Plugins
- Upgrade & Migration
- Internationalization
- Check our Troubleshooting Guide
- Search existing issues
- Join our Discord community
- Create a new issue
- See ROADMAP.md for planned features, plugin system, and migration guides.
- Upgrade instructions and compatibility notes will be provided with each release (see UPGRADE.md).
- MJS is under active development and not yet production-ready.
- See issues for current bugs and limitations.
MJS is open source under the MIT License.
Note: Some components and code are derived from Open Journal Systems (OJS) and are used under the GNU GPL v3. See LICENSE for details.
We welcome contributors of all experience levels!
See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Thanks to all contributors and the open source community!
Inspired by OJS and the Public Knowledge Project.
Remember: Every expert was once a beginner. Don't hesitate to ask questions and contribute!
MJS is under active development and not yet ready for deployment. Usage guides (Admin Guide, Getting Started, and Documentation Hub) will be available at balinesthesia.github.io/mjs/docs/ upon our first release. Stay tuned at github.com/balinesthesia/mjs!
MJS is built with a full-stack architecture optimized for performance, scalability, and academic publishing needs:
- Frontend: React with TypeScript and Next.js for a responsive, SEO-friendly interface.
- Backend: Rust with Actix Web for secure, high-performance APIs.
- AI/ML: Python with FastAPI for features like peer review matchmaking, citation analysis, plagiarism detection, and beyond.
- Database: PostgreSQL for robust, structured data storage.
- File Storage: MinIO for scalable hosting of PDFs and supplementary files.
- Caching: Redis for optimized performance on frequent queries.
- Search: Meilisearch for fast, full-text article search.
- Authentication: Keycloak with OAuth 2.0 and OpenID Connect for secure user access.
- Deployment: Docker and Kubernetes for scalable, portable infrastructure.
- Monitoring: Prometheus and Grafana for system health and performance tracking.
- Code Quality: Pre-commit hooks for automated code formatting and linting across all services.
For a detailed migration plan and timeline, see our ROADMAP.md.
⚠️ See our SECURITY.md for vulnerability reporting.
- Issues: github.com/balinesthesia/mjs/issues
- Feature requests: Discussions
- Learn more: CONTRIBUTING.md
This repository is a community space managed by Balinesthesia. All activities here are governed by the Balinesthesia Code of Conduct, inspired by PKP's Code of Conduct. Please review the Code and help us create a welcoming environment for all participants.
MJS's Contributor Guide is under development and will be available upon our first release at balinesthesia.github.io/mojs/docs/contributors/. It will cover pull request guidelines, code formatting (e.g., Prettier for TypeScript, rustfmt for Rust), and branch/submodule organization for the frontend, backend, and AI components. For now, see CONTRIBUTING.md for basic contribution details.
Modern Open Journal Systems (MJS)
Copyright (C) 2025 Balinesthesia
Derived from Open Journal Systems (OJS), Copyright (C) 2001-2025 Public Knowledge Project
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the docs/LICENSE filesfor details.
Third parties are welcome to modify and redistribute MJS in entirety or parts according to the terms of this license. Balinesthesia also welcomes patches for improvements or bug fixes to the software, whether for the React frontend, Rust backend, or Python AI services—see github.com/balinesthesia/mjs for contribution details.