BookTeller.com - Animated Children's Books

BookTeller.com is a subscription-based online library for animated and narrated children's books, available in both English and Chinese. Currently, there are over 200 books available for subscribers and more are being added. Its goals are to help parents and educators teach children how to read and to get them reading more often by giving them books that are both engaging and fun.

Besides being an online library, it is also a platform for authors and publishers who wish to transform their work into animated books and to monetize them. For that, we have a revenue sharing program and a team of award-winning animators to help out with the animation.

The consumer-facing website is used for, among other things, showcasing what books are in the library and to handle registrations/payments. The books are accessed via a client reader based on Adobe's AIR platform, which must be downloaded and installed.

The following is our experience in building out the website using Drupal. I hope it is useful as another example of what's possible.

Requirements & Challenges

Since BookTeller is a subscription-based online library, it has three major requirements: a method to store and display book data, a payment system, and a way for subscribers to access the books.

The interface for the people doing the data entry must be easy to use so that they can do their job quickly and efficiently. The payment system, at the minimum, needs to be able to keep track of registered users and their subscription status. And as for why we have client reader instead of a browser-based one, the reasons are simple. The Adobe AIR reader allows the books to be downloaded and read offline. This is ideal for situations when there are no internet connectivity, either by choice or not. It also allows the content creators to control how their work is accessed. A browser-based reader, while nice to have, does not meet all those requirements.

BookTeller - Reader

As with any project, time and money were things we could always have more of.

Why Choose Drupal?

To hit the ground running, we needed a framework in a LAMP (linux, apache, mysql, PHP) environment with as much of the requirements built-in as possible. We compared Drupal, Joomla, and a couple other frameworks, but finally decided on Drupal 6 for a several reasons.

They are:

  1. The flexible and modular based structure allows us to use what's already out there and just build out the pieces that are missing.
  2. The extensible content type oriented system abstracts everything into a node, allowing easy organization and display of data.
  3. The theming system allows us to quickly build out the look and feel of the site.
  4. SEO friendly. There are numerous modules to help with better ranking in search engines, such as Clean Urls, XML Sitemap, AddToAny, and Tell A Friend. Why spend money on marketing to get the same results?
  5. A very good role-based access system allows us to control who sees what on the site.
  6. News aggregation tools already included.
  7. Large and vibrant community to answer questions should any arise.

Design

Since BookTeller is a place for children's books, it has to appeal, first and foremost, to children. We decided on bright, pastel colors and a tree theme for the look and feel of the site. Cute animal children were added to the subpages to make them more welcoming -- like there's a living world within the website.

We used Raincity Studios' basic theme as the starting point because its simple layout is perfect for all the modifications we would eventually make to it.

The site has three main page types: homepage, book index, and book details.

The purpose of the homepage is used to quickly show what the site is about so a welcome message is included in the header next to the logo and flash demos of various animated children's books are displayed in the middle of homepage. Keeping with the goal of designing for children, the demos play automatically with sound to attract their attention.

The book index is equivalent to the taxonomy page. The site has books in English and Chinese so we have a separate index for those. Within the two index pages, books can be filtered by age group, subject, popularity, date added, or title. The results can be laid out in grid or list format.

BookTeller - Book Index

The book details page is just a heavily modified node. It contains data like a book's author(s), publisher, description, images, etc. All this is made possible with a custom module we called Paid Picturebook.

BookTeller - Book Index

Custom Modules

While there were tons of modules out there, we still had to make a couple of customs ones because we couldn't find any that solve our particular needs. I'll explain the important ones and just list the rest.

We needed a way to create book titles and enter in data about the books such as author(s), etc and as well as any images like cover shots. We made a module called Paid Picturebook to handle that. As stated above, it's just a node with lots of custom fields added.

While Ubercart is available, we ultimately rolled our own payment system based on Paypal's API because we wanted simplicity and Ubercart was a bit too complicated. We only need the payment system to handle three types of transactions: payments, discounts, and refunds. We made the Bookteller Payment Packages, Bookteller Coupon system, and Saving code modules to handle those respective transactions.

Since BookTeller is also a platform for authors and publishers, we need a way to track whether or not their books are read by subscribers and, from that, figure out the revenue split based on a pre-defined formula. This is where the Publisher Manager module comes in.

Xml Cache is used to cache all our picture book meta data into a xml file so our client reader, built upon Adobe's AIR platform, can update its local copy periodically.

The Child Accounts module allows different accounts to be tied to one main account, like when parents make separate accounts for each of their children or teachers make separate accounts for each of their students.

To exchange data between the website and the client reader, we used a module called Serve Reader.

Here are all the custom modules we created and used:

  • Bookteller Coupon system
  • BookTeller Free Trial
  • Bookteller Payment Packages
  • Bookteller Stats
  • Change Mail Header
  • Child Accounts
  • Dedicated Password Changing
  • Extend User info
  • Paid Picture Book
  • Publisher Manager
  • Reader's Library
  • Savings code
  • Serve Reader
  • Xml Cache

