Social networking applications keep getting a lot of attention from developers even though it seems that all the possibilities of social networks have already been explored. The idea of building new social interactions with the help of mobile technology isn’t going anywhere soon, so it would be useful to learn a bit about the technology stack that social networks rely on.
Social mobile app development requires a three-tier architecture: mobile client, backend, and database. We’ll start with the client by describing three fundamental features that actually define an app as a social network – profiles, feeds, and connections.
[Plaza social app for cities developed and designed by Yalantis. Check it out on Dribbble]
The majority of social networking apps are profile-centric. For developers, this means that a database with personal details of the app’s members is at the core of social network app development.
The easiest way to build a user profile is to connect the app to social networks that users are already using. For example, basic profile data can be retrieved via REST API calls from social networks such as LinkedIn, Google+, Twitter, and Facebook. As an alternative, users can also enter an email and password to sign up, but this requires more work, so people may be less inclined to choose this option.
Profiles are something that individuals use to express themselves, so an app should provide some tools that can help personalize them. I can think of at least five ways how this can be done:
- Hipster photo effects
- Background colors
- Themes settings to define style, content, and layout of the profile
- Customizable bio with cool animated options that display interests, hobbies, food preferences, etc. Euclid is one of our open source projects that features an animated user profile.
- Links to websites or blogs that a user can add (this one is important for folks like me)
[Euclid project by Yalantis]
As I’ve already mentioned, most social apps are profile-centric, though some well-known sites are exceptions to this rule. YouTube, for example, is all about user-uploaded videos, Flickr is centered around uploading photos instead of posting status updates, and Medium is a social platform for content sharing (even though it looks like a publishing platform). In other words, social networks aren’t born equal. Many are focused on user-generated content.
A feed is almost required for a social network to be engaging. Content that shows up in a feed can be either shared by an app’s users in the form of user-generated stories, user-uploaded audio, video, presentations, or photos, or curated by an app’s administrators.
Sharing of content in a social network motivates people to use the social network. Based on people’s motives I divide user-generated content that may appear in a feed as follows:
1. What’s up?
This is what I call content that users post to let their friends know where they are and what they’re doing. The most common form of letting others know “what’s up” is by tagging a location to the post. Technically this can be easily implemented with the help of location APIs that retrieve a device’s location from GPS and mobile network providers.
Location data can be used for monetization because with this information social network app developers can predict potential actions and, based on that, recommend certain benefits like coupons or concert tickets, for example. However, there are growing concerns over the lack of privacy controls when it comes to location information.
One study suggests that apps access a user’s location several times per day without asking any permissions. In most cases, app developers aren’t even aware of their app’s behavior. They just want to get some revenue from advertising and other in-app features, and may hook into libraries that offer integration with ads and other services. Quite often, it’s an advertising library that’s trying to get user location data and use it to serve ads.
The lesson we can learn from this is to choose only trusted third-party services that give users at least some control over their privacy.
Status updates, photos, and videos posted to the app’s timeline indulge people’s desire to express themselves. Most successful social apps do the following to satisfy this desire:
- provide tools that make user-generated content look unique
- simplify the process of sharing content
- target specific audiences
For example, Instagram has awesome filters that make their app catchy, VSCOcam targets professional photographers, and SoundCloud offers aspiring musicians an easy way to get their music out there.
See also: Social apps for all sorts of professions
Even if users of a social app don’t actually create content but copy and paste it from other sources, this can also be seen as user-generated content, because sharing other people’s thoughts is also a form of self-expression. For example, I use Twitter for posting links not only to my articles but to those written by other people as well, and I think Twitter is the best social network ever created.
User-posted content can catalyze vital growth for a social network. However, the very nature of user-generated content requires a sizable existing community before it can drive engagement.
This type of content feeds on people’s desire to look good. I’d also include here content that allows users to get some explicit (or implicit) rewards for their activities. Special statuses, badges, levels, and tangible rewards like vouchers are different ways an app can trigger the common social incentive to be better than peers. Swarm, for example, uses badges to boost user check-ins.
The great thing about the “self-esteem” type of content is that it gives immediate value regardless of your app’s community size.
The very concept of content sharing means creating something for other people. But what if we approach this issue from another angle? Spindle, for example, is a new social journaling app that allows its users to create content for themselves, and share it with friends as an afterthought. The app has no friending or following component and you can only share a post with friends in your address book.
No matter what content gets into the feed, it should offer some sort of interactions to engage and retain users. Interactions are reviews, ratings, comments, highlights, likes, shares, and so on. Every time an interaction happens, a user gets a push notification which prompts them to open the app. What’s more, interactions are one way to increase connections in a social app.
[Feeds in the Plaza app]
Be it following, friending or some other term, there needs to be a way for the users of a social network to connect with each other. Let’s look at how we can establish new connections:
1. Content-based connections
Content is king, especially when it comes to growing audiences and building relationships. How exactly does content increase connections in a social app? Through users. Users build connections through sharing and interacting with content. However, users engage with content in different ways. Here are three different user types:
Explorer. These people like to discover content, so we should give them multiple feeds. One of these feeds may include only the content generated by the user’s friends, and another may feature trending content that gets promoted across the whole network.
Talker. You guessed it! These folks like talking, so implement comments to help them inject their voice into an ongoing conversation and thus get attention from others.
Admirer. Do you also have friends on Facebook that like everything they see? That’s an aggressive type, but all of us can be admirers from time to time. Favorites, likes or retweets as Twitter calls them are interactions that today’s users are looking for. “Favoriting” other people’s content amplifies the value of the post, and can incite a person who “likes” it to connect with the post’s author.
Searcher. They are close to explorers but with one difference – searchers know what they are looking for. Hashtags are a great news feed sorting mechanism pioneered by Twitter. They work remarkably well for growing user following.
Public groups are communities that gather people with common values. Groups are about connections between people. Creating groups can be the main focus of a social app, or they can be added as an additional feature. For example, Entourage, one of the apps we developed, is a group socializing app. It lets groups of friends meet other groups that are located nearby. Check out our case study on the Entourage app.
Alternatively, groups in a social app may be build around non-user entities, such as businesses and organisations that want to be part of a social network (e.g. Facebook Pages).
Maybe connecting people can go beyond digital boundaries? Sending event invitations or using tickets as an explicit reward can be a source of revenue for a social app, and also a source of new connections for users. In the age of everything digital, events are a great chance for an app to move online communication into real world settings. One of our recent projects, a collaborative social planning app, is an excellent example of an app that is centered around events and connecting people in real life.
4. Social networks
With user permission, connections can be mined from Facebook, Twitter, LinkedIn, Google +, and other popular social networks. Until recently, Facebook allowed app developers to retrieve friend lists. Now, however, you can only send invitations to connect to your Facebook friends who are already registered in the app. As a work-around, you can create a page for your app on Facebook and use it to invite people to download your app.
5. Address book
By connecting to an email client, an app can let users send invites to their friends (after all, social networks work best when your friends also use them)! The letter can include a template with text or the message can be composed by users. Click here to see how to implement this on Android. For iOS apps we can use a standard MFMailComposeViewController class.
The same message with an invitation to download the app can be sent by SMS to people from user’s address book. While we use MFMailComposeViewController class for email, the iOS framework provides another class named MFMessageComposeViewController for handling text messages iPhones. Click here to see an implementation of this functionality on Android.
You may also like: What I learned developing SMS/MMS messenger for Android
Social apps typically let users search by usernames or full names. But we can add filters that narrow down search results. The filters may include location, sex, interests, jobs, or any other information that is associated with a profile.
Based on the information at the app’s disposal, the app can suggest new connections to its users. In Entourage, users can swipe right to like and left to pass (just like in Tinder) on other groups that the app recommends.
Now that we’re through with the most important features, we can also look at other helpful functionality that a social app can include.
The vast majority of social networks provide chats and group conversations that bring users back to the social network. There are a lot of third party services that can be used to develop real time chats. One of these services is Layer. We used it in some of our recent social media app development projects, including in the Plaza app for iPhone. Layer allows users to talk with chat, voice, or video messaging and is really easy to integrate.
Added value content
This content is something that makes money on social networks. It can enrich profiles and offer additional functionality or advertising possibilities. Some of this content may get into a social app through partnerships with content providers (e.g. game developers, artists).
You can check out Meemo.me, Picocandy, and Rokolabs for examples of added value content. These platforms offer stickers and other virtual products. Most of the content providers don’t only sell stickers to you, they also get a revenue share. Alternatively, you can create your own custom stickers just by hiring a designer with an illustration background.
Since there is so much content that a social network has to manage, we should also consider backend solutions.
You should check out: Anonymous social networking app development
Your requirements for backend development should be based upon the desired performance. What if you have 1 million users at a time? What kind of backend infrastructure would you need? We typically suggest using Ruby on Rails, or a number of MVC PHP frameworks which can speed up the development process while meeting your requirements for app performance.
Speaking of databases, you can choose between SQLite, MySQL, PostgreSQL, or NoSQL databases such as MongoDB. We recommend that you use MySQL or PostgreSQL for your social networking app development.
NoSQL databases aren’t designed to support many one-to-one and one-to-many entity relationships. MongoDB, for example, isn’t the best choice when it comes to storing “likes” for user photos.
The most important thing you should know about your database solution is expected query performance. It turns out that almost all popular libraries for JSON mapping are slow. The main reason for that is multiple trips to the database during the lookup of existing objects.
To import data from JSON format to CoreData for iOS apps, we created our own solution called FastEasyMapping which is a fork of an already existing EasyMapping framework with a greatly improved overall performance.
Read also: From JSON to CoreData. Fast
One more important part of the social app development is an admin panel. Its main purpose is support for the app’s users. If, for example, a user has a question about the app, he or she can address it to the project admin right from the app. The admin panel offers possibilities for viewing all questions and sending answers to users in real time. This functionality is especially important when the question is very specific and related to user’s history, personal stats, or payments.
In addition to user management, an admin panel can also implement entity management features to keep some control over user-generated content.
Sometimes an admin panel also has a stats page with integrated analytics. We suggest that you use one of several third-party analytics systems like Mixpanel and Google Analytics, but also develop complementary features for the admin panel that can meet your needs. For instance, Google Analytics shows behaviour of the entire user group, but doesn't provide any data on specific user behavior. Creating user behavior logs can provide you with deeper analytics.
The most popular social networks like Facebook gain a big chunk of money from the knowledge of human behavior and statistics. Relevant stats will help you gain insights on the app’s performance and come up with new ideas on how to enhance your app.
All in all, social networking app development does sound like a big deal. To get in the game with fewer risks, we’d suggest that you start with a smaller version of the product, or an MVP, and then work your way to the top.
Read also: cost to make an app