Skip to content

Building from source

K M Rejowan Ahmmed edited this page Sep 28, 2026 · 2 revisions

Building from source

git clone https://github.com/ahmmedrejowan/tessera.git
cd tessera
npm install

Node 24 or newer. Nothing else is needed: Kopia, rclone and Syncthing are only fetched by the app if you turn on backups or sync.

Running it

npm run dev          # the app, with the window reloading as you save

TESSERA_USER_DATA=/tmp/somewhere npm run dev runs it against a throwaway data folder, which is the easy way to try first-run behaviour without touching your own library.

Checking it

npm run typecheck    # both TypeScript projects
npm test             # the unit tests
npm run build        # bundle main, preload and renderer
npm run test:e2e     # drive the built app: needs npm run build first

The end to end suite starts the real app with a throwaway data folder, one test at a time. Run one file with node test/e2e/run.mjs agents.

Packaging

npm run package      # an unpacked app in release/, for a quick look
npm run dist         # installers for this computer

npm run dist builds for the system it runs on, and only that one: none of these can be made from another. What each needs and leaves in release/:

On Also needs You get
macOS Xcode command line tools (xcode-select --install) .dmg and .zip, for Apple Silicon and Intel
Windows nothing further: there is no native code to compile an installer and a portable .zip, x64 and Arm
Linux rpm as well, if you want the .rpm on a Debian-like system .AppImage, .deb and .rpm

A build from a clean clone is the same build the release workflow publishes. That is what the SHA256SUMS files and gh attestation verify are for: you can check it rather than take it on trust.

macOS builds are signed ad hoc (scripts/adhoc-sign.cjs) unless certificates are present. The release workflow signs and notarises when the repository has the secrets for it, and otherwise produces the same unsigned builds anyone can make.

The repository

  • src/ the app. See Architecture.
  • test/ unit tests, and test/e2e/ the ones that drive the app.
  • build/ icons, entitlements, the electron-builder config.
  • scripts/ icon generation, ad-hoc signing, screenshots, release notes.
  • .github/workflows/ CI on three systems, and the release builds.

Clone this wiki locally