Jisc released this repository into the public domain under the GNU General Public License in April 2026 following the decision to retire the Publications Router service on 1 July 2026.
It is one of three Jisc git repositories that together store the complete application source code of the final operational version of Publications Router.
This repository contains the application specific source code, with specific redactions of sensitive configuration data such as email addresses, passwords, IP addresses and database connections.
The repository is archived. The source code is not supported or maintained by Jisc. Issues and Pull Requests will not be monitored or responded to.
This repository stores the application specific source code (mainly Python, with some JavaScript and a little bash shellscript) of the Jisc Publications Router application (also known as PubRouter or Router), which Jisc developed and operated for 10 years from 2016 to 2026. There are two other repositories containing general library code that is used by Publications Router.
The public website at https://pubrouter.jisc.ac.uk (until July 2026) or via "Way Back Machine" at https://web.archive.org/web/20260220181159/https://pubrouter.jisc.ac.uk/, provides useful overview, including some schematics.
The bulk of the application documentation is in the ./docs folder:
- Other Git repositories used by PubRouter
- PubRouter architecture
- AWS infrastructure
- Database
- Configuration
- Build & Deployment
- Batch job scheduling
- Server administration
- Development guidelines
- Windows development environment
Other documentation is located in a public Git repository. This provides the following important information:
- Detailed description of PubRouter's API (including a Swagger library)
- Detailed description of PubRouter notification JSON data models
- Notes on PubRouter's use of JATS
- XML structures used by PubRouter to send articles to Eprints & DSpace repositories via SWORD protocol
- Release history.
The PubRouter application is built using the Flask framework. Though some of the software modules in this repository are general purpose and may run in any context, the majority are dependent on the Flask context.
PubRouter contains the following principal service components:
- JPER Web - GUI & API web applications
- Scheduler - batch processes
- JPER Harvester - batch harvesting of notifications
- Store - provides services for storing files (article PDFs, Zip files etc.) on disk
- SWORD Out - used to send notifications to Repositories via SWORD protocol.
| Directory name | Contents |
|---|---|
| deployment | Files, arranged in service (component) sub-directories, that are installed onto target servers by the deployment process. There is a README that describes its contents in more detail. |
| docs | Documentation, mainly *.md file - see Contents section above. |
| jenkins | Shell scripts used by the Jenkins deployment jobs. |
| Octopus | Library (submodule) of functions that are used extensively by PubRouter. See Octopus git repository. |
| scripts | Various scripts, mainly Python, that are used: * as part of particular release deployments (these are in their own 'release_xx.x' sub-directories) * for performing adhoc administration functions. |
| src | The principal directory containing PubRouter source code, which is packaged into the PubRouter python package. |
| sword2 | Library (submodule) that provides SWORD2 client & SWORD2 server functionality. See SWORD2 git repository. |
| tests | Full test suite arranged in sub-directories. |