Amazee - Drupal powered social collaboration. A redesign case study.

Last modified: October 13, 2008 - 01:57

Amazee logoOn September 17, 2008 Amazee released a fully redesigned version of its social collaboration platform. We made this case study for all Drupal developers interested in how the site is being built and what the challenges have been so far.

What is Amazee

Amazee is a platform that channels any kind of activism and provides powerful tools to help project initiators organize, promote, and fund projects of any size with participants from anywhere around the world.

Whether the goal is to assemble a multinational football team or set up a massive number of broadband connections in remote towns in Africa, Amazee is easy to use for any kind of project.

Overview of Amazee features

Amazee.com homepageAmazee provides you with effective tools to promote your project and collaborate with project buddies. You can for example decide upon the degree of openness and publicity of the project, assign different member rights and keep your visitors informed through an easy editable project magazine. The project team can exchange ideas in the discussion section and jointly edit text in the project's writeboard area. Members can upload pictures as well as other files and organize events and to dos in a calendar. Project funding is an important and unique part of Amazee, providing three built-in mechanisms for projects to raise money and ask for further support.

Development team and Amazee’s partners

Amazee is developing the platform in cooperation with its technology partners epoint in Romania and netnode in Switzerland (see profiles at the end of the case study). Epoint and netnode both have a broad experience in the development of Web 2.0 applications in general and special knowledge in the coding of PHP and in Drupal. Space Invader from Switzerland is responsible for the design.

Development setup

In the beginning working out of 3 different cities was quite new to all of us. Many of the developers have been on big projects before, but being separated by a couple of hundred kilometers definitely was a challenge.

Having development teams in Zurich and Lucerne, Switzerland and in Timisoara, Romania, we not only had to learn to use SVN the right way and communicate with each other but we also had to experience that web design and principles like an online styleguide are crucial elements for a successful development.

Today everybody commits their code to the SVN repository in Romania where the test system resides. Prior to this step every developer uses his own environment on his local machine where first tests are being done.

After successful tests we deploy to the live environment. Here we also improved our process quite a bit: Deployments starting at 10pm and ending at 3am were optimized so the minimum downtime for a big deployment was around 18 minutes in the end.

Process of the redesign implementation

Amazee’s biggest challenge was the implementation of the current design. Coming from a not web-optimized design that was implemented beginning of 2008 we started the process of redesigning screens and functionality in July 2008. By the end of July the first functionality for the redesign was implemented and templating started.

During August until mid of September around 90% of the old functionality was transferred or refactored to the new design.

[…] We did not completely follow the procedure Drupal suggests, which is to make functionality first and after that the design [install modules, then theme and design afterwards]. Because of the given time limitations we had to work parallel – with a changing and work in progress styleguide.
We started off by defining the basic styles, which are used all over the platform. We realized that most of the pages are different and we had to add more and more styles for those pages over the time.
Web publishers and the programmers were not very happy with each other. In the end we managed to get it up and running, even if there were lots of changes during the entire process. Therefore we cannot really say we had a predefined redesign process.

On September 16th the old Amazee.com was history. We deployed the whole new application within a couple of hours and opened up the new site to the public on September 17th.

Standard Drupal modules

Amazee is based on Drupal 5.7 and currently uses around 50 modules either from the Drupal core or community contributed. Additionally there are about 10 custom made modules. We plan to release some of them in the future back to the community.

Node API & Content Construction Kit (CCK) + Form API:

We used the content construction kit in several modules all over Amazee. CCK together with Node API makes Drupal a very flexible and enhanceable web framework. Why? The Node API is a great interface for a node (any type of content). You can easily create new content node types with CCK. The forms and Node API gives you functionality to create, update, and delete a node out of the box. You don’t need to care about details.

Aggregator:

As the title aggregator says – it aggregates RSS feeds from various sources. We used the aggregator to parse feeds that are attached by the Amazee users in the project magazine. Aggregator is compatible with the various RSS versions as well as Atom. Therefore we didn’t need to care about compatibility.

Tagadelic:

Tagadelic as an Amazee project tag cloudThis module is used in several places on Amazee.
First, each project and alliance can be tagged according to the users needs. Users can tag their personal profiles as well.
A special use of the Tagadelic module is made within projects and alliances itself. There the project tags are displayed in the size according to other tags used on the Amazee platform.
This gives the visitor an overview how often the tags on the current project are used platform wide.

