Nocturea
← Work

MontLivre

Client

In-house

Scope

Desktop reading app

Year

2026

Duration

In-house, ongoing

MontLivre 2.3.5 — Bibliothèque
MontLivre — MontLivre 2.3.5 — Bibliothèque

The context

Version 1 was 6,926 lines of Electron carrying its own layout engine and a 122 MB installer. Version 2 hands reading to foliate-js and the shell to Tauri 2, which rides the WebView2 already on every Windows machine: 3,626 lines, a 4.16 MB installer, around 30 MB of memory at rest. It reads EPUB, MOBI, AZW3, FB2 and CBZ, works offline, asks for no account and sends nothing anywhere.

MontLivre — generated covers, hashed from the title
generated covers, hashed from the title
MontLivre — highlight in ochre, on paper
highlight in ochre, on paper

The reasoning

01

Three rules hold the whole interface

No rounded corners, no blurred shadows, one bright colour on screen at a time. Shadows are solid offsets, rules are hairlines, and the palette — Yolk, Ochre, Violet, Moss on Coal, Ash and Cloud — never runs two accents at once. The result is a typographic poster you can operate.

02

The reading page gets none of it

Every decoration stops at the chrome. The page itself is a serif on paper: no accent, no shadow, no shape. The interface is allowed a personality precisely because the book is not asked to share it.

03

Covers are generated, not defaulted

A book with no cover does not get a grey rectangle. Colour, shape and tilt come from a hash of the title, so the poster is stable across launches and no two neighbours look alike — the shelf reads as a shelf rather than a spreadsheet.

04

Resume that survives a change of type size

Position is stored as a CFI, not a scroll offset. Change the text size, the margins or the number of pages, and the book still opens exactly where it was left.

05

No bundler, no Node

The front end is HTML, CSS and native ES modules served as they are written; the only toolchain is Rust. Nothing between the source and the running app means nothing to debug between them either.

06

The front end holds no keys

It has no filesystem permission at all. It passes identifiers, and store.rs turns them into paths under the application data folder — imported books are copied there rather than referenced in place.

What shipped

01 Visual system: Archivo display, Literata for reading, four accents
02 Y2K shape set and square-cut icon set, inline SVG
03 Four screens: library, reader, annotations, settings
04 Generated cover system, hashed from the title
05 Tauri 2 shell, signed in-app updates, 4.16 MB installer
Next project

CNRS//FLUX

Open