---
title: "Desktop and web digitisation tools"
url: "https://edoardo.anteprime.edoardogabrielli.com/en/projects/digitisation-tools"
lang: "en"
updated: "2026-10-31"
---

# Desktop and web digitisation tools

> Digitisation applications for libraries and archives: MAG metadata editor, scan cropping, and a Tauri desktop app with a central server for updates and bug reports.

## Desktop and web digitisation tools

Desktop and web applications for people digitising library and archive collections.

## The problem

An organisation digitising library and archive collections works with heavy files, TIFF and DNG scans, and with metadata to fill in and validate. Doing everything by hand, one file at a time, slows the work down and leaves room for mistakes.

They needed tools operators could use on their own computer, even with very large files.

![Stock image for the project “Desktop and web digitisation tools”: it does not show the project.](https://edoardo.anteprime.edoardogabrielli.com/media/originals/2026/10/18383701bff74a41bb440eded5aea209/scanner-libri.jpg)

## What I built

### 1. MAG metadata editor and validator

You fill in the metadata and the application checks they comply with the standard.

### 2. Cropping and straightening

A tool that crops and straightens TIFF and DNG scans, with image processing.

### 3. Desktop shell with Tauri

A desktop application with a Tauri (Rust) shell and a Vue interface. The shell starts a FastAPI backend locally and keeps watch over it.

### 4. Electron utility

An Electron utility to process images on the computer.

### 5. The operator reviews everything

Every automatic result passes in front of a person before being accepted.

## The desktop application and the central server

The MAG editor and the other modules run on the operator's computer, inside a Tauri application. A central server, which I call the hub, holds licences and versions, distributes updates and collects reports of what happens on each installation. The working files stay on the operator's computer.

## How it is built

### 1. Desktop application

The Tauri shell, written in Rust, opens the window with the Vue interface and starts the Python backend (FastAPI, packaged with PyInstaller) locally. Each module has its own interface and its own backend.

### 2. Central hub

A FastAPI application in Docker, behind nginx, with an administration panel in Vue. It manages users, licences, modules and versions.

### 3. Licences

The licence is a token signed with RS256. The application checks it with the public key alone, so it works without a network, and the licence decides which modules the user sees.

### 4. Modules and versions

Modules are downloaded from the hub and versioned independently: a single module can be fixed without releasing the whole application again. The hub imports new versions from GitHub releases.

### 5. Updates

The application asks the hub for a signed manifest and checks its signature against the public key built into it. It then downloads the installer, runs it and restarts. Manifest and files are available only with a valid licence.

## What the hub sees from the field

### 1. Work events

Each installation sends the hub, at regular intervals, the events of the work being done. In the panel the administrator filters them by user, type and period and sees them on a daily timeline.

### 2. Errors and crashes

When the program closes badly, the next start reports the previous crash: a panic in the Rust shell, an unclean exit, or the death of the backend. Interface errors and backend errors carry the same run identifier, so they are one incident.

### 3. Operator reports

The operator can describe what is wrong, with a screenshot attached, and leave a rating from one to five stars. The administrator closes reports from the panel. The periodic clean-up never deletes reports.

### 4. Full logs

When needed, the application uploads its own log files to the hub as a compressed archive, which the administrator can download.

### 5. Live view

An authorised developer can ask to watch an operator's window live, but only that window and only for a limited time. The feature is off unless the server enables it explicitly.

### My role

Developer at ETT. I worked on interface, backend and image processing, as part of Scripta, ETT's digitisation line. The client is not named.

### Technologies

Python · FastAPI · Vue 3 · Tauri (Rust) · Electron · OpenCV · Docker · nginx

> This is where I learned Tauri and Electron, and when to use one or the other. With heavy files the main work is keeping the interface responsive and giving the operator a reliable preview of what they are about to accept.

— What I learned

[Scripta on the ETT website](https://ettsolutions.com/scripta/)

## A collection to digitise

Tell me what material you have and which tools you use today.

[Get in touch](https://edoardo.anteprime.edoardogabrielli.com/en/contact)

[← All projects](https://edoardo.anteprime.edoardogabrielli.com/en/projects)

Stock photo: book scanning, by Skot, licence CC BY-SA 4.0 (Wikimedia Commons). It does not show the project.