Third-Party Modules

Although the core features of the website were put together by custom modules, we did use a bunch of existing modules from the Drupal community to do miscellaneous things. Here they are in no specific order:

Future

After building out the web framework and working out the kinks in the client reader software, the main focus for the near future is to build a community around kids, parents, educators, and publishers. Some of the social networking modules we plan to use are Advance Forum, User Relationships, PrivateMsg, Messaging, Notifications, Twitter, and User Points. Some of them have already been installed on the site, but not enabled yet.

In the immediate future, we're looking into adding incremental improvements - a company blog to announce new features, new books, and communicate with our users; subtle redesigns to bring out more content from the site; and an affiliate program to allow others to sell our products. Because we didn't use Ubercart for our payment system, we'll probably have to skip out on Ubercart Affiliate, and use a third-party affiliate program that works with PayPal's API.

Where we go from there will depend a lot on how users use the product and what kind of feedback we get from them.

Comments

PC Pro Schools’s picture

Wow, I'm an adult and evil I'm drawn to the site. The design is really fantastic, I love the colorful setup ;D
Good job!

ezeedub’s picture

:) I love the design too. Very attractive!

fenstrat’s picture

And yes, wonderful use of colours in the design.

mihua’s picture

mark

jinlong’s picture

pretty drupal case,in particular, good design. With Chinese content, is it the Chinese company?

dragonsd’s picture

Yes, it's a Chinese/Taiwanese company that's starting to make a US presence. That's why I was hired :) We (me another editor) redid all of the Chinglish book descriptions.

dalin’s picture

We needed a way to create book titles and enter in data about the books such as author(s), etc and as well as any images like cover shots. We made a module called Paid Picturebook to handle that. As stated above, it's just a node with lots of custom fields added.

Sounds like a few basic CCK fields would do the trick. Plus Imagecache to generate different sized thumbnails. One of the big advantage of CCK fields over a custom module is that Views integration is built right in. But apparently you aren't using Views either. I recommend it highly, there's good reason that Views and CCK are the #1 and #2 most used modules.

Also it seems odd that you aren't using Drupal's language system. A Chinese user would still need to know English to navigate the books.

________________________
Dave Hansen-Lange
Director of Technical Strategy, FourKitchens.com

dragonsd’s picture

Yeah, that's what I originally thought too. I didn't build the site, I just help them put together the write-up. I did take a peek at the code and the modules though.

I think at the end, it's probably for performance reasons. Views, although a great module, is not the most efficient. On one of my drupal sites, I end up either rewriting Views queries or modifying the queries in the Views module directly. I was using Views for Drupal 5.x, so I'm not sure if the performance has improved on Drupal 6.x.

Still thanks for the suggestions, we'll definitely take look into the CCK, Views, and Imagecache combo.

It's an interesting point regarding the translation. There's a separate site for the Chinese version hosted in Taiwan/Shanghai. The U.S. version is hosted in the U.S. and is targeted towards the U.S. audience, so ... Although you're right, it would still be useful for Chinese people in the U.S. to be able to navigate and use the site.

chansion.vc’s picture

Clean and nice

Sree’s picture

Wonderful site!

-- Sree --
IRC Nick: sreeveturi

themegarden.org’s picture

Great job done, and really nice looking and well designed site.
Congratulations.

Ahqar’s picture

Nice website.

Do you think you will be contributing any of the custom modules back to the community? Child Accounts looks quite interesting.

tuthanh’s picture

Great work. Congratulation

zoia’s picture

Very nice!!! Do you think to make it international ? Perhaps there will be volunteers to translate content into their language

nirmal_george’s picture

Design and theme is really fantastic. great work..

lamppr’s picture

thanks all for comments. I can try to answer your technical questions.

www.lamppr.com

Anonymous’s picture

why can't flash be used directly instead of requiring everyone install yet another client program? i simply stopped there after I realized that need install software...maybe I'm missing something here as it's a quick check.

dragonsd’s picture

It's definitely something that we'll have to reconsider. One of the advantages of having a separate program is that the books could be download and accessed offline. And because it doesn't have to be streamed, the animated books play a lot smoother.

ufoloji’s picture

i like the design :) congrats!

szb100’s picture

Besides being an online library, it is also a platform for authors and publishers who wish to transform their work into animated books and to monetize them. For that, we have a revenue sharing program and a team of award-winning animators to help out with the animation

There does not appear to be any information on this on the site.

Tried the contact form but Image CAPTCHA was not working and so could not get in touch.

dragonsd’s picture

Hi,

Try it again. It should work now.

sadist’s picture

dude! this is damn nice!! congrats to the launch of the site.

btw, at the Sign In page, the 'Sign Up Here' link which is supposed to link to register page, actually pointing to the same 'Sign In' page.

aac’s picture

Congratulations!! for the nice website.

---~~~***~~~---
aac