Skip to content

Developer documentation

Marisa DeMeglio edited this page Mar 31, 2026 · 16 revisions

Developer documentation

The Pipeline App is a NodeJS + Electron + React + Redux project. It relies on the Pipeline Engine to perform document tasks.

In its main process, it starts the Pipeline Engine upon app startup, and interacts with it via HTTP calls to the Pipeline's web service. It gets updates from the Engine both via polling endpoints and subscribing to web socket events.

The app has one main window, consisting of a tabbed job management interface; a settings window, and an about window.

There is also a system tray icon and menu, useful for keeping the Engine running in the background.

Disk locations

  • App data: The Pipeline Engine is instructed to use an APPDATA directory for its data directory.
  • Job results: Copied by the Pipeline App to a directory that the user sets in Settings.
  • Logs: found in these locations.

Prerequisites

Run the code

  • Check out this repository
  • Run yarn to install dependencies
  • Run yarn dev to run the app in development mode

Release the code

Mac

  • Configure your machine for code signing and notarizing
    • Get credentials (e.g. signing certificate)
    • Create a file called .env in the root with this information:
APPLE_ID=*******
APPLE_ID_PASS=*********
APPLE_ID_TEAM=********
  • Build the installer
    • yarn dist --mac
    • This creates a dmg file, signs the code, and notarizes the app.
  • Sign and notarize the installer.
    • Run sign-installer-mac.sh <path-to-installer.pkg>. It will overwrite your installer with a signed and notarized version.

Windows

Build the release version of the application with the following command line: yarn dist --win.

At the moment, manual intervention is required to sign Windows releases.

Other notes

Working with the engine

The Pipeline engine is a separate project. It's in the Pipeline App project as a submodule. It gets built and included in the Pipeline App.

To point to a new engine commit:

cd engine
git fetch
git checkout <commit hash>

To clean the engine before building:

cd engine
rm -rf .make/target 
rm -rf .maven-workspace 
rm pipeline2....zip

To build the engine by itself

cd engine
make dist-zip-mac

or dist-zip-win

If the engine build errors are really strange

rm -rf .maven-cache 
rm -rf `~/.m2`

To incorporate the new engine into the Pipeline App

yarn pipeline:refresh

Confirm the engine version in the Pipeline App's "About" dialog, which will show the engine version and commit hash (for snapshots only, I believe).

Special build options

LOG_LEVEL: Set the log level (error | warn | info | verbose | debug | silly ). Default to info for releases and debug for betas. Default to silly for dev.

ENABLE_MISTRAL: Enable the Mistral OCR settings (true | false). Defaults to false for releases and betas, and true for dev. Can override on the command line e.g. ENABLE_MISTRAL=false yarn dev.

Clone this wiki locally