PubSweet is a modern, modular javascript toolkit for building publishing workflows.

The PubSweet core is made up of two modules: pubsweet-server and pubsweet-client, both of which can be extended and modified using components.


A Node.js express-based app which runs on a server. This module contains the data models, handles the database layer, and exposes a REST API and optionally a realtime event stream using Server Sent Events.

...go to pubsweet-server


A React-based app which runs in the browser. It is written in ES6 and intended to be bundled using Webpack. This module is the base for the user interface for a PubSweet app, interacting with the REST API of the server.

...go to pubsweet-client


Both server and client come with some essential functionality, but can be extended with components. A component is a Node.js module and can export a client component, a server component, or both. Client components can include React components and Redux actions and reducers. Server components can include express middleware or routing functions.

By adding components you can rapidly include and customise features like:

... and much more.

...go to components

A basic app

A basic PubSweet app is a Node.js app that has pubsweet-server and pubsweet-client as dependencies, as well as:

The PubSweet command-line interface pubsweet helps with app development. It can generate a basic app, setup the database, run the app, and manage components.

An example of the basic structure of an app is included in the CLI (via pubsweet new), and can also be seen here: pubsweet-starter.

Next let's talk about the server module