About Youngzine
Youngzine is a one-of-a-kind Web site where children aged 8-15 (and adults too!) can learn about current news and events shaping their world -- in a simple, engaging and interactive manner. Our simple goal is to help parents and educators create a vibrant community of globally aware young citizens in an increasingly connected world. Along with news stories written specifically with our young audience in mind, Youngzine strives to inform using fun trivia, compelling visuals, and by encouraging the sharing of ideas as well as creativity.
Modules
Youngzine was built using Drupal 6.x. One thing i realized is that to build a non-trivial site, i needed a LOT of modules. Here's most of that list (and it grows everytime i develop a new feature!)
For end-user Functionality:
- Views & CCK (of course)
- Lightbox 2: For popups (slideshows, dialogs, etc)
- Views Slideshow - so that slideshows can be rendered from views
- Custom Breadcrumbs & Taxonomy Breadcrumbs: (for auto-taxonomy-based breadcrumbs)
- Fivestar (for rating)
- Quiz (great module)
- Userpoints & Userpoints Contrib: Thumbs up! allowed me to do Foursquare-like competition
- Location (for locating articles, not so much users)
- Gmap and Gmap Location: for google map of articles, as well as map per article
- Comment Moderation: For, it's a Kid's site :)
- SimpleNews, smtp & mimemail: For newsletters
- Image Caption: for captioning images within articles
- ImageCache, ImageApi, IMCE: for images
- One Page Profile: those tabs are confusing otherwise
- Remember Me: so the user doesnt have to login everytime
- Email Registration: allows registering with e-mail address
- Logintoboggan
- AddThis: Nice buttons for Facebook, Twitter, etc
- AdvPoll: For Advanced Polls
- Insert Node: For inserting nodes into other nodes
- Insert View: For inserting Views into nodes
- Insert Block: For inserting Blocks into nodes
- Jquery* modules: How can one do without JQuery?
- Captcha: For registration, anonymous feedback
For Author/Developer functionality:
- nodewords, xml sitemap, site Verify: for Search Engines
- Google Analytics: Must Have for analytics.
- CKEditor (far better than FCKEditor): For authoring
- Scheduler: for scheduled publishing
- Retease & teaserbynodetype: More control on teasers
- Teaser Thumbnail: This was great. I hacked on it quite a bit to auto-download and generate thumbnails for Youtube videos, etc
- Userplus: for finer-grain permissions, etc
- Views Bulk Operations
- Javascript Aggregator
- Better Formats
- Clone Node
- Publication Date
Performance
With all these modules, the concern was that it would slow down the site. I used the following techniques to get good performance:
- Minify Javascript, put it at the end of the page
- Page-level caching for anonymous
- Logged in users: 1 hour / 1 hour views caching, block-level caching
- Separate cookie-less domain and fast webserver for static assets, with 4-5 subdomains for parallel download by browser
Design
I used Artisteer for generating the Drupal template. I am not a visual designer, so Artisteer allowed me to create a professional-looking web site with relatively moderate effort. I used special start/end markers for custom CSS and PHP mods, so that regenerating and merging changes from Artisteer was a breeze.
Custom stuff
Naturally, for a fairly sophisticated site like Youngzine, i had to do a fair amount of custom stuff. Main areas of custom development were in:
- Block surfacing and content generation
- Auto-generating thumbnails for embedded videos
- Declarative directives in Views, that allowed downstream rendering to be configured
- Slideshow hacking
- Generating data (such as comics) in files, then including those files in nodes
- New node types and behaviors
- "Editions" (US edition, India Edition, etc)
- Userpoints customization for all kinds of actions
- etc
This was my first Drupal site, and it ended up being far more extensive than originally thought. But i've been constantly amazed at the breadth of modules available, and the ease of customization. And it's been FUN!