The road to Kells is paved with good intentions.
Way back in the dark times of Covid, I set up a little digital library for my absent students. It was simple as could be: a link to a shared Google Drive, populated with .epub files. Readers could quickly scroll through, find a book, and download straight to their device. It wasnβt perfect, but it did serve its purpose.
Now, with the return to distance learning, it seemed as good a time as any to build a more tailored solution.

Say hello to books.brug.es.
New and improvedπ
Digital Library 2.0 needed two features:
- A search function
- The ability to read the book straight away, in the browser
Even the slightest friction is enough to put off the reluctant reader, so a point-and-shoot solution was essential, without the rigmarole of downloading an .epub, finding a suitable reader app, setting the reader etc.
There are lots of projects out there for hosting oneβs digital book collection, though all a little heavy for my liking. Iβve no need to track reading progress, register users, accept content submissions or the like. I even went so far as coding up a basic gallery of books - HTMX on the front-end, Flask on the back-end - before eventually stumbling on the perfect solution.
Checking out, tidying upπ
BookBrowser is, sadly, abandoned, but by all my metrics itβs feature complete. Even better, it runs as a single Go binary, watching a flat directory of .epub files and serving up a super-simple library page, as well as a perfectly adequate in-browser eReader.
I forked it, splashed some Mr. Bruges branding, then tweaked a few options to streamline the experience. The end result is the Platonic ideal of the Digital Library.
It quietly ticks over in a container on my little server, accessible via a Cloudflare tunnel, and accessible to all at books.brug.es.
And by week four of our latest stint of remote learning, it has plenty of satisified customers.