This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Thorium 3 support

Thorium 3 documentation is available as EPUB, different translations are available thru the Thorium documentation catalog. You can Add Documentation catalog to Thorium (OPDS link) or browse English documentation inline within the Readium web reader.

Welcome to the Thorium Reader documentation

  • For digital books, comics, audiobooks and PDF documents, including those protected by the LCP DRM (DRM meaning Digital Rights Management) on Linux, macOS, and Windows 10.
  • Thorium is available in many languages; each update offers new ones thanks to the community. Thorium Reader is also being made accessible for visually impaired and dyslexic people.
  • A libre and gratis app, with no advertising or leakage of private data, and features for heavy readers, library users and students. Made by EDRLab

Accessibility

For everyone means any visual impairment, and even blind people. Compatible with JAWS, NVDA, Narrator, and VoiceOver screen readers. A read-aloud feature with visual highlighting also helps. Colors, text size, spacing, font and layout can be adjusted. When used with mouse or keyboard, keyboard shortcuts can be set up.

You can learn more about the accessibility features of Thorium-Reader. Specific info on key assistive technologies such as screen readers is provided as necessary.

Readium LCP DRM

Thorium Reader supports the DRM Readium LCP, originally designed by the Readium Foundation. The specification of this DRM is public, and it is an ISO technical specification under the reference ISO 23078-2.

LCP has already been adopted by many public libraries, universities and booksellers around the world (A list of distributors supporting LCP is maintained here).

Publishing organizations around the world are encouraged to adopt LCP as a means of protecting digital books from over-sharing, while providing users with a frictionless experience and keeping content properly accessible. Please contact EDRLab if your organization is interested in adopting LCP.

1 - Quick reading

Thorium is a digital book reader, it is also a library where you can store your books and access to online catalogs. Thorium does not require any account or online access to be launched and used.

Select the book you want to read, use the contextual menu (right click), select open with and then select Thorium.

Thorium can also be launched from the application menu or from any shortcut created. This will open the library and will allow you to choose a book or to add one but also to access to catalogs and organize your collection. To read a book just click on it or validate with Enter when selected.

2 - Where to get ebooks?

In the digital age, e-books offer convenience, accessibility, and often, affordability. Whether you’re looking for the latest bestseller, a classic novel, a textbook, or a scholarly article, there’s an e-book source for you. This guide provides you with a variety of options, both free and paid, to find and enjoy e-books. Happy reading!

The landscape of places to find ebooks is highly varied and continuously evolving. Local sources will always be more pertinent to you, this guide is only providing short list of known sources.

Public Libraries:

Many public libraries offer e-book lending services. You can borrow e-books for free using your library card. The availability of services and platforms may vary by country and library system.

Free E-Book Sources:

Project Gutenberg is a library of over 60,000 free e-books. You can choose among free epub books, free kindle books, download them, or read them online. Open OPDS feed for Gutenberg.org titles

Europeana is a digital library funded by the European Union. It provides access to millions of books, music, artworks, and more from European museums, galleries, libraries, and archives.

Open Library: An initiative of the Internet Archive, Open Library is a web page for every book ever published. It has a vision to provide an open, editable library catalog.

Standard Ebooks is a volunteer-driven project that produces new editions of public domain ebooks that are lovingly formatted, open source, free of U.S. copyright restrictions, and free of cost.

Gallica proposes an OPDS Catalogue (in French)

ManyBooks: ManyBooks offers more than 50,000 free e-books in various genres and formats.

Online Retailers:

A large number of online libraries are providing access to ebooks.

Academic and Professional E-Books:

Google Scholar: Google Scholar provides a simple way to broadly search for scholarly literature. From one place, you can search across many disciplines and sources.

JSTOR: JSTOR is a digital library founded in 1995. Originally containing digitized back issues of academic journals, it now also includes books and primary sources. It is available to many universities and institutions across Europe.

Directory of Open Access Books (DOAB): DOAB provides open access to peer-reviewed books from various publishers. It is based in the Netherlands.

3 - Ressources

