All projects
Museums & public sector In development

Scriptorium — a builder for a gift-edition book

A web editor in which the team lays out the gift edition of Clavijo's Diary: ornament components, collaborative editing, PDF and page approval

My role
Author: book typesetting and the editor
Period
2026 — now
Client
Centre of Islamic Civilization in Uzbekistan

The Centre of Islamic Civilization is preparing a gift edition of Ruy González de Clavijo's "Diary of a Journey to Samarkand to the Court of Amir Temur": 240×330 mm, 22 chapters and an epilogue, designed in the style of a 15th-century European illuminated manuscript. I own the technical side of the book. First I built the layout with Python scripts, and over 30 builds worked out the Monomakh typeface, frames, paper and facsimiles. In every build the text was checked against the source word for word through the PDF text layer.

Only a developer can change a book built by scripts, but designers and editors need to change it themselves. So I am writing Scriptorium — a web editor where a page is assembled from ready-made components: paper, frames, headpieces, initials, miniatures, facsimiles and text. Several people work on the book at once, every change is saved on the server with full history, and pages are approved through the team's Telegram group.

What I did

  • A React 19 editor: page layers placed to the millimetre, a grid, snapping, spread editing, text wrapping around illustrations
  • Real-time collaboration: WebSocket rooms, field-level merging, conflicts that never overwrite a colleague's edits
  • The PDF is built in the browser: embedded fonts and selectable Unicode text over the artwork
  • A library of 449 components, including 132 initials in four designs; PSD and TIFF uploads up to 5 GB with CMYK converted to sRGB
  • Book history: immutable version snapshots, a hash-chained audit log, personal accounts
  • An OpenAPI API for AI assistants: acknowledged sync, protection against stale writes, keys cannot delete anything
  • Approval through Telegram: a bot archives the group chat to SQLite and encrypted S3, and page decisions link to the messages behind them
  • 72 tests and 13 Playwright browser scenarios; deployed as a ready image from GHCR with rollback on a failed healthcheck

Stack

  • Python
  • Node.js
  • Docker
  • MinIO / S3
  • GitHub Actions
  • GHCR / Docker Registry
  • JavaScript
  • React
  • Vite
  • Playwright

More in this category

Museums & public sector In production

WOSCU — society.uz & woscu.org

Portal on the cultural legacy of Uzbekistan: manuscripts, epigraphy, monuments, editions, lectures and films

Backend developer · DevOps 2022 — now

  • Python
  • Django
  • Django REST Framework
  • Celery
  • PostgreSQL
  • Docker
  • Nginx