hey people .
i have question . i want to create a social engine like facebook but i dont know where to start from and how to do everything
so please tell what do i need to create a scoial engine like elgg and if you know a website that gives a free tutorial please give me the link . i have the basic knowledge of php . i can create php/mysql driven websites but i dont think someone with the basic knowledge can create a scoial engine . please tell me how

6 Years
Discussion Span
Last Post by Awah Mohamed

Start with writing down on paper what features you want to add into the social engine. You would be looking at profiles, friend systems, posts etc. Try creating the database first for this. One table for the users and passwords, one table for the member profiles, tables for the posts and so on. Then link them together with PHP.


There are quite a few solutions out there for this. Some you host yourself (elgg, dolphin), with some being hosted for you. Setting up your own from scratch is a bit of a project. What can you offer that other engines don't? If you're going to create a FB clone, ask yourself, 'what's the point'? Look at modules and plugins if you're going to use a solution - some offer integration/bridging with other bits of software like phpBB, whereas other don't.

If you're going to do this, I'd consider learning OOP as opposed to vanilla-flavoured procedural PHP. If you go the procedural route, you may find that your app will bloat, will not be modular and debugging it will be like retrieving an atom of hydrogen from a bowl of spaghetti.


I agree with everything ardav said.

If you really desire to build a social engine from scratch, define your requirements. Then you will need to spend a lot of time with domain modeling and data storage design before you even start writing code. You could hack and patch it together as you go, but updating it or making changes once you have deployed it will become a nightmare or impossible.

Model the interactions that occur and the objects that exist in your system. Based around those models design a database/datastore that best suites your current design. Don't just think about databases as SQL there are a lot of NoSQL engines that will make your life easier in certain aspects, Couch and Mongo being two popular ones,(http://en.wikipedia.org/wiki/NoSQL). Use existing systems, these don't have to be social networks, to gather ideas about how the system should be structured and how the pieces interact with one another.

Once you have a domain model that fulfills your requirements start building the system around your individual models. Domain Modeling and OOP Design go very hand in hand. If done correctly and to a good degree of detail your end result will be essentially a map that guides your development.

If you are building from scratch, use version control and develop good unit testing habits. The more you test the easier it will be to expand or refactor things as new requirements develop.

This is the 60K foot view, the success of a project of this size, will all be in the planning and details. The better you understand it before you start writing code, the better the coding will go.

Just to reinforce what ardav already pointed out, this is a massive undertaking and there are a lot of viable solutions that already exist.

What can you offer that other engines don't?

Votes + Comments
Phew! That's some mean analysis MS. Like it.
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.