Minimum system requirements
Platform support is provided by Electron as defined in Electron github repo Readme Each Electron release provides binaries for macOS, Windows, and Linux. macOS (Big Sur and up): Electron provides 64-bit Intel and Apple Silicon / ARM binaries for macOS. Windows (Windows 10 and up): Electron provides ia32 (x86), x64 (amd64), and arm64 binaries for Windows. Windows on ARM support was added in Electron 5.0.8. Support for Windows 7, 8 and 8.
Functions
library functions Icon Function Description Notes Shortcuts Add book Next book Previous book Close (the book information panel) Open book menu (gives access to the Book File, allows to Delete and Export a book) Search Book list view Book grid view Indicates that the action is finished, for example when importing a book Save a copy of the book file. Opens a system window to select the folder where to save the file.
Keyboard shortcuts
Information The Shift key is represented by an empty arrow pointing up on some keyboards: ⇧. The Ctrl key is replaced by Cmd key on Mac keyboards. Ctrl + F10: Main content(`FocusMain`) in reader and library windows, moves the keyboard focus to the "main" area landmark (in the reader view, this is immediately before the frame that displays publication content) Ctrl + t: Toolbar (`FocusToolbar`) in reader and library windows, moves the keyboard focus to the top horizontal toolbar, immediately before the "
Supported publication formats
EPUB (Electronic PUBlication) is an open file format for electronic publications. EPUB is a native semantic format allowing to use numerous standardised languages such as HTML, ARIA, MATHML, SVG and others. The actual version 3 is known to provide the best up to date reading experience. Obsolete EPUB2 files are also readable in Thorium. DAISY Usually produced and distributed by specialized libraries or NGOs, the DAISY format offers a significantly enhanced reading experience for ebooks that are not available in EPUB3.
Glossary
Book information panel (Book Details) Gives information about the digital book. This information is extracted from the file's metadata, its quality and quantity depends on the the attention paid during the production of the file by the publisher. Adapted books These are digital books produced by associations and made available to people with disabilities for reading. Worldwild, this system is governed by The Marrakech Treaty . OPDS Open Publication Distribution System
Frequently asked questions
Why is there no read aloud nor annotations for PDFs? EDRLab considers that EPUB 3 is a far better ebook format than PDF, and therefore prioritises its work on offering a great experience to EPUB users. In Thorium Reader, advanced features like TTS and annotations are consequently available for EPUB first, and we expect that other app developers will get the best from PDF files. It does not mean that advanced features will never be available on PDF in Thorium, simply that our limited budget is used for what we consider best for ebook readers.

3.1 - Minimum system requirements

Platform support is provided by Electron as defined in Electron github repo Readme

Each Electron release provides binaries for macOS, Windows, and Linux.

  • macOS (Big Sur and up): Electron provides 64-bit Intel and Apple Silicon / ARM binaries for macOS.
  • Windows (Windows 10 and up): Electron provides ia32 (x86), x64 (amd64), and arm64 binaries for Windows. Windows on ARM support was added in Electron 5.0.8. Support for Windows 7, 8 and 8.1 was removed in Electron 23, in line with Chromium’s Windows deprecation policy.
  • Linux: The prebuilt binaries of Electron are built on Ubuntu 20.04. They have also been verified to work on:
    • Ubuntu 18.04 and newer
    • Fedora 32 and newer
    • Debian 10 and newer

Thorium 3.0 has memories issues under Linux, as documented in Issue 2519

3.2 - Functions

library functions

IconFunctionDescriptionNotesShortcuts
Icon Icon +Add book
Icon Right arrowNext book
Icon Left arrowPrevious book
Icon xClose (the book information panel)
Icon 3 pointsOpen book menu (gives access to the Book File, allows to Delete and Export a book)
Icon magnifying glassSearch
Icon listBook list view
Icon gridBook grid view
Icon circleIndicates that the action is finished, for example when importing a book
Icon arrow down to a boxSave a copy of the book file.Opens a system window to select the folder where to save the file. The bookmarks are not present in this exported file.
Icon BookmarksBookmarks
Icon Icon Indicates that the book is being added to Thorium. This indication is not currently given to screen reader users.

Reading functions

IconFunctionDescriptionNotesShortcuts
Icon fléche à gaucheReturn to library (closes the book being read)
Icon information Icon InformationOpen book information panelCtrl + i
Icon Display the library Go to the library
Icon magnifying glassSearch in the publicationCtrl + f
Icon SettingsReading settingsCtrl + s
Icon right arrowNext content
Icon GauchePrevious content
Icon Bookmarks Icon Marque pageAdds or removes a bookmarkCtrl + b
Icon navigationOpens or closes the navigation panelGives access to the table of contents, bookmarks, bookmarks and reference paginationCtrl + n
Icon Full screen modeFull screenCtrl + F11

