2B Local

App for sharing travel experiences and getting travel tips from friends and locals

Industry:
Travel
Location:
Europe
App for sharing travel experiences and getting travel tips from friends and locals
About the client

The founder of 2B LOCAL contacted Globaldev with an idea to make a social travel app for iOS that would let users find tips on where to stay, eat, and go when traveling and share their own travel experiences. 

The 2B LOCAL app stands out from other travel apps like TripAdvisor because users only see recommendations from their friends, friends of friends, and locals they’ve connected with. The application doesn’t include sponsored content, meaning people who share their feedback aren’t interested in promoting a particular brand. This makes the recommendations on 2B LOCAL honest and unbiased.

Solution

We built a social travel and lifestyle app for iOS where users can find travel tips and share their own travel stories and experiences. We also created a website to tell users about the 2B LOCAL network and drive more traffic to the app.

Video preview
play
Watch product video

Expertise provided to 2B LOCAL

Project management
Frontend development
Backend development
Mobile development
Quality assurance
Developed an iOS application

We developed the iOS app using the Swift programming language and the Alamofire framework. We integrated Crashlytics to gain insights into the app’s performance and crashes. 

We allowed users to register via Google and Facebook using Google Sign-In and Facebook Account Kit. We also used the Google Maps and Google Places SDKs to allow users to find posts based on their location. The CentrifugeiOS SDK supports in-app messaging, and the Firebase/Messaging SDK is used to notify users about new messages, tips, and followers. We used SDWebImage to load images asynchronously, meaning images are loaded only when they appear in the viewport. This minimizes data use and speeds up image loading. 

To improve the usability of 2B LOCAL, we integrated universal links: standard links to a website page or content inside an application. This means that a user taps a link and goes directly to the corresponding content in the 2B LOCAL app.

Developed the backend

We used Python 3.6 and Django 2.1 to develop the backend. We also used PostgreSQL 9.6 to store user data, ImageKit and Pillow to manage uploaded images, and  AWS S3 to store media data quickly and securely. PyTest, a testing framework, helped us write tests to make sure every facet of the 2B LOCAL project works as required. 

We used Redis for caching the most frequently used data, which makes loading pages much faster than if the app had to send a request to the database every time a page loads. Redis also transports messages to Celery, a queue for asynchronous tasks.

To let users find posts based on their location and autocomplete addresses, we used the Google Maps SDK. To enable tagging, we implemented Django Taggit. This tool lets users search for posts by clicking a hashtag, just like on Instagram and Pinterest. Users can also categorize content using tags. Additionally, we used Elasticsearch Server so users can search for content by keywords, tags, locations, and people near them.

We implemented Centrifugo Server for instant messaging among users and Django Push Notifications with Firebase integration for push notifications. In 2B LOCAL, users can create different types of posts using videos, images, text, and more. To support this, we used Django Polymorphic, a Django package.

Challenges

Since 2B LOCAL is a social network, we needed to enable different types of connections between users: friends, friends of friends, followers, and following. In addition, we had to personalize the content users see in their feeds. To do this, we created a system that handles users’ connections and creates a unique feed for each user based on their privacy settings (public, visible to friends only, visible to friends of friends), location, and relationship status. 

Another feature we implemented, with the help of Elasticsearch, is the ability to search by post title, description, tags, location, distance, keywords, and categories. However, Elasticsearch is a different service, so we had to synchronize it with the main database. We did this by building a lightweight interface with the help of Django tools. 

For content creators, we added an admin panel with a user-friendly interface. This lets users create posts about local life using a WYSIWYG editor with block constructors for main text blocks, video blocks, gallery blocks, plain text blocks, rich text blocks, and question & answer blocks. 

We also implemented a hidden notification system to allow each screen to instantly react to triggers without reloading data. For example, if a user likes a post in one tab, all the other open tabs that contain this post will automatically throw a like on it. 

Additionally, we created dynamic Local Life pages to allow users to create Local Life story pages with different types of content and custom UI configurations.

Implemented features

Profiles
Users can set up profiles and add pictures and personal information. They can subscribe to their friends, friends of friends, and locals to see their insider tips. Users can also explore new places and save them in a favorites list, text their friends, create posts using videos, images, text, tags, and location information, and invite friends to the app.
Search
In the 2B LOCAL app, users can do an extended search and find insider tips for a location based on tags, post titles, descriptions, locations, distance, keywords, and categories such as food, drinks, shopping, accommodation, points of interest, service, nature, events, and activities. Users can also enjoy Local Life articles by experts and inspirational locals.
Reviews and recommendations
Users can read reliable reviews and recommendations based on their interests and published by their closest friends, friends of friends, and locals. They can also save new discoveries and places they want to visit in a favorites list.
Sharing travel experiences and tips
Users can create posts to share their experiences and recommendations. To create a new post, a user has to provide a location, title, description, and category. They can also include one to five pictures, add hashtags, and make their content public or visible only to their friends and second-degree connections.