We have a request from our client about creating social site. Of course we can create such site from scratch, but such project will require a vast amount of time and resources. So we decided to find an already created solution that allow changes according to client’s requirements.
He need user levels, privacy settings, friendship requests, private sharing, paid subscriptions, main website integration, social platforms registration and login, mass mailing, custom template, etc.
Nice comparison of “social platforms” can be found on Wikipedia (of course).
After careful research and considerations we select SocialEngine as our base platform. It has most social features already implemented and have its pros and cons too.
Social Engine Pros and Cons
Social Engine Pros:
- Open-source PHP version — you can change code if needed.
- Plugins functionality — we can create plugin for our needs without modifying core code.
- Most client’s requirements are covered from the box.
- LAMP. Yes, it’s Linux + Apache + MySQL + PHP. No paid server software.
Social Engine Cons:
- Paid license. (Anyway it’s much cheaper than creating social site from scratch).
- Code quality is uhm… average. Sure it works, but our developer found kludges and work-around patches.
- Poor documentation. I believe the complete absence of SDK documentation can be called poor, so no offense.
- Updates. When you change the code you can not just install update after that, you have to merge.
- Plugins. Some functionality available only through plugins, which sold separately.
Social Engine Installation
We launched AWS instance, installed and configured Apache, PHP, and MySQL, uploaded installation package and start installation. It was simple and without hassle. After creation of admin user and pressing Finish we landed on start screen of our fresh Social Engine website.
Social Engine Configuration
Next phase was configuration and becoming familiar with SE. We needed to check requirements list and configure SE according to it.
Checkboxes was checked, fields filled, configuration saved.
To our pleasure we found that 70% of requirements was covered with build-in options. We bought 2 plugins for SE and covered another 10%.
When we finished with list, we realize that 20% of requirements will require custom development. That was lower number than we expected, so we was happy.
Social Engine Design
We do not have specific requirements for design, client just want SE site to look like main site – fonts, colors, logo, layout. This was simple task, so I will not go into details. We copied default theme to another folder and start to make changes. (This is a good practice not to modify default theme.)
We have a requirements for site to look good on iPhone 5. It was really disappointing to find out lack of responsiveness in default theme that comes with SE. They claim that it should work with smartphones, and it works with big screen models, but iPhone 5 show a mess on-screen.
There’s a Responsive plugin in SE plugins catalog, but it breaks theme even more than add responsiveness, so we just dump it and fix everything by ourselves.
Hint: you can make very fast and rough opinion about any open-source software just by checking 2 included files – jQuery and Bootstrap./*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license /*! Bootstrap v3.0.0
So you got the idea…
Social Engine Custom Development
This was really interesting part. Requirements was Stripe payments, ability to login with Facebook and Twitter, make profiles private, but keep them in search. Most interesting part was activity tracking feature. Users were able to track their activities daily and see them in table and on graph.
Stripe payments was easy to implement. They provide excellent documentation and samples. We created 2 payment options – for new and returning clients prices was different.
To login with social providers we created Facebook Application and Twitter Application first. Then we added login functionality to site and two social buttons to login with. With social apps users give permission to read their name and email from social platform. Then we can populate these fields in their profile. We do not use any intermediate platforms like LoginRadius, it’s not useful when you plan to use just 2 platforms.
Making profiles private was not complicated, but allowing them to be searched at the same time was hard. We were forced to hack SE source code to make required changes. All these changes was logged and added to project documentation, so we can recreate them after Social Engine update.
Activity tracking was most interesting part of project. Users can track their various daily activities and receive points. Tracking for each day was allowed till 5 PM next day. Users can see colored table with their scores and graph with cumulative score.
We used timezone settings from user’s profile to decide whether she\he allowed to track their score, then we store entered date in database and show it in nice graphical view.
tl;dr: Social Engine is nice platform to start if you want to create your own Facebook. It will save you years of development. At least for MVP.