Drupal Social Network

DrupalSN.com is a Social Network website about Drupal and built with Drupal. It is engineered from the ground up by thomjjames with a tiny bit of help from BioALIEN in getting this write up polished.

DrupalSN is essentially a Drupal showcase both in terms of the site itself and also as a place where Drupal developers and designers can showcase their Drupal projects all in one place. I hope Drupal developers and designers will use the site as a way to gain exposure to complement their portfolio.

It's also meant to be a fun place where people can interact and see how Drupal can effectively be used for a social network. I hope the site can compliment Drupal.org and Groups.Drupal.org in a fun and different way but ultimately the goal is to promote Drupal!

Why Drupal was chosen: 

Well, I couldn't not use Drupal for a Drupal community but I honestly wouldn't considering using anything else anyway. The access control system works perfectly for the role based system I wanted and the modular nature of Drupal means I can easily and rapidly build new modules and functionality as the site (fingers crossed) grows!

Describe the project (goals, requirements and outcome): 

How was it done?

It's running on Drupal 5 at the moment using a completely custom theme which was designed from the ground up. I'm no designer so feel free to comment on the design. I'm sure it can be improved!

Key Features

I've tried to include all the standard social networking features like buddies, profile information, content commenting and profile commenting. I choose to make the user profiles users rather than nodes purely because of personal preference although I am using usernode.module to provide a community search page.

User status ala Facebook
You may have noticed I shamelessly copied the Facebook "is" status functionality in a custom module I made allowing users to keep each other updated with what they are doing using a quick status message.

Profile visitors
This is something I developed for another personal site (AdrenalineHub.com) that I wanted to clean up and use again. It displays the last X amount of people to look at your profile and it aims to link users together.

Profile Completeness
This is another simple custom module that calculates a user's "profile completeness" based on the number of profile fields they have filled in and the number of blank ones. This module also provides users with a TODO list of things they can work through in order to complete their profile and get the most out of the site.

Guide Profile Setup
This is another custom module which initially guides users through the process of setting up their profile. I noticed this is quite common on other community sites so thought I would give it a try.

Role based sign up
If you sign up to the site you will notice I have 3 different types of user accounts that you can sign up to depending on how you use Drupal. Drupal was absolutely perfect for this type of sign up system. I used autoassignrole.module, logintoboggan.module and a small custom module to create this functionality.

Also if you have used the site you may notice that different user roles have different profile fields to fill out. To achieve this I used a heavily modified version of the user_types.module (I need to clean this up then I will release it under a different name) and also used a patch to the profile.module (I do not advise editing core modules unless you fully understand the implications) to allow a multi select profile form item, see here for more details.

Projects showcase
In this part of the site users who signed up as a Freelancer or Company can submit their Drupal projects for the rest of the community to see and rate. I hope that freelancers and companies will use it as a place to showcase their work to potential clients and for clients to find suitable Drupal freelancers or companies to work with.

I made the project submission form more user-friendly by overriding the form theme and adding some Ajax loading icons.

Drupal World
This is a non-community part of the site where I used the simplefeed.module to grab Drupal news/RSS feeds from various sites around the Internet. A list of feed providers can be found here.

The site opens up more once you register so I hope you will consider signing up and having a look. If there is any functionality you noticed that I forgot to mention here, feel free to comment below and I'll try and answer.

Challenges I faced

  1. User interface
    As the site is effectively run by its users I really needed to create a simple and appealing user interface. Therefore I actually spent about 50% of the development playing and experimenting with layouts for the page designs and user profiles. I admit I am not a designer so settling on a design probably took a lot longer than it should. This is not really a Drupal issue but more a general development one, but I thought it is important to mention that although I believe Drupal's interface may not be the most user-friendly, the power available to you at theme level really helps you get round design issues.
  2. User project submissions
    This is an ongoing issue that I am still looking into and relates to the user interface issue mentioned above. I feel that Drupal's node forms are great for content types containing only a few fields but for content types with lots of fields it can be a little daunting and off putting for users seeing a form with 20+ fields to fill out.
    To overcome this I am overriding the node form at theme level for my project submission and have broken the content down into collapsible blocks and added some Ajax loading icons. I believe these measures have helped but I think I need to adopt a multi step form in the near future.
  3. Performance
    The site uses 78 modules at present which is a huge amount, so I had to keep an eye on the site performance as I didn't want the site to grind to a halt! I am fortunate enough to run the site on a dedicated server, which means I can make performance tweaks (PHP memory and MySQL cache limits) at server level, but at Drupal level I also found using the CSS and JS aggregation really helped with page loads.
    I guess the real performance test will come in the future when (fingers crossed) the user base grows; I hope module throttling and a Drupal 6 upgrade will help when the time comes. Performance is something I see as utmost importance in Drupal and it's great to see that performance continues to improve with every Drupal release!

What I would have done differently?

  1. Planning
    My plans for the site changed from day to day which slowed up the development a little. I guess that's a problem of developing a site completely on your own; there's no one there to say "hold up, we don't need that" or "that's a great idea go for it!". I wish I set myself a plan of action from the start and stuck to it!
  2. Hire a designer
    As I mentioned, I'm not a designer and the design side of the site was very time consuming for me. Looking back, I would have been better off looking for an interface designer to get me up and running quicker.

You probably noticed I ran into very few issues coding Drupal itself. I have developed quite a few Drupal sites in the past and the experience helped this project progress fairly smoothly!

What next?

  • First of all I hope that a lot of the Drupal community will sign up and give it a try, I would really like to build up a directory of Drupal companies and freelancers that will prove useful for anyone looking for a developer.
  • Once the bugs have been ironed out I want to clean up a lot of the modules and give them back to the Drupal community.
  • I'm also hoping to create a docs section of the site where I will document how certain elements of the site were created as well as create a tutorial section to the site that will specialise in social networking techniques.

I've probably bored everyone to death but I really like reading site write ups so hopefully this will be useful to some out there. Please feel free to sign up to the site, test it and let me know any feedback or if you find any bugs.

Why these modules/theme/distribution were chosen: 

The key modules used on DrupalSN are:
Views, CCK and ImageCache
These provide the base of the content on the site, with CCK creating the node types and Views being used to display content lists and a search facility. Imagecache is used for all image scaling and cropping throughout the site.

Messaging and Notifications
I used the Notifications framework to allow users to subscribe to each other, so they are updated (via email) when a user they are subscribed to adds a new project.

This module provides all the functionality for the Drupal World part of the site, it handles the grabbing of the external feeds and creates them into nodes.

Team members: 
screenshot of inner page
screenshot of inner page


Dorothy Parkour’s picture

I really like the multifaced search interface. How was that created?

VM’s picture

Looking at the source aids in figuring out what's being used for many features.

assuming that you're talking about the 'Want to hire a Drupal developer or company?' search on the front page, it is produced by the views.module and exposed filters.