The challenges of creating your own digg-site from scratch
Many people out there might be thinking of creating their own democratic user driven site. Some people refer to this as a “Content Management System”, while others simply refer to it as the Digg Model. No matter what you call it, the success of the site hinges on the functionality and presentation of the content. I have recently gone through this challenge from the ground up and decided to write this blog to help others who may follow the same path. Because of the size and uniqueness of each digg-clone project (is that an oxymoron?), it would be impossible for me to write a “How To” article. So instead, I present you with the three biggest challenges you will face creating a site like this. My second goal, of course, is to help get the word out on www.celebritypwn.com . Give and take right? hehe
I present this article from the point of view of a self-taught php programmer with roughly a year of freelance experience. I am now a little over a month into the project. I have had no prior experience with JavaScript, especially JavaScript with AJAX requests. It is important that you have experience with at least one programming language to base the foundation of the site on. As you probably noticed, I have also used various php code examples and scripts to aid in the completion of the site. I’m not ashamed to admit I know how to use Google J. It is also important to realize that you do not have to reinvent the wheel. If something is out there that you can use, then go right ahead and use it.Having said all of that, on to the three obstacles. . .
First, envisioning the database required to house your imagination. This is fairly obvious with any big project. However, this is my first attempt at a complex site and many of you may not realize the importance of thoroughly planning things out. As you begin to think about your own CMS, a lot of ideas pass through your head. The trouble is finding out how to organize these thoughts into a manageable system. For example, you take a look at digg.com and you right off the bat realize how things are organized. Do you want the user to create their own organization by means of user-defined tags or for the site to organize for you? Obviously Digg chose the ladder. This decision needs to be made during the initial development stages.
Deciding how to organize the site is also related to how you present user submissions. Story promotion is a direct result as to how you structure the tables in your database. This means during your initial brain storming of features that you must account for keeping track of a lot of information. Deciding how to promote stories while at the same time stopping cheaters can be challenging. The site can be as basic as keeping track of votes or as complex as taking into consideration ‘down votes’, the time of submission, and the class of the user who submitted it, etc. Sometimes you might want to grab more information than you might *think* you need, because later on you will realize more data is necessary to accomplish your goal(s). Right now I have six different tables to store the necessary information to make the site go-round. But do not try to stuff too much data into one table and make it needlessly confusing and disorganized.
Secondly, the user submission page is vital to the site’s success. I realize this point is closely related to the first, but it can make or break the site. The submission form is important for two reasons. 1) It is the most challenging part of the php coding process. If you can do this, you can probably do the rest of the php coding that is required. The submission form itself took me over a week to complete. This should be your starting point because you need data to manipulate. 2) This is what every user uses to make your site a success. Anything that can make the user’s experience easier, such as an auto complete box, should be done! It’s worth the extra time. Make sure it is presentable and as easy as you can make it. Test, test, and test the submission form some more. As I began this project I thought to myself that if I can do this submission form than the rest of the site should not be as hard. This proved to be half true J
Finally, the voting system and the incorporation of that catch phrase known as web 2.0. I realize not everybody knows multiple programming languages. However, you really should try to add JavaScript to your repertoire. I also realize that many people cringe when some noob throws around web2.0 catch phrases such as ajax, so I will try to be brief
The bottom line is that the use of an ajax voting system is critical for a digg-clone site. There is no other way about it because end users today are used to functionality that is smooth and instantaneous. Developers unfamiliar with JavaScript and never heard of an XmlHttpRequest are in for a wakeup call.
This proved to be my biggest hurdle. I made a basic ajax voting script and I was fortunate enough to have a friend who could help take it to the next step. If you need to hire someone for all your JavaScript needs, then do so. If you plan on learning yourself, then check out Ruby on Rails and/or Prototype.js. There are plenty of tutorials around to help you get started. Ajax is no longer optional in most cases. There is no more web 2.0. Two years ago you might call it that, but today that kind of stuff MUST be in sites created from at least 2006+ (where needed).
Your site should have its own unique spin on something. If its been done exactly like this before, then you are wasting your time. I took note of what was out there on the internet and decided that a celebrity gossip site was needed. There are many other niches that need filling. I could go on much longer talking about potential snags that you can hit, but this article is a good starting point for those curious. If people are interested in this article and want more, then I will be happy to revisit this topic. For now, I really should get back to work on my site. After all, people can’t even vote against stories yet!
andreas said,
July 7, 2007 at 3:31 pm
Besides the coding and construction challenges, how do you create your own digg-site from scratch? Establishing a community seems like quite a challenge, how did/do you deal with this challenge?
celebritypwn said,
July 7, 2007 at 4:03 pm
@andreas
That would be an obstacle I didn’t anticipate. Its EXTREMELY tough to get people to sign up. The best thing to do is market the uniqueness of your website compared to the rest and try to grab some decent keywords on google to drive traffic. Press releases do help, but cost money if you want links in them. After that its up to word of mouth for the site to gain popularity.