tags:

views:

420

answers:

10

I'm wondering how to approach in order to develop a complex website, would you start with a CMS and then customize it to your needs or will it be better to build it from scratch.

Say for example if you wish to develop a site similar to stackoverflow, will you prefer to use a CMS or develop from ground up, with least time and effort.

+2  A: 

One of the easiest ways to build complex database driven websites is to use some sort of framework, have a look at Django or Ruby on Rails

Django

Thanks Peter, is there a good PHP framework that can be used.
+2  A: 

Generally speaking, you would gather & develop some requirements before deciding on how to go about implementing it.

karim79
I have gathered the requirement but wanted to find the best approach to begin coding. I come from a C++ coding background so use to coding from scratch but i suppose things on web a bit different.
If productivity and timeliness of delivery are important, then stick to something with a syntax based on C, such as Java, C#, or PHP.
karim79
+2  A: 

Depends on what you are trying to achieve. If you're aim is to build the world's best CMS then definitely build one....However, if your aim is to build a site with good content then I'd recommend trying to customize an existing solution to see if it's flexible enough for your needs. There are heaps of existing CMS solutions out there...many free...that are easy to set up and modify to your needs. One example is joomla

If I were you, I wouldn't try building my own CMS unless I was certain that the existing CMS solutions could not meet my needs.

mezoid
+1  A: 

Using a Framework such as Django or Rails is much structured and cleaner than modifying a CMS. You will also learn a bit about programming on the way.

On the downside, it is much slower and prone to introduction of security errors.

Astro
A: 

If you will build a public web site, you must learn a lot before doing it. In accordance to the accepted SO answer to the question What should a developer know before building a public web site?, it should be

  • Interface and User Experience
  • Security
  • Performance
  • SEO
  • Technology
  • Bug fixing

at least.

eKek0
+1  A: 

Generally yes, I would go with a good CMS.

It depends on what the web site needs. And how it's going to be installed. And what the site is going to be used for, who the audience is, if it's going to be on the internet, or internally an intranet.

My personal favorite is Drupal right now because of how easy it is to administer, and most servers support PHP (the language Drupal is written in). For a Windows server, I'd suggest DotNetNuke.

MattK311
+3  A: 

I would first start by sending you to this post: http://stackoverflow.com/questions/983873/how-much-planning-do-you-do-before-starting-to-code. From there we would need to know exactly what it is your are trying to build. Obviously there is a wide birth of sites that could be built.

One might want to build a 5 page static corporate website that simply tells the world about the services that that company offers. I would suggest building this in static HTML as it can be hosted easily and cheaply just about any where. It also requires little technical know how. This means that money is saved as just about any high school student can build a site of this nature. And for the business owner the site could be edited in many low cost WYSIWYG (what you see is what you get) editors.

If all you need is a blog site there are many blog software readily available for download. DasBlog, BlogEngine, SubText are examples. I tend to lean more towards SubText as I find it very easy to use. Notice: these are .NET based blog engines. There are many others out there in PHP and various other languages. .NET tends to cost a bit more to host so if you don't care about programming languages you might lean towards a PHP based blog engine as the hosting will cost you less. WordPress is another option here. Try to find a blog site that integrates well with a client based blog editor. My preference is to use Windows Live Writer with SubText.

If you need a site with loads of flexibility that pertains to the editing of the content and the layout of the content then you should look towards a CMS (content management system). There are many flavors of this type of software out there too. This goes from open source to commercial. As with anything you get what you pay for. Hosting concepts apply to all web sites so nothing new here.

If you are trying to build a community type site there are many of these to choose from too. I am a bit biased on this topic since I just got done with my book ASP.NET 3.5 Social Networking in which I walk you through building a social network from scratch!

I tend to lean towards figuring out what I need today. Then I try to figure out what I might need a year from now. As I plan for what I need today I try to bake in hooks for future functionality so that if the site takes off I can easily expand it over time. I tend to also attempt to try and follow the suggested patterns and practices of the time. I am currently way into ASP.NET MVC, LINQ to SQL, TDD, DDD, etc. I prefer to scratch build my sites. Not just because I enjoy but also because it helps me to learn new ways of doing the same old thing!

Provide us with more details and we can get you a more specific answer!

Andrew Siemer
A: 

It all depends on what you are trying to achieve. Here are some points to think about:

  1. What kind of traffic are you expecting?
  2. How specialized are the services or DB activities you have planned?
  3. "Has it been done before?" - if so, don't reinvent
  4. What development environment/methodology/prog. language will you use?

If the answer to 3 is "yes", consider the following:

  • If you need to manage content, go with one of the many available CMS packages.
  • Same for blogs - it's been done before.
  • Try to think SOA (Service Oriented Architecture) - what can you expose as a web service?

Hope this helps a it

Traveling Tech Guy
+1  A: 

Having been down this road, I've learned far more by developing on my own than I would have using an already made CMS and customizing it.

I used the Nerd Dinner walkthrough to learn ASP.NET MVC in part and to help me create a customized CMS.

George Stocker
+1  A: 

Define complex....I find quite often that, depending on your needs, tweaking an existing piece of software can get more ugly and inefficient the more you tweak it. At some point you get to the point where you realise it would have been easier to write it yourself.

You will want to read at least a book on web security, plus one on common web software patterns.

The basic order of developing a complex website (for myself) is thus:

  • Decide upon the core behaviour (what data entities there may be, for example)
  • Work out core usecases for the system.
  • Select your platform and server development language (again depends upon your situation/skillbase, maybe linux+php, or windows+asp.net)
  • Construct your database tables based upon the core behaviour
  • Select a decent development framework, must-have requirements probably include some form of ORM, a templating system to generate HTML, and a type of MVC implementation. Most common frameworks implement these, and then have extra features that you can use to make your decision. Do not attempt to write everything from the bottom up, it takes too much time and odds are you'll mess up something. The Zend framework is a good php one.
  • Write your domain (behavioural) classes (using the aforementioned ORM as a base).
  • Write the behaviour of your various pages.
  • Write your html templates.
  • Add any necessary client-side code, but don't depend on it! Use a framework such as jQuery to take the pain-in-the-assery out of javascript.
  • Develop a set of more detailed usecases, and refine the previous three (maybe four) steps until these are met.

I've probably missed something or other out, but that's basically it.

Kazar
Thanks Kazar, excellent response.