Building a social networking website

I spent my downtime working over the holidays on a social networking website. I had a lot of fun developing something that I would not do for my day to day job. First of all I was using a technology stack that I liked, and one that is not widely used in ThoughtWorks. I have been building my site using Django with PostgreSQL as my database. After using Sybase on my last project at work, I needed to cleanse myself from having used the crappiest database ever. It was great to be back using good ol’ PostgreSQL.

The main reason for using Django is to use GeoDjango, which makes handling location based data a lot easier. Especially if you plan on using a service like Yahoo’s Fire Eagle, which provides an API for location based social networks. GeoDjango uses PostGIS on top of PostgreSQL to store data in a location friendly format. The domain model and geographic data in GeoDjango makes it easy to create a point (latitude and longitude) on Earth and do things like determine if it is located within a mapped out region or not. This is essentially where I want to go, but I might be limited by my hosting service. Need to work out if I can install all the dependencies for GeoDjango on my shared server at Joyent.

I started with the look and feel of the website, so I have my css styles and branding sorted. I now need to integrate my templates with the user registration functionality. Then start building out the functionality for supporting community events. I will release more details about the site as I progress, so stay tuned!

7 thoughts on “Building a social networking website

  1. Janet

    Nick,

    How much money does it take to have a social network built and maintained? And about how long does it take?

    Thanks!

    Reply
  2. Nick

    Hi Janet,

    The one I am building is kind of a hobby to me, as I want to learn something new. I try to commit to a couple of hours after work to adding a new piece of functionality. This is unbelievably hard because all I want to do is relax after work!

    I started about 4 weeks ago and I only have user registration and a site theme (layout + style sheets) sorted. I’m guessing it will take another 2 months until I go live with some core functionality.

    Mind you it will be an ongoing commitment as new functionality will be added over time, and ongoing maintenance will no doubt be needed. It will be a struggle to do it on a casual basis as maintaining an active website is usually a full-time job.

    If you are thinking of building one then you need to have a vision of where you want to take your site and the community that you will hopefully attract. Decide on whether your site can be established using a blog, which would be relatively cheap depending on whether you use a free blogging account (eg wordpress.com), or host your own to establish your own identity.

    If you think you need more than a blog for your site, then you may need something custom built. A custom built site can become very expensive (from thousands to hundreds of thousands of dollars), but again it depends on what you want.

    Hope I answered your questions.

    Cheers,
    Nick.

    Reply
  3. Maegan Ferranti

    I am a journalism student who is currently taking an HTML class and I am very interested in creating a networking website geared towards professional business people – entrepeneurs, programmers, journalists, an the like as well as students …. i want to create an environment suitable for webcam conferences, and study sessions, chatrooms with webcam and microphone capability, a main page with news, profile creators, and much more, with a very high level of security . I want to know where I can get more information on HTML and programming my own social networking website. Can you help me out? Thank you :D

    Reply
  4. Nick

    Hi Maegan,

    Sounds like you have some big ideas for your website!

    Contrary to what you may learn in class there is a hell of a lot more involved in building a website than just HTML. HTML is a markup language for structuring content. You will also need to learn CSS for styling your site, and javascript for adding behaviour. Then behind the scenes you will need a backend to handle registrations, and database driven content.

    My advice would be to learn PHP/MySQL for the backend functionality. PHP is a programming language that has been used to build sites such as Flickr and Facebook. MySQL is a database for storing your site’s content.

    Once you’ve created your site you will need some place to host it. Do your research into hosting plans. They can get quite costly, and you will have to spend some effort in deploying your site on to your hosted infrastructure.

    The alternative to all this is to start a blog, as I’ve mentioned in an earlier post. Then use “free” services like Flickr or Youtube to embed photos and videos into your blog. For example you might want to film an editorial for you journalism class, upload the video to Youtube, then get the “embed” link from Youtube and paste it into a blog entry. Your blog will essentially become a channel for your journalism content.

    I hope that I’ve put some things into perspective.

    Cheers,
    Nick.

    Reply
  5. Erica Parkman

    Nick,
    I recently got a quote for a Social Networking site that will utilize User names and passwords in order to get to the member’s only portion of the site, as well as accept fees for membership. I decided to do it myself and save money. What would I need to get this up and running?

    Reply
  6. Jamil

    Hi there,

    As part of back-end, I would suggest to go for Python . Problem would be to find expert DBM on python. Reason: once your site is popular PHP-MySQL would be real expensive to maintain whereas python is a straight relief & you still might have a hefty profit!

    Cheers!

    Reply