Mugo Web main content.

The 49th Shelf

Mugo partner since 2011

The 49th Shelf hosts about 100,000 books, and data about their contributors and publishers, as well as rich metadata like cover images, reviews, target audience, etc.

The 49th Shelf has several objectives. Primarily, the site attempts to list every in-print Canadian title; to facilitate it's discovery and to support consumer's ability to decide to buy a title (in print or ebook formats). As well, The 49th Shelf serves as a concrete use for ONIX bibliographic meta data (see http://editeur.org/) and thus aids the Canadian publishing supply chain to advance its use of good metadata.

Currently the site houses data for some 56,000 titles from 26,000 contributors and 100s of 1000s of supporting content pieces. The site is in constant development, rolling out new features and incrementally improving on a monthly basis.

The 49th Shelf aims to provide access to every Canadian book; to provide a platform for discovering, learning about, discussing and promoting, buying, and finding books. Currently the site hosts about 50,000 books, and information about their contributors and publishers, as well as lots of rich metadata like cover images, reviews, target audience and so on.

"We have worked closely with Mugo Web for more than three years now to conceptualize, build, operate, and expand 49th Shelf, a very ambitious web platform for Canadian books.
"From our earliest discussions it was clear that we would not have a typical client-vendor relationship with Mugo. They distinguished themselves right away not only as a team with considerable development expertise but also as partners in our project. They helped us develop our ideas for a unique web property for Canadian books, and to resolve some of the significant challenges we would face in importing and handling the large volumes of data that the project required.
"Mugo has consistently delivered beyond our already-high expectations for the project. More to the point, the Mugo team has always added considerable value in improving not only the back-end systems and server-side performance for the site but also in strengthening the user experience and usability for what has become a fairly complex site with hundreds of thousands of content objects and an expanding range of user groups.
"When we began this project, it was anything but clear that it could be successfully executed. Today, 49th Shelf presents the largest, public-facing collection of Canadian books ever assembled and traffic has scaled sharply over our just-concluded first full year of operations. The site has been widely praised by industry stakeholders and readers alike as an important new community hub and resource, and the development of the platform has resulted in some valuable new IP that has broader application in the promotion of books online and the enabling of reader communities in Canada and elsewhere.
"Mugo has played a key part in all of this and needless to say we recommend them highly as an expert team with a remarkably strong commitment to building great projects that work."
- Craig Riggs, Project Lead, 49th Shelf

Background

Mugo Web has been the development team for The 49th Shelf since conception and we consider this one of our proudest moments.

In addition to the lead objectives, The 49th Shelf is building an online community around Canadian books and providing specialized tools to key audiences including librarians and movie producers.

Mugo has a long involvement in helping the Canadian book industry around ONIX data dating back to 2003 and the release of PExOD in conjunction with with Simon Fraser University's Canadian Centre for Studies in Publishing.

The 49th Shelf is a highly interactive community around Canadian books that helps connect readers with books and other readers, while having fun doing so!  If you are a young reader, an occasional reader, a bookworm, a librarian, a teacher, a chef, or a playwright... if you read hardcovers while curled up by the fireplace or on your e-reader while on public transit... if you haven't read since you were in school or if you host a monthly book club... The 49th Shelf can help you get the most out of Canadian books.

Book, books, and more books

The 49th Shelf is continuously updated with new books, featured books, book lists, and ongoing commentary through a blog. eBooks are also featured.

The book search enables books to be found by title, author, category, and publisher. Recommended reading lists are regularly added by the site editors and by the community.

On each book page is detailed book information, enhanced by excerpts, editorial reviews, community reviews, author biographies, and more. Purchase, share, and bookmark links are provided.

The web site is heavily social, enabling users to shape the site day by day. Books can be rated, tagged, reviewed, grouped into lists, and pinned on a map.  The activity log widget shows every public user activity. There is also tight Facebook and Twitter integration.

Canadian book map

Read Local is the 49th Shelf book map, which displays an interactive map of Canada. On the map are pins representing locations that have significance to various Canadian books. The pins are completely crowd-sourced; users can add, annotate, and categorize pins, which makes the map an evolving landscape of literary Canada. Users can share a link to the map, links to individual map points, and links to themes on Twitter and Facebook.

More fun

Periodically, The 49th Shelf hosts giveaways of books and supporting items, such as an e-reader.

Another fun element is the cover shuffle game, which gives players 6 minutes to name as many book titles as possible, based on their cover images.  Anybody can play!

Web development

The 49th Shelf runs on the Enterprise Content Management System eZ Publish. eZ Publish's robust content model enables all book and supporting data to be stored and displayed. It also provides a flexible framework for working with the data in various ways, as well as connecting to external services for data exchange.

As eZ Publish experts, Mugo Web's web development for The 49th Shelf has included:

  • Customized data import and update scripts to consolidate large sets external book data feeds of different quality
  • Scripts to manage record updates in bulk, by section, or individually; and to update entire sets of information, or specific pieces of information such as purchase links
  • Content maintenance scripts that dynamically adjust behavior depending on server load
  • Content modeling for categorization, site structure, and content attributes
  • Enhanced object relations to store not only the internal links but also information about the relationships themselves (such as contributor type)
  • Workflows for contests and all user activity around account creation and management, book interactivity, newsletter signup, and special features (such as mapping, games)
  • Custom content management reports and interfaces
  • Custom front-end JavaScript coding to achieve the interactive client-side elements as well as the server-side Ajax web service listeners
  • Templating for dynamic landing pages, extended search functionality (using the Solr-based eZ Find extension), search engine optimization fields, sitemaps, book pages, and more
  • Social media integration
  • Server setup, caching settings, MySQL database optimization, server status reports

Case study

Press

Read more

Read more

image of the world, with lines representing time zones. The bottom right has a clock, the top right has the Mugo logo.

August 2026 Mugo Digest

This year, two Canadian provinces, BC and Alberta, moved to make Daylight Saving Time permanent. This created an issue with event registrations for some of our library clients, an interesting technical solution, and the potential for future implications down the road as other provinces (and the US) potentially join the trend. This and more in August’s Mugo Digest!

LEARN MORE
a stylized map with a location marker, followed by dots and a verified check, above a GeoJSON rendering of a geographic area

Verifying addresses within a set geographic region served by a library

Our library client wanted to allow patrons to apply for library cards via their website. The client had existing restrictions on access to cards. Local residents receive free cards while visitors and non-residents pay a fee. Individual patrons should not have access to more than one library card.  Therefore the system had to automatically validate and standardize addresses to support duplicate detection, determine a geographical position for each address, and finally classify addresses as local or non-local. We supported this using GeoJSON and integrating with the library's ILS. We tested this functionality a number of ways, including an exploration into the mathematic principles behind the solution.

LEARN MORE
Symfony Mailer: File Transport. Write emails to disk instead of sending them. Image of a window of code, beside a computer with a test email.

Creating a file mail transport for Symfony

When developing a Symfony application, you often need to inspect the emails your application generates without actually sending them. While tools like Mailpit or Mailtrap are excellent choices, sometimes you want something even simpler: write every email to disk as a standard .eml file.

This approach is particularly useful for:

  • Local development
  • CI pipelines
  • Automated testing
  • Staging environments where no real emails should leave the application
  • Debugging complex email templates

In this article, we'll build a custom Symfony Mailer transport that stores every outgoing email as an RFC 822 compatible .eml file.

LEARN MORE
two views of rich text editors one with full formatting options, one with limited. A stick figure in between the two weighs different options.

Limited RichText formatting per field in the Ibexa DXP admin UI

When creating content in Ibexa using the RichText Editor, it is easy to realize that not every RichText field needs the same toolbar. A ”Body” field may need headings, embeds, and tables. A ”Short Description” or ”Caption” field usually needs bold, italic, and little else. When every field gets the full CKEditor toolbar, it might make editors waste time or even make them think they can add markup your templates were never built for.

Legacy eZ Publish solved this. Ibexa DXP does not, at least out of the box. In this blog post we describe how we added this feature to Ibexa 4.

LEARN MORE
Mugo logo with illustrated balloons with the number 18 in front of confettii and banners.

July 2026 Mugo Digest

Welcome to Mugo Web's new monthly digest, a quick way to catch up with some of the things we've been working on. In July we marked a momentous anniversary, launched a brand new site for a client, and offered free educational opportunities. 

LEARN MORE

Migrating from eZ Flow to Ibexa DXP: A smooth path with Mugo Page

A new update to the Mugo Page Bundle now allows for a straightforward migration from eZ Flow to Ibexa DXP. We’ve also added functionality to this versatile tool with a new rich text block type. 

LEARN MORE
a stylized calendar grid with stars surrounding it

Improvements to the Mugo Library events calendar system

The latest improvements to the Mugo Library platform focus on enhanced usability for library staff. Since these back-end improvements aren’t as noticeable as the front-end user experience, we wanted to take the opportunity to give a peek “under the hood”, and showcase what makes the Mugo Library event and calendar solution ideal for public libraries. Our new enhancements include expanded reporting, a new viewing interface, back-end patron search, and integration with the meeting room module.

LEARN MORE