Privatemsg:

Private messages are one of the key elements on Amazee. They are on the one hand used for the communication between the users itself. On the other hand they are also used for notifications on events happening on Amazee so the users stay up to date on changes in their projects.

Imagecache:

Amazee uses several image sizes to display user profile images and project images. Users are free to upload any size of image and the image cache is used to scale images to the respective size.

Invite:

The invite module is a great community tool that is flexible, easy to use and extend. Within Amazee it is a core requirement and asset for every project. It helps the projects to grow and from the user point of view helps to share and promote the projects.

Modified Drupal modules

As modifying modules is not the best idea we prefer to maintain ‘custom’ code and ‘framework’ code. Nevertheless some enhancements were necessary to get to the required functionality. If someone from the community is interested our developers can help and explain more in detail how and what changes have been done to the modules. We will most likely not release official patches since the modifications are very Amazee specific.

Imagecache:

A page on Amazee can have lots of images and the image cache module delivers all images from Drupal. We changed the module to escape the PHP processing when delivering and get the images directly from the cache location.

Invite:

The invite module was enhanced so any Amazee user can now invite his friends by email to join a project in case they are not Amazee members yet.

Custom Drupal modules

Project/alliance:

Projects are the central part and asset of the Amazee community. Therefore the project module is an important piece that brings together lots of pieces: other modules like the magazine, discussion, writeboard, members, polls, and to dos are aggregated by it.

Project module that aggregates many other modules (see tabs above)

The project module is a content module that improves the node features of Drupal.
On the other hand the alliance module brings projects together. It is a content module that combines and aggregates other project nodes as well as their members.

Both modules make use and are supported by other community modules like Invite, Privatemsg, Imagecache, CCK, and so on.

Project magazine:

Example Amazee project magazineThe project magazine is a mix of various libraries. The Yahoo-JavaScript-Library allows us to make the drag and drop features that can be seen in the ‘Configure magazine’ mode. The ‘project magazine framework’ allows us to rapidly implement new widgets. The blog and text/video widget for example is purely based on CCK hooking into the project magazine. The RSS feed module is based on the aggregator hooking into the project magazine.
Adding new project magazine widgets reduces the development in handling the business logic accessing on CCK nodes or custom tables.

Webwidget:

To help Amazee users spread the word about themselves and their projects we created a module that takes content from Drupal and creates little JavaScript badges that can be integrated in blogs and websites. The badges are dynamic so if there are changes in the content on Amazee the badge is automatically updated as well.

Why we love/dislike Drupal

We love Drupal mainly because of CCK and the hook system. It allows us to develop agile and rapid. But also Drupal core functionality like the menu system, included jQuery, themeing and custom module integration are ace! And, we dare say that api.drupal.org is one of the best documentations out there... we really love it!

Communication between modules:

The connection and communication between modules using ‘hook’ functions and the use of ‘invoke’ so you get what you want and need in your modules is very powerful and easy to use. The node API hook and form_alter are best examples for this.

System module:

Its structure, the ease to extend and learn, and its accessibility are a good example of how things should be done in modern, state-of-the-art, and extensible frameworks.

But we also had to learn and experience some downsides in Drupal. One of Drupal’s weaknesses (at least in version 5.7) is the speed and performance in general. We wouldn't say that Drupal is slow. But when complexity grows, you really have to care about performance. However - with source and server tweaking you can get reasonable results.

Templating:

We also had some troubles during the templating. Currently templating and programming is done more or less in parallel. And since things change quite often (from an Amazee requirements point of view, not Drupal code base), templating is sometimes quite difficult. We think that the new Drupal 6 theme system would help us in making things a lot easier (from an agile development point of view).

Menu system:

Requirements sometimes change – so do menu structures change. But: ‘… how should a developer tell a client or project manager that a navigation item is nested and that he can't place it anywhere he just wants?’ ;-)

Closing remarks, profiles, and contacts

Amazee was quite a lot of work for all of us until today – and it will go on and we are not done yet. Besides that Amazee wants to say thank you to the Drupal community for such an outstanding product, to Space Invader our creative mind, to epoint and netnode and to everybody else who helped building Amazee.com as it is today. Please find profiles and contact information below.

Partner profiles

