Turning complexity into clarity.

Build Prototypes Fast with Drupal

Image

I worked for a start-up company. They pulled the trigger on seeking funding a little too fast. They were out there talking up their product while it was still vapourware. Most investors said, “I want to look at the prototype.” This created a crazy amount of pressure to develop an elaborate and almost impossible product with no time and no money; and, do it all from scratch.

Programming your new app or website is a given: you have to code. A very complex app may need many developers; a lot of time for development; or some obsessive and excellent programmers. What if you’re a little short of time, people and brain power? Seek a short cut. Build your prototype from an existing content management system. In my case, I use Drupal.

When I went into the development for the project, meatsplit.com, I first intended to build it all from scratch. I had been stung by Drupal’s high memory consumption; and the baroque nature of some of its code and functionality that detracted from its value proposition. I had a feature list in mind:

  • user management
  • a way for users to “call dibs” on cuts of meat
  • form management
  • tie into Facebook
  • tie into ecommerce
  • keep track of a points system
  • theming
  • tie into a mapping service like Google Maps
- … plus some other nice-to-have features.

Those tasks are all knowns: even a novice armed with easy access to php.net and Stack Overflow could have coded these elements and mashed them together. This project had to happen off of the side of my desk as I juggled other client work. I could have taken months or years on this project and see someone else get to market first. I was impatient. I considered the Drupal system as a giant box of Lego. There are thousands of Drupal modules available for download. Some features are addressed by several competing modules. I had my pick of the litter and I could snap the blocks together to make an interesting end product.

If you want to woo investors, you have to show them results: a working prototype at the very least. Part of their assessment will factor in its raw performance (how fast it loads or how it scales). Performance based issues cannot be ignored, but often early adopters and potential investors want to see the feature set in use with some leeway for performance issues. Drupal modules and settings can combine to give you that working prototype. If you’re adept at sussing out the good modules from the bad (check the module ratings at www.drupalmodules.com ) and abstracting their functionality, you can build a fully functional prototype in very little time. In my case, I still had to build some custom code and I made one Drupal module to tie it all together as well as mix up the secret sauce of my project. That was an okay compromise because I could sidestep building so many of the other features by leaning on Drupal.

Key functions can be found in Drupal that you will likely desire for any product:

Drupal Pluses

Key functions can be found in Drupal that you will likely desire for any product:

User management: Until I got into using Drupal, I must have built 50 login systems for various clients. That road needs to be paved for any site that provides user access, but it doesn’t need to be paved for every new site.

Theming: Drupal has many themes available and a ready supply of developers who can build a theme for you from scratch.

Granular and tweakable permissions: The permissions and roles system can be adjusted to give one user role more access than another role. Modules can be added to extend this functionality to make it more granular or depend upon other factors.

Facebook and OpenID functionality: The FBConnect module can create a Drupal to Facebook connection so that a user can create an account from their Facebook credentials. Likewise, OpenID is very easy to implement with Drupal. Both of these are key to lower the barriers to draw in new users.

E-commerce: The Ubercart module is very well supported and has a long list of extensions to allow it to tie into many payment processors and satisfy less common use cases.

Points System: In my startup, users buy points for cash and then spend those points for small value transactions. The Userpoints system ties into Ubercart and other pieces of functionality to make this possible.

Ways to Make The Most of Drupal

Tune Your Site For Performance: There are a number of ways to get the most out of even a sluggish website. I detailed those in a blog post, http://shawndewolfe.com/blog/7_website_improvements to speed delivery to the client. Most of these tips are good generalist advice, but there are elements that many Drupal installs lack.

Use Views and Panels: Drupal can be glued together with Views and Panels. Views allows data to be pulled from the site and organized in a useful way-- for example link it to more information, or, use some data (like a user id) as a qualifier for what may appear. Views in Drupal 7 is very flexible and there is a whole wizardry to making the most of it. So many sites involve the presentation and organization of data, Views makes that possible. Panels is a modular way to present data elements. For example, you can show a blog page and the content that is related can appear in a panel off to the side of the page. Another example, you build a leaderboard of content and pull in a variety of data views. You can build up an entire modular layout then drag the elements around to suit your desires.

Delete Sub-Modules and Unused Elements: The Drupal modules often try to be very general purpose. Some of them are brimming over with functionality. Out of the box, Ubercart supports over a half dozen payment processors. The downside of all of this potential is that likely only some of it needs to be realized in most implementations. Drupal does an okay job of ignoring inactive modules but that step of traversing a bloated file tree isn’t necessary. Do yourself a favor: considering removing non-active modules from your production site. For each module that appears in your site’s list of modules in the admin, there will be corresponding file named in a similar way. If the module has not been activated and it’s not needed, it can be deleted from the file directory on the server. This makes the module directory easier to digest in production, as long as you remember to continue to omit these files with each update performed.

Compromise: We’re talking about getting a fully fleshed out prototype or demonstrable version of your website. The “Drupal” way is sometimes not the Internet norm. If you commit to using Drupal to make a working copy of your big idea, have a little tolerance for Drupal-isms. If you can demonstrate your cool idea, maybe that will let you drum up the cash so that you can pay someone to build a variant that behaves in the exact way you wish.