Project Screenshot

2B LOCAL

An app for sharing travel experiences and getting travel tips from friends and locals.

  • Our client’s request

    The founder of 2B LOCAL contacted Steelkiwi 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.

  • Analysis

    According to Statista, travel was one of the most popular app categories among both iOS and Android users through 2018 and 2019. Due to mobile technology, traveling has become easier than ever. Modern travel apps help users find the best hotels, great cafes and restaurants, pristine beaches, and other interesting places. Travel apps such as 2B LOCAL provide travelers with tips and recommendations from people with similar tastes and locals who know every corner of their home city. 

  • 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.

User Roles

icon
Administrator

The administrator can manage the app's content. They can also create, change, and delete everything in the admin panel.

icon
Users

Users can share their travel experiences and get travel tips from their friends.

Results

Duration:
March 2018 – October 2018
Team:
PM - 1 QA - 1 iOS - 1 Frontend - 1 Designer - 1 Backend - 1
UI/UX design

Our client had designs ready, so he asked us to review them. We suggested increasing the font size to improve readability, corrected some logic mistakes in the UX, and created a couple of new screens. 

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, relationship status, etc. 
 

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

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.

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.

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.

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. 

Technology Stack

Swift icon
Swift
Google Maps icon
Google Maps
Firebase icon
Firebase
Elasticsearch icon
Elasticsearch
Redis icon
Redis
Python icon
Python
Django icon
Django
Amazon AWS icon
Amazon AWS
Celery icon
Celery
Java icon
Java
PostgreSQL icon
PostgreSQL