epoint logoepoint consulting & development is a fresh and pleasant working environment, where relaxing, studying, working and having fun is part of the daily schedule as any project. Our versatile team consists of young, highly specialized professionals who work and create together. http://www.epoint.ro/

netnode logonetnode IT services GmbH is a software engineering and internet marketing agency founded by Lukas Fischer. Our core competency is the development of web applications focused on communication and marketing. http://www.netnode.ch/

Contacts

For additional information feel free to contact:

Awesome work!!!

bassam - October 6, 2008 - 12:38

Hi there,
Congratulations on the great work you have done. Nice design and cool features.

I have a question for you, how did you generate the project page? Did you use "Panels" module or custom code?
And how did you create the tabs for each project?

Thanks,
Bassam

Thx a lot!

eLd0raDo - October 6, 2008 - 15:26

Hi Bassam
thank you very much for your feedback.

Regarding your questions:
- the projects themselves are custom code, we did our own module here
- the tabs are regular Drupal navigation tabs
- the project module integrates other modules (e.g. magazine, discussion, writeboard) and puts them in tabs
- the theme then makes the tabs pretty

Hope this helps.
Markus

--
http://www.amazee.com/

I love it

IbnKuldun - October 6, 2008 - 13:01

This is a really good website. Pretty obvious you guys put in alot of effort.

How did you get the join here/login to pop up? I'd really love to know.

right...

eLd0raDo - October 6, 2008 - 15:31

Hi IbnKuldun
first of all thx a lot for your nice feedback. It was a lot of effort doing all this.

ica already gave the right answer:
- we used the Drupal thickbox module (http://drupal.org/project/thickbox)
- some adoptions were made since we need different sizes of the layer pop ups throughout the site

If you need further details I can hook you up with one of the developers.

Best, Markus

--
http://www.amazee.com/

well done!

ica - October 8, 2008 - 12:23

well done guys, kudos to the production team and the people come up with the idea
a useful community tool and good execution of the idea, with Drupal
amazee is amazing in Drupal standards! :)

thanks!

eLd0raDo - October 9, 2008 - 07:57

ica,
we are glad you like Amazee -- and the developers have a big grin on their face since we got all this great feedback here.
looking forward to see some really cool projects coming up on Amazee from the community now.

--
http://www.amazee.com/

Ur site luks cool!!

aruns4 - October 30, 2008 - 15:19

Really u guys have did a wonderful job!!

wats tht module u have used to run posts in horizontal order. its seems like but i hope it dont..

join here

ashiwebi - April 9, 2009 - 11:34

I also want to know about the join here option in amazee.

Cool website!!!!!!!!!

Thanks!

webstylemedia - October 6, 2008 - 13:40

Good work, guys!

Thank you for posting this case study.

--
With best regards,
Dmitry Yeskin
President of Web Style Media, LLC
Internet Marketing and Internet Advertising Agency

beautiful!

zilla - October 6, 2008 - 14:51

my only single suggestion is to make that homepage image (hand drawn image) into one giant clickable link to 'join/signin'....

amazing use of drupal!

........................................................................
i love to waste time: http://twitter.com/passingnotes

good input... :)

eLd0raDo - October 6, 2008 - 15:32

Hi Zilla
thx for your input... I just submitted it to the developers. I think this might come in handy.

Glad you like Amazee.

Cheers,
Markus

--
http://www.amazee.com/

Fabulous design! Oh... my... God!

Chill35 - October 6, 2008 - 16:40

Original, sophisticated, usable...

I don't remember seeing a Drupal-powered web site that looks so fabulous.

I agree with Zilla's comment. But I think this image should link to the "Learn More" page.

Caroline
11 heavens.com

thank you so much...

eLd0raDo - October 7, 2008 - 15:55

... for your great feedback.
We totally appreciate this.

And: I will discuss with the team what we do with the link behind the scribble... there are tons of ideas, and so little time... ;-)

Thanks again!
Markus

--
http://www.amazee.com/

Impressive

ulfk - October 6, 2008 - 23:18

This looks fantastic.

Could you share more about the non-technical aspects of the project? How long did it take? How were the Romanian and Swiss teams selected? Did you use Agile or Waterfall? etc.

pretty much agile

eLd0raDo - October 7, 2008 - 16:02

Hi ulfk