Reading settings

User settings & preferences panel for the display of the publication content. Ctrl + s

IconFunctionDescriptionNotesShortcuts
Text Size IconText: Change the font size
Icon View / Layout : Scroll (text scrolls up and down)
Icon Display / Layout : Paginated
Icon Automatic Alignment
Icon 1 column
Icon 2 columns
IconFunctionDescriptionNotesShortcuts
Icon Edit IconEdit (the name of a Bookmark
no icon (text mention)Table of contentsShift + Ctrl + n
no icon (text mention)Reference pages menuShift + Ctrl + p

Audio playback (Pré recorded orTTS synthetic voice)

IconFunctionDescriptionNotesShortcuts
Icon Activate texte to speechActivate audio functions
Icon pausePauses audio playbackCtrl + 2
Icon playStarts audio playbackCtrl + 2
Icon previousGoes to the next audio portion (depending on the book production)Ctrl + 3
Icon nextGoes to the previous audio portion (depending on the book production)Ctrl + 1
Icon Stops audio playbackCtrl + 4

3.3 - Keyboard shortcuts

Ctrl + F10: Main content(`FocusMain`)
in reader and library windows, moves the keyboard focus to the "main" area landmark (in the reader view, this is immediately before the frame that displays publication content)
Ctrl + t: Toolbar (`FocusToolbar`)
in reader and library windows, moves the keyboard focus to the top horizontal toolbar, immediately before the "skip" link (which itself moves focus to the "main" area landmark)
Ctrl + n: Navigation (`FocusReaderNavigation`)
in reader window, moves the keyboard focus to the navigation panel (table of contents, bookmarks, etc.)
Shift + Ctrl + n: Table Of Content (`FocusReaderNavigationTOC`)
in reader window, moves the keyboard focus to the navigation panel, but more specifically into the table of contents, and if possible at the detected heading / closest to the reading location.
Shift + Ctrl + p: Go to page (`FocusReaderGotoPage`)
in reader window, moves the keyboard focus to the "goto page" section in the navigation panel
Ctrl + s: Reader settings (`FocusReaderSettings`)
in reader window, moves the keyboard focus to the settings panel (user preferences for displaying publication content)
Ctrl + b: Bookmarks (`ToggleBookmark`)
in reader window, toggle bookmark (a notification is produced so that screen readers announce the change)
Ctrl + F11: Fullscreen (`ToggleReaderFullscreen`)
in reader window, toggle fullscreen
Ctrl + i: Book information panel (`OpenReaderInfo`)
in reader window, publication info popup modal dialog (may be used in future Thorium version for similar feature in library window)
Shift + Ctrl + i: where am I (`OpenReaderInfoWhereAmI`)
in reader window, publication info popup modal dialog with direct keyboard focus on section that displays the headings hierarchy trail and other contextual information for the current reading location, such as nearest preceding page break, as well as document index in the reading order (this is the "where am I" feature).
Shift + Ctrl + k: where am I (quick notification supported by Screen readers) (`SpeakReaderInfoWhereAmI`)
in reader window, this is the "where am I" feature, just as above, but only spoken via screen reader TTS thanks to an ARIA live region with assertive speech which interrupts the current narration.
Ctrl + w: Close the book (`CloseReader`)
in reader window, closes the window and returns to the library view.
Ctrl + f: Search a book (`FocusSearch`)
in library window, moves the keyboard focus to the search text input of local bookshelf or OPDS feed
Ctrl + f: search into a book (`FocusSearch`)
in reader window, moves the keyboard focus to the publication-wide search text input
Shift (optional) + F3: previous or next search result (`SearchPrevious` / `SearchNext`)
in reader window, when the publication-wide search text input is open, finds the previous / next match
Shift (optional) + Ctrl + G: previous or next search result (`SearchPreviousAlt` / `SearchNextAlt`)
same as above (alternative keyboard shortcut)
Ctrl + or : Next OPDS page (`NavigatePreviousOPDSPage` / `NavigateNextOPDSPage`)
in library window for OPDS feeds, activates the previous or next pagination links
Ctrl + comma or period: Next OPDS page (`NavigatePreviousOPDSPageAlt / NavigateNextOPDSPageAlt`)
same as above (alternative keyboard shortcut)
Ctrl + Shift + ALT (except on MacOS) + or : Previous or next chapter (`NavigatePreviousChapter` / `NavigateNextChapter`)
in reader window, move to previous or next "chapter" (spine item in the reading order of the publication). Note that the keyboard focus is automatically moved to the "main" area landmark, which is immediately before the frame that displays publication content (just like when following / activating a link in the table of contents).
Ctrl + page down or page up: Previous or next chapter (`NavigatePreviousChapterAlt` / `NavigateNextChapterAlt`)
same as above (alternative keyboard shortcut)
or : Previous or next page (`NavigatePreviousPage` / `NavigateNextPage`)
in reader window, move to previous or next "page" (or scroll unit, if pagination is disabled)
Ctrl + comma or period: Previous or next page (`NavigatePreviousPageAlt` / `NavigateNextPageAlt`)
same as above (alternative keyboard shortcut)
Ctrl + Home or End: Beginning or End of the publication (`NavigateToBegin` / `NavigateToEnd`)
in reader window, goes to the beginning or the end of the publication
Ctrl + backspace with shift modifier for the inverse operation: Previous History & Next History(`NavigatePreviousHistory` / `NavigateNextHistory`):
in reader window, go back or forward in the navigation history: Beginning or End of the publication
Ctrl + 1: Previous audio (`AudioPrevious`)
in reader window, calls the "previous" command for audio (TTS or EPUB3 Media Overlays readaloud, or "rewind" for audiobooks)
Ctrl + 2: Play or pause audio (`AudioPlayPause`)
in reader window, calls the "play" or "pause" toggle commands for audio (TTS or EPUB3 Media Overlays readaloud)
Ctrl + 3: Next audio (`AudioNext`)
in reader window, calls the "next" command for audio (TTS or EPUB3 Media Overlays readaloud, or "forward" for audiobooks)
Ctrl + 4: Stop audio (`AudioStop`)
in reader window, calls the "stop" command for audio (TTS or EPUB3 Media Overlays readaloud, or "pause" for audiobooks)

3.4 - Supported publication formats

EPUB
(Electronic PUBlication) is an open file format for electronic publications. EPUB is a native semantic format allowing to use numerous standardised languages such as HTML, ARIA, MATHML, SVG and others. The actual version 3 is known to provide the best up to date reading experience. Obsolete EPUB2 files are also readable in Thorium.
DAISY
Usually produced and distributed by specialized libraries or NGOs, the DAISY format offers a significantly enhanced reading experience for ebooks that are not available in EPUB3. Thorium supports reading DAISY 3 and 2.02, both in their text only, audio only, and syncronised text and audio.
PDF
despite a well-known lack of flexibility (no reflow option) and accessibility, many ebooks are still available in PDF only, especially in public libraries.
Audiobooks
a standardized format for audiobooks has been designed by the W3C Publishing Working Group in 2020, and EDRLab was part of this WG. Thorium is supporting the packaged (LPF) audiobook format, which will soon be widely used by booksellers, or so we hope.
Visual narratives
EDRLab has designed a standard format for comics, manga, webtoons and other styles of digital works based on sequances of images. Divina is the name of this format. This is still an experimental format, and we hope that publishers will size it in 2021+.

3.5 - Glossary

Book information panel (Book Details)
Gives information about the digital book. This information is extracted from the file's metadata, its quality and quantity depends on the the attention paid during the production of the file by the publisher.
Adapted books
These are digital books produced by associations and made available to people with disabilities for reading. Worldwild, this system is governed by The Marrakech Treaty .
OPDS
Open Publication Distribution System

3.6 - Frequently asked questions

Why is there no read aloud nor annotations for PDFs?
EDRLab considers that EPUB 3 is a far better ebook format than PDF, and therefore prioritises its work on offering a great experience to EPUB users. In Thorium Reader, advanced features like TTS and annotations are consequently available for EPUB first, and we expect that other app developers will get the best from PDF files. It does not mean that advanced features will never be available on PDF in Thorium, simply that our limited budget is used for what we consider best for ebook readers.
I can't select the adequate voice for read aloud function (TTS)
Thorium uses the voices from the computer's operating system, in combination with the language information provided by the book.

Once the required voice is installed, Thorium will choose the voice corresponding to the language of the book.

It may happen that the book has the wrong language. In this case, Thorium allows you to change the voice to one that is present in the system via the Voice menu

How can I transfer the entire book collection from one machine to another?
Having a UI for exporting the whole catalog is not a priority currently.

The publications are stored in a well-known directory.

  • on Windows10: C:\Users\myname\AppData\Roaming\EDRLab.ThoriumReader\publications\
  • on MacOS: /Users/myname/Library/Application Support/EDRLab.ThoriumReader/

In case of a migration from one computer to another or similar usecases, you can copy all ebook files in this repository and open them in the new installation of Thorium.

4 - Want to collaborate?

Translating
Thorium Reader user Interface localisation are provided and maintained thanks to volunteers and contributing organisations. All locales are stored in the sources resources locales folder. To add a translation, you can start from the English “en.json”, rename it as and change the values after the colon punctuation (:). If you are comfortable with github you can open a pull request to submit the file. Otherwise you can just send us the localised file by email and we’ll proceed to the addition.
Your help is precious
You too can help Thorium Reader become the best reading application reading application by becoming a member of EDRLab. Or by making a donation to the EDRLab via the Github sponsorship "piggy-bank", which accepts small monthly donations. Thorium is built by its community. If you want to participate, please contact us ! You can also: Report an error or suggest a change by opening an Issue in our [support tracking tool](https://github.
Stuck?
If you do not find the answer to your problem on this site, you can tell us your problem via our support tracking tool or contact form. Here is the information we need: Operating system and it version Thorium version (it is indicated at the bottom of the library under the title About Thorium)
Contribute!
Thorium and its documentation are developed thanks to the user community. We need help to translate this documentation. To do so, you can contact us. If you are comfortable enough with GitHub and the Markdown format you can propose a new translation via a Pull Request. To do this: clone the repository and create a branch with the name of the language you want to add, make a copy of the content.

4.1 - Translating

Thorium Reader user Interface localisation are provided and maintained thanks to volunteers and contributing organisations.

All locales are stored in the sources resources locales folder.

To add a translation, you can start from the English “en.json”, rename it as and change the values after the colon punctuation (:).

If you are comfortable with github you can open a pull request to submit the file.

Otherwise you can just send us the localised file by email and we’ll proceed to the addition. A list of contributors is maintained on the wiki page Localization (l10n) language translation.

Be aware that we are currently reworking the user interface, so important changes may happen by the first quarter of 2024. We usually alert localisation contributors before any release so they can update the translation file. Also, mentioning that the thorium documentation website can be localised thru similar contribution methodology. ](../900_about)

4.2 - Your help is precious

You too can help Thorium Reader become the best reading application reading application by becoming a member of EDRLab. Or by making a donation to the EDRLab via the Github sponsorship "piggy-bank", which accepts small monthly donations.

Thorium is built by its community. If you want to participate, please contact us !

You can also:

  • Report an error or suggest a change by opening an Issue in our [support tracking tool](https://github.com/edrlab/thorium-reader-doc/issues/new).
  • Participate in the translation of resources.

4.3 - Stuck?

If you do not find the answer to your problem on this site, you can tell us your problem via our support tracking tool or contact form.

Here is the information we need:

  • Operating system and it version
  • Thorium version (it is indicated at the bottom of the library under the title About Thorium)

4.4 - Contribute!

Thorium and its documentation are developed thanks to the user community. We need help to translate this documentation.

To do so, you can contact us.

If you are comfortable enough with GitHub and the Markdown format you can propose a new translation via a Pull Request.

To do this: clone the repository and create a branch with the name of the language you want to add, make a copy of the content.en folder and rename it with two letters corresponding to the language you want to add (for example content.es will contain the Spanish translation). The names of the files must not be changed as they insure correspondence between languages.

The i18n folder contains the translations for the fixed elements of the header and footer. Several languages are already present, if your language is not present, copy paste the .yaml file and rename it with the first two letters of the letters of the language you want to add.

Finally to activate the menu of the language you add, edit the file config.toml and add the language with the following code:

[languages.en]
  languageName = 'English'
  contentDir = 'content.en'
  weight = 1

You must replace .en' with the first two letters of the language you are adding and fill in the name of the language as the languageNamevalue. Theweight` indicates the order of appearance in the language menu.

Example for Spanish :

[languages.es]
  languageName = 'Español'
  contentDir = 'content.es'
  weight = 3

Localized images such as screenshots should be added to the folder statics/images/local-(two letter language).

5 - About this website

This documentation site is designed and maintained by EDRLab as part of the development of the Thorium-Reader application.

The main contributors of this documentation are :

  • Gautier Chomel
  • Georges Kerscher
  • Noelia Ruiz Martínez
  • Prashant Verma

This site is made with the static site generator Hugo and the Hugo Book Theme.

Who has developed this app

Thorium Reader is currently developed by:

  • Daniel Weck, lead developer.
  • Pierre Leroux, developer.
  • Arthur Le Meur, developer

The UX and UI of Thorium 3 was designed by Mylène Boyrie

Several other developers have helped making Thorium what it is today:

  • Simon Le Roux, UI designer.
  • Cyrille Lebeaupin, CEO of noop.fr, senior developer.
  • Jiminy Panoz, creator of Readium CSS.
  • Léo Stéfani, node.js, React developer.
  • Manuel Lagrand, intern, node.js developer.

The project is supervised by Laurent Le Meur, EDRLab CTO.

Who is financing this app

EDRLab is a non-profit organization. Our budget essentially originates from our members. EDRLab started in France, but is now counting 60 members from Europe, North America, South America and Asia.

This project would have not seen the light without:

1- The financial implication of our founding members: Editis, Hachette Livre, Magrigall, Media-Participations, Cercle de la Librarie, Syndicat national de l'Edition. They understand that financing open-standards and open-source is the best way to energize an open and innovative market for the publishing industry.

2- Financial grants from the following French public organizations:

  • CNL (Centre National du livre)
  • Ministère de la Culture

3- Additional grants from EDRLab members interested by the addition of specific features:

  • Fênix Editorial, Brazil
  • Canadian Electronic library, Canada
  • MLOL / Horizons Unlimited, Italy
  • Lyrasis, USA

5.1 - Credits

This documentation site is designed and maintained by EDRLab as part of the development of the Thorium-Reader application.

The main contributors of this documentation are :

  • Gautier Chomel
  • Georges Kerscher
  • Noelia Ruiz Martínez
  • Prashant Verma

This site is made with the static site generator Hugo and the Hugo Book Theme.

Who has developed this app

Thorium Reader is currently developed by:

  • Daniel Weck, lead developer.
  • Pierre Leroux, developer.
  • Arthur Le Meur, developer

The UX and UI of Thorium 3 was designed by Mylène Boyrie

Several other developers have helped making Thorium what it is today:

  • Simon Le Roux, UI designer.
  • Cyrille Lebeaupin, CEO of noop.fr, senior developer.
  • Jiminy Panoz, creator of Readium CSS.
  • Léo Stéfani, node.js, React developer.
  • Manuel Lagrand, intern, node.js developer.

The project is supervised by Laurent Le Meur, EDRLab CTO.

Who is financing this app

EDRLab is a non-profit organization. Our budget essentially originates from our members. EDRLab started in France, but is now counting 60 members from Europe, North America, South America and Asia.

This project would have not seen the light without:

1- The financial implication of our founding members: Editis, Hachette Livre, Magrigall, Media-Participations, Cercle de la Librarie, Syndicat national de l'Edition. They understand that financing open-standards and open-source is the best way to energize an open and innovative market for the publishing industry.

2- Financial grants from the following French public organizations:

  • CNL (Centre National du livre)
  • Ministère de la Culture

3- Additional grants from EDRLab members interested by the addition of specific features:

  • Fênix Editorial, Brazil
  • Canadian Electronic library, Canada
  • MLOL / Horizons Unlimited, Italy
  • Lyrasis, USA

5.2 - Licence

Licensing

Copyright 2019 European Digital Reading Lab. All rights reserved. Licensed to the Readium Foundation under one or more contributor license agreements.

The Thorium-reader application is open-source, released under a BSD 3 license. It is based on the open-source Readium Desktop toolkit.

The content of this web site is free and may be reused under the terms of the BSD License.

This static site is generated by Hugo and the Hugo Book theme. Source code is public.