The Website

Fanzee is built on Drupal 6. I chose 6 instead of 7 because at the time many of the modules were not yet ready for 7 and people recommended I stick with 6. I have recently built another site with Drupal 7 though (http://cupcakenom.com), and I do like 7 as well as 6.

This site is using 72 modules currently.

Some of the main features of the site, and some of the things members can do are:

Members can 'join' and 'un-join' celebrity fanclubs
This is powered by the Flag and Rules module, together with Organic Groups.

Members can 'like' content which will show up on their profile page
Also works through Flag, but with Views displaying the likes on the profiles.

Customisable Top 5 fanclubs on profiles
Flags combined with Flag Weights means that the order in which fanclubs are displayed is customisable. Otherwise the default sorting would create a list based on the time it was flagged, which is not ideal.

An integrated discussion board (forum)
This is using Advanced Forum module.

Activity stream for each user, and sitewide
Powered by Facebook Style Statuses.

Other features include:

  • Customisable user profiles with name, location, bio and other fields
  • Userpoints which accrue upon interaction with the site
  • Member profile badges based off their userpoints
  • Ability for members to upload photos to each fanclub
  • Members can create and participate in quizzes
  • Ability for members to add pages (articles) to each fanclub
  • Ability for members can add weblinks to fanclubs
  • Members can 'fan' other users, which comes up on each member's profiles
  • User commenting on content, such as fanclubs, photos, videos, pages and weblinks
  • New videos are added for each fanclub automatically from YouTube once a week
  • Celebrity news is updated automatically from Google News every 1-3 days, depending on celebrity

Most of this site (90%) was built in a month, but I have been adding content, tweaking and improving it for many months since. I still have some ideas which I will want to add to the site as well.

So, basically I want to say that I have found Drupal to be a robust script and fun to work with, though with a slight learning curve. I have learned a lot about the power of Drupal from this first project.

Fanzee homepage screenshot
Why Drupal was chosen: 

This was my first Drupal website, and I am quite pleased with how versatile and functional Drupal and its user contributed modules are, so I would like to share a bit about how it can be used for a more interactive type site. I was quite surprised that someone with no Drupal experience, and very little coding knowledge, can create such a complex site with out-of-the-box modules, and have it done in under a month.

A Bit of Background

This was not my first attempt at creating a celebrity fanclub network. A few years ago I requested a quote on Elance for a Fanpop clone (fanpop.com is a high traffic site centered around fanclubs), and hired an Indian development company who were to custom code the script. After 6 months of frustration, the project was finished to a degree (was working, but very rough around the edges), and cost me a bit over $4,000. So, at least it was fairly cheap.

After a couple weeks of being live (with no promotion and very little traffic), the site was hacked. By then, I had had enough and did not trust the code nor the development company. So I binned it all. Felt like such a waste of time, and of course money.

Now because I don't know how to code, I decided to look for an off-the-shelf script that could do what I wanted. The main contenders were phpFox and Social Engine. In the end, I settled on Social Engine. After buying the script, plus addons, and setting it up, I had a secure working site.

But the problem with Social Engine (at the time, not sure about now) was that the 'Groups' functionality was not very mature, and quite basic. My main focus of the site was to be 'fanclubs' so this proved an issue. In the end, the lack of a proper scalable photo gallery within each group, plus the fact that there was no easy way to prevent spammers or remove them once there (Social Engine did not have a way to remove all posts by a spammer without having to go through a convoluted method involving running SQL queries directly to the database) made me stop using it. This was at least 1.5 years ago, it might hopefully be improved by now.

I then had a brief flirtation with BuddyPress and WordPress, but hit similar issues with the 'groups' function, and finally decided to give Drupal a go.

I had avoided Drupal at first because it seems so complicated, but with the very helpful tutorials from http://learnbythedrop.com I was able to stumble my way around the admin section and some basic modules.

After a month of playing around, long nights reading the Drupal forums, and much trial and error, I finally had the site that I wanted.

Technical specifications

Why these modules/theme/distribution were chosen: 

The most important modules for my needs were: Organic Groups, Views, Flag, Rules, ImageCache, Views Gallery and Feeds.

Organic Groups provides the 'fanclubs' functionality. It is great because it syncs well with other modules and really ties the site together. This module is really the foundation of this site.

Views was used to customise how things are displayed, and what particular content is shown on each page.

Flag is for the joining and unjoining of fanclubs, 'like'-ing of content, and the 'friends' function. On Fanzee, I called the 'friends' function 'followers', eg. Joe is following Anna. Basically it is one-way friends, or kind of like Twitter, where you can follow others, and can be 'followed'.

Rules provides the glue between some of the modules, particularly between adding of new content and the activity stream (run off Facebook Style Statuses). It also helps with automation of some tasks, such as upgrading of user roles. For example, a new member who uploads photos will have them unpublished and require approval. Once they are approved, a specific rule is triggered which upgrades that user profile to a different role that no longer requires approval for uploads. So this way, I don't have to manually upgrade their role, which is mighty handy.

ImageCache creates the thumbnails for all the images, such as the fanclub pictures, user avatars, and photo galleries.

Views Gallery powers the photo galleries on Fanzee. It integrates with Organic Groups to provide individual galleries, collected by celebrity. It also handles the display of the galleries, together with Views. This was important to me because a fanclub without photos would be quite boring. Views Gallery was the best gallery module for my needs, as it is really simple and just ties together other modules to achieve the gallery function.

Feeds provides the automatic content collection of YouTube videos, and celebrity news, all via RSS feeds. It automatically creates a video node for each imported YouTube video, and is placed within a fanclub. I have this set on a weekly schedule, and it has already pulled in over 43,000 video nodes over the space of a year. Some are not as accurate as I would like, though that is not the problem to do with Feeds, but the relevancy of the content in the YouTube RSS feeds. I am also using Feeds to pull Google News RSS feeds and also from some other sites, when the big G does not have relevant news for a particular celeb. Feeds is great for providing automatic content to the site.

Team members: 
Sectors: 
Entertainment

Comments

Tezza’s picture

The subject of the site is not to my taste but that's irrelevant. It's very well built. I'm curious as to why you haven't aggregated the CSS and JS files though. Also curious how you managed to get as far as you did having only joined d.o a couple of days ago! I know you talk about relying on tutorials and browsing the forums, but even so that's quite an achievement. Perhaps the maturity of D6 contrib modules played a part.

Thanks for submitting this case study. I'm sure it'll inspire others.

mrtseng’s picture

Thank you Tezza for the comment, and the suggestion. The main reason I haven't aggregated the css and js is because it makes it easier for me to tweak the site, so I can see which individual css file the style is being pulled from.

And yes I only recently joined drupal.org, primarily to post the case study. I thought it might be useful to others, and I guess it's my way of trying to contribute back to the community. Most of the issues I had were solved by browsing and searching other people's issue topics in each module's issue queue.

And certainly, I wouldn't have gotten anywhere if not for the many great and very functional Drupal 6 modules and their developers. :)

By the way, sorry for the late reply, I didn't receive any email notification of a comment.

anhmjn’s picture

Hi, i really like your website.
Can you send me full source code of your website, i really want a website like fanzee.com
Thanks so much!