Bloom Alternative (Markdown + CSS)

First off, I am a big fan of what you are doing.

I wanted to write about how I ended up going in a different direction than Bloom. Perhaps there’s something here that might spark new features for Bloom. Alternately, I don’t know if this is an idea that anyone thinks I should develop further on my own.

I started off using Bloom, but I began to realize that my use-case was somewhat different from what Bloom was intended for.


  • We want to make sets of books (50-100 or more), all with basically the same styling. In Bloom, we were adding each page of each book over and over. I’d like to be able to apply a single style to multiple books, all at once.
  • Some of our book content is also used in other places outside of Bloom (e.g. Open Bible Stories). Since these don’t sync, we have to make sure to update the text of the Bloom books whenever we make changes somewhere else.
  • We want to use some stories in multiple formats. For example, we have folktales that we would like to publish as individual books. We would also like to create a single volume folktale collection with all of the stories (and many fewer pictures). Same for the Open Bible Stories.

I struggled to find an easy way to get Bloom to do those things. (Which is fine; that’s not what it is for.)

Instead, here is the solution I came up with:

  • Markdown - Stories are saved as .txt with markdown styling. Any change to a story is only made in this single place, so nothing gets out of sync.
  • CSS - Page styling is written as CSS paged media. Each stylesheet specifies the appearance of front/back matter and for any number of pages in between. Stylesheets can then be applied to any number of books.
  • Paged.js - The CSS is combined with the story HTML using the Paged.js polyfill, which creates a book in a web browser. The books can then be saved as PDF.

As I said, I don’t have any specific goal of mentioning this, except seeking feedback for whether this is something that could be developed further.

This little solution is something that works well for our language, but it would be much more difficult to expand it to work around the world – something that Bloom developers have put a lot of work into.

It certainly could make sense for Bloom to have some kind of option to store style definitions in a place shared by the whole collection. Feel free to make a feature request others can vote on!

If you’re already writing code that generates HTML from Markdown and CSS, you may want to consider actually generating Bloom Books. A Bloom book is simply an HTML file with certain constraints, which are fairly well documented. It would probably be a little more difficult that simply generating plain HTML that you can make a PDF from; but then, having the material as Bloom books opens up many other options for publishing and sharing.

Bloom does have a capability (very incompletely developed at present) to combine all the books in a collection into a single volume for publishing; but as yet not with any mechanism for omitting pictures in the process.

@mehmboke I think all that sounds great. Thanks for sharing it with the community.