>> How long did it take?
--> we can divide the development in two phases: first phase prior to the redesign (~Dec. '07 - Jun. '08) and the second phase for the actual redesign and refactoring (~Jul. '08 - Sep. '08)

>> How were the Romanian and Swiss teams selected?
--> the decision for the Romanian team was made after lots of research on Xing.com - personal meetings and visits. We also visit each other quite often. The Swiss team was recommended to us (I think...!).

>> Did you use Agile or Waterfall?
--> we do pretty much agile development. I do not want to call it Scrum since we do not have a Scrum master and so on. But we try to have a release every month. Tasks are slit up in tiny work packages. And we release only 'done' and tested functionality.

>> etc.
--> up to you... just let me know your questions!

Best, Markus

--
http://www.amazee.com/

Thanks Markus

ulfk - October 8, 2008 - 04:59

Open source and transparent processes :)

Open Sourcing

designguru - October 7, 2008 - 16:17

Any plans to release the [3] custom modules you developed for the project to the community as Open Source?

q./

re: open sourcing custom modules

eLd0raDo - October 9, 2008 - 08:01

hi designguru
we are thinking of contributing some of our custom modules to the community in the future. and there are more than just the 3 we are describing here.
maybe we come up with a more technical showcase in the future and check out what would be the most interesting things to open source.

question to all: anyone experienced in open sourcing modules out of custom projects? i'd like to exchange experiences!

best,
markus

--
http://www.amazee.com/

Cool, Calm , Easy, feature

himtuna - October 8, 2008 - 06:16

Cool, Calm , Easy, feature rich.
Thats your site!

Gamers' Den

ditto

zilla - October 8, 2008 - 11:40

because behind the nerdiness of how it was made, all that REALLY matters is if it's easy to use and understand for the people who happen upon the site or get invited in - and it totally scores on that mark...

........................................................................
i love to waste time: http://twitter.com/passingnotes

thx a lot...

eLd0raDo - October 9, 2008 - 08:03

geekiness vs. usability is always a hard task -- and we also had to learn this.

i'd be interested how this is done in other projects. how do you guys 'optimize' for usability?

--
http://www.amazee.com/

A great site

Mlogs - October 23, 2008 - 07:48

yes, a great site

----------------------
电影日志

don't mean to nitpick, but

seutje - October 8, 2008 - 11:23

don't mean to nitpick, but there's a PNG that seems to have an irregularity on it

it's the bottom shadow of the "Join now!" box
http://www.amazee.com/sites/all/themes/molda/images/shadow_sidebar_botto...

there's like a darker line on it

Loved your website

sumitk - October 8, 2008 - 13:54

Hi I really loved your website
amazingly good looking drupal :)

Can you please explain if you guys using some contrib cck module for "Other Web Profiles" select field and that ajax save
thanks!!
sumit kataria
www.sumitk.net

Any Simulated Performance Test

moramata - October 8, 2008 - 15:54

I would like to know more about any simulated performance test done to check the scalability of the system. I know Drupal is scalable because sites like onion.com uses it. My opinion is that one must do some performance tuning before it is possible to scale a Drupal default installation to a modest sized web site.

The default Drupal instillation with all caching enabled is not scalable for even a modest sized site. I have two Drupal sites with 5000-8000 nodes and 200 visitors per day, the sites are extremely slow when posting contents (takes up to one minute). Over all, after all caching enabled, the site is still slow compared to a non Drupal site experiencing similar load.

I also have a self developed PHP-MySql site (limited functionality not a CMS), site with almost 500,000 nodes equivalent and 8000 visitors per day and it is extremely fast.

My next site is based on WordPress and I am monitoring its performance and so far it is doing ok but the load is not high and posts are in hundreds only. So, I cannot comment on the performance of Wordpress.

I would like to know more information about what performance tuning was done for future scalability of your site with 10s of thousands of nodes.

Nice site.

Performance turning

Amazon - October 8, 2008 - 18:30

Hi, there's no Drupal specific reason why your site is running slow. It could be a particular contributed module or the resources assigned to Drupal in your LAMP stack.

Check out the Drupal High performance group to get some tips.

Cheers,
Kieran

Amazee == Amazing (both, the

themegarden.org - October 9, 2008 - 07:50

Amazee == Amazing (both, the site and this article)
---
Drupal Theme Garden

 
 

Drupal is a registered trademark of Dries Buytaert.