CMS or Build from Scratch?

Hi everyone,
I am a web designer with a pretty deep understanding of HTML and CSS. I am looking at building a database driven website that is something like IMDB.com but not exactly the same idea. It won’t be about movies but it will have the same concept of a lot of listings, a lot of authors, a community and contribution friendly website. Almost all of which are searchable, sortable, etc.

I do not write PHP but when I have looked into learning more about the language the backend coding concepts and database integration seemed very much far away from what I was familiar with. So I looked into some of the CMS’ out there to help me out. After some research I have come to conclude that Drupal is one of the better options out there, and by no means “perfect”, but it does offer a lot more in terms of control. Each module is like a Lego building block so to speak and you can put them together to build your amazing website. OK great, I enjoy Lego so this should be easy, right?

The biggest question I keep asking myself is should I even be using these “Drupal” branded Lego pieces to begin with? Am I wasting my time and in the long run should I just be learning PHP and building my own CMS from scratch for my needs? Or is this an unimaginably difficult task to do from the ground up, and to do well? I do not see any easy custom tailored solution for an IMDB type website with any of the CMS’ out there, and after all is said and done with the contributed modules and my own customizations perhaps I am not really saving much time with a CMS after all? For example, I’m sure there is a Drupal module for Google Maps, but then again, Google shows you how to integrate Maps into your website without Drupal too. Maybe I’m buying into this CMS thing like it will save me time but in the long run it really won’t?

What are your thoughts and opinions? If I start with Drupal as my CMS and get to some substantial roadblocks with it, will I still be able to export all of my hard earned time and effort with it and re-use almost all of it with my own CMS? I’m guessing that it would be a smart idea to figure out which road I’m going to take now, rather than later in order to minimize the workload…

Any help is greatly appreciated. I will also say that Spark Drupal looks promising (HTML5 in-place content editing) but it may take a few more years until we actually see a stable release. I’m not really willing to wait around, and if Drupal 7 is hard to use will Drupal 8 be any easier? Or should I wait for Drupal 10, or should I not be using Drupal at all and should I start using “CMS XYZ” right now? Learning PHP (the right way) is always an option too, if that is indeed looking like the brightest path to follow too. Perhaps it will be a combination of an Open Source CMS and learning bits and pieces of PHP, in order to really make things the most efficient for now and for the long term for where my training time should be spent?

Thanks!

Hi revlimiter,
I can answer this from personal experience as over the years I’ve done a lot of things the hard way including a CMS from scratch and I can tell you that it is a long learning process. While you can learn to do it from scratch, getting permissions systems, input sanitization, database optimization, the themeing engine, etc created takes a lot of work and even more to do it correctly. Many times you will find yourself borrowing ideas from other systems and probably even redoing the system several times from the ground up when you find a better way. I’ve been programming PHP for over 11 years now and still find people doing things better than I am and those things can make me spend several hours adjusting my own code to match.

I know a lot of people that go with the building block route and it’s good as long as you know what you are doing. I’ve used Drupal in the past and it has a great permissions system but it’s documentation isn’t as good as say WordPress which I use for my clients these days. The main thing before choosing a platform is to truly understand the way it handles code, where it excels and where it falls short. I’d personally say that plugins/modules are easier in WordPress but I know guys that are 100% Drupal or 100% Joomla. If you prefer Drupal then stick with it.

To start off the process of creating this I would say first map everything on paper (or in a mockup app). Map everything from the overall design to the interface, user levels, payment system, databases, etc. Once that is done see if you can utilize any plugins out there for any of these items, if not then prioritize what needs to be created and start there. Yes you will probably redo much of this and when the next version of Drupal gets released you will probably have to modify your plugin and theme code due to any changes made to the core system but you will have skipped all the work of having to build a platform.

If you decide to do it yourself I would look into a framework, possibly a MVC one, and go from there as you will again skip some of the upfront work needed for a custom system.

No matter what you will need to learn PHP and properly at that, dig into as many books and tutorials you can but definitely learn about PHP 5 classes, method, calling other classes from within your methods, sanitization, database abstraction, the MVC mindset and application, and anything you can get your hands on.

I hope this helps!