Skip to content

Development

github-actions[bot] edited this page Jul 27, 2026 · 2 revisions

SaiLoR — Developer Documentation

SaiLoR is a tool for reviewers conducting Systematic Literature Reviews (SLR) — the letters are in the name: SaiLoR. A project.json file holds the annotation schema (a nested, cardinality-controlled taxonomy) and the papers' metadata; a sibling annotations/ folder holds the actual annotation data, one file per paper per reviewer (plus a consolidated file), so two reviewers working on different papers rarely collide in git. The app renders each paper's PDF beside a form generated from the schema, and writes annotations back into that split layout. See Data Model for the exact shape and the automatic migration from the old single-file format.

SaiLoR is Electron-desktop-only. The codebase used to also ship a static web SPA and a Docker self-hosting deployment; both are discontinued — the web build now shows a "use the desktop app" notice at runtime instead of any project-opening UI. The PlatformAdapter seam that used to absorb the difference between the Electron and browser runtimes still exists, but the non-Electron implementation (UnsupportedAdapter) now just refuses every action; see Architecture's Platform Adapter section for why the seam is still there.

This wiki is the developer documentation. If you are here to use SaiLoR — installing a release, authoring a project file, annotating a paper — start with the README instead.

Contents

Page What it covers
Quickstart What SaiLoR is, the tech stack, the commands you actually need, and the repository layout. Start here.
Architecture The PlatformAdapter seam, the Zustand stores and undo/redo, the component tree, the git integration, the Electron main process, and how the build is wired.
Data Model The project file format, the in-memory types, and the load → normalize → edit → prune → serialize lifecycle that keeps a hand-edited JSON safe.
Operations Developing, building, testing, CI, releasing the desktop installers, deployment (static / Docker / Electron), and how these wiki pages are kept in sync.

How this wiki is maintained

Do not treat this wiki as the original. These pages live in openwiki/ in the main repository and are mirrored here by a GitHub Action; the folder is the source of truth, and publishing replaces the wiki rather than merging into it.

Editing a page here is still fine: a second Action imports wiki edits back into openwiki/ and commits them to main, so the two do not drift. See Operations → Wiki sync for the mechanics — including why the two Actions cannot trigger each other in a loop.

Clone this wiki locally