The PubSweet core is made up of two modules:
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.
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.
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:
- user management
- realtime sync
- team management
- advanced document editors
- format conversion
... and much more.
...go to components
A basic app
A basic PubSweet app is a Node.js app that has
pubsweet-client as dependencies, as well as:
- configuration for the app
- React scaffolding (HTML container, routes, etc.)
- WebPack configuration
- usually, some components
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