Bazaar | iOS Social Listings/Classifieds Shopping Application

Bazaar | iOS Social Listings/Classifieds Shopping Application

(6) 4.83 stars
47 Sales

Bazaar | iOS Social Listings/Classifieds Shopping Application - 1 Bazaar | iOS Social Listings/Classifieds Shopping Application - 2 Bazaar | iOS Social Listings/Classifieds Shopping Application - 3 Bazaar | iOS Social Listings/Classifieds Shopping Application - 4


Bazaar is a great solution for those who need to quickly build a mobile app where people can list their used or new items for sale, and the community can browse ads and chat with products owners to agree on payments and purchases

Read Mobile and Web tutorials online

Android version of Bazaar

Web PHP version of Bazaar template

Watch the video preview of Bazaar

Online documentation of Bazaar

Bazaar | iOS Social Listings/Classifieds Shopping Application - 5 XSApp is a HTML/CSS theme to create your awesome App Landing Page in no time. Clean, modern design, different header colors, easy to customize.
Bazaar | iOS Social Listings/Classifieds Shopping Application - 6
Bazaar | iOS Social Listings/Classifieds Shopping Application - 7
Bazaar | iOS Social Listings/Classifieds Shopping Application - 8

Bazaar | iOS Social Listings/Classifieds Shopping Application - 9 VintyMag is a complete Magazine/Newspaper Wordpress Theme where you can showcase your blog news in an old-fashioned look. It is easy to install and configure, and it has got 4 different Home and Categories layouts.
Bazaar | iOS Social Listings/Classifieds Shopping Application - 10
Bazaar | iOS Social Listings/Classifieds Shopping Application - 11
Bazaar | iOS Social Listings/Classifieds Shopping Application - 12


Bazaar is a full-working template (UI + Source Code) to post and browse Ads from any location in the world, and find cool stuff for sale.

People can like and share items to social networks, as well as chat with sellers to discuss price, shipping or simply get more info about the products.

The iOS, Android and PHP versions can share the same database on back4app!

The Admin should daily check the database for reported content/users, and take action for it.

The design is clean, code is commented and project folders and files are well organized in the package.

• Check out the Features section below to see what this app does.
• Read the online Documentation to learn how to configure the template’s features and the database (Parse Dashboard).
• Keep an eye to the Change Log on the bottom of this page when an update gets released.


It’s backend is by Parse Server and it’s hosted on back4appNO MySQL database involved.
Parse Server is flexible, reliable, open source, based on Node.js and well supported by a large community of developers, and back4app is a great BaaS hosting website where you can configure your database, Push Notifications and other features in just a few clicks.

If you want to see a preview of the structure of the demo database, and also clone it in just a click, CLICK HERE!

If you want to use a nice Admin Panel to manage data of your database instead of the Parse Dashboard, sign up for a FOREVER FREE account on and watch this video to see how to create a Panel for your Parse App.

Extended License

As per Envato Marketplace Terms, the Extended License applies to all applications that charge money to their users. In case your users will not be charged of money through your own version of this app, you can still buy it under a Regular license.
Therefore, you must buy this template under and Extended License if your plans are either one or more of the following:
  • Add In-App Purchase or any other Payment Gateway in the source code and publish the app for free on the App/Play Store – NOTE: If you want to publish your own version of this application for FREE only, then you can still buy it under a Regular License.
  • Publish this application as a PAID app on the App Store.
  • Transfer the live app of your own verison of this app on the App/Play Store to another owner by selling your ownership on or similar marketplaces.
IMPORTANT: You are NOT allowed to sell or share the original source code of this template anywhere due to copyright infringement


iOS Swift language – Native Xcode project – Edit the template as you wish with the power of Xcode and Swift.

Storyboard, iOS 9.0 and above, Universal – Run your app on all iOS devices

Backend with Parse Server hosted on back4app – Built on a great and reliable BaaS that offers many features with just a few clicks, it’s super easy to create and set up a database on back4app, as well as edit the Parse Server’s SDK code.

Browse stuff from people you follow and don’t, and yours too – From the Home screen, you can search for ads from any place, use the built-in Map to select your location – you must allow it on your browser – or search for an address to fetch listings.

Chat with sellers – Ads owners can get private messages from interested users and reply in real time.

Change location on a custom Map – To either post ads or browse them, you can select a location by opening up the Map and move it to place the pin and search for products. You can also type a custom address or city name and select the distance range.

Email verification – After signing up, people will get an email with a validation link. Users with a verified address will be displayed in their profile pages.

Edit/Delete your own Ads – From the Listing Info page, people can choose to delete or edit their items with the 3-dot options button.

Report inappropriate listings or people – Users are able to flag offensive content/sellers, the Admin must daily check the database to see what has been reported and take action for it.

Like listings – Save favorite ads by liking them, you can find them in your Account screen -> Liked section. Search listings by keywords – Keywords search is essential, so you can perform it to find what you need around the selected location.

Notifications screen – Check likes and followers in this section, and get to users profiles.

See your Account’s info – The Account screen is where you can enter the settings and see what ads you have posted, sold or liked.

Settings page – Edit your profile, avatar picture and biography, or logout the website.

Terms of Use and Privacy Policy HTML file (GDPR compliant) – The template contains an HTML file the Admin can edit to display his Terms of Service to the app’s users.

Facebook login – People can quickly sign up or sign in via Facebook from the Intro page.

Push Notifications – People get Push messages for likes, follow and chat messages.

Modern, clean design – The UI has been carefully crafted to offer the best user experience to your clients.

Online Documentation – Read the extensive guide of this template to be able to configure it properly.

PSD icons included in the package – App and buttons icons are stored into a PSD folder, for easy image replacement.


The latest official version of Xcode – Beta versions of an IDE usually never work 100% properly, and the code of this app has been written using the latest official version of Xcode and you can download it from the Mac App Store. You must use it and avoid Betas.

An Apple Mac computer, updated to its latest OS version – It’s always good to keep your macOS up to date, technology keeps growing and I follow its changes, as well as updating my templates every time a new OS gets released.

An Apple Developer Account with an active iOS Development Program – This is needed for you to publish apps on the iTunes App Store. You can still edit this template on code without that account, but you won’t be able to run it on your real iOS device since you’ll need a Team ID.

Basic knowledge of Xcode and Swift language – You don’t need to be a skilled or professional developer, anyway it’s recommended to have at least the basic knowledge of what you’re dealing with, in order to be able to customize this template and publish your applications on the App Store.

A free account on – You can create and edit your Parse App and database, get the necessary keys for configurations and test this template for free. It has limitations though, so please check the Pricing table and consider subscribing for a paid plan after your app got published on the App Store.

An active AdMob account – Unless you want to remove ads in this app, you need to sign up for an AdMob account to display them.

A real device to test the app before submitting it to the App Store – iOS Simulators may fail during tests, they are not reliable as a real device is, so I strongly recommend you to always run this application on a real phone/tablet. This is also suggested by Apple’s official Guidelines.

Change Log

April 28, 2020

- Due to Apple's deprecation about UIWebView, I've updated the following files inside the 'Parse' folder:

- Removed the FBSDKShareKit.framework

** IMPORTANT** - If this is an UPDATE for you, you should perform the following steps:
- Open your old Xcode project and expand the 'Frameworks' folder from the files list menu on the left pane
- Select the framework files mentioned above and the FBSDKShareKit.framework too, right-click and select 'Delete' .-> Move to Trash, so those files will be removed from the 'Parse' folder
- Open the 'Parse' folder inside the updated project folder and copy all its files
- Open the 'Parse' folder inside your old project folder and paste them
- Select those files and drag them inside the 'Frameworks' folder from the files list menu on the left pane in Xcode, and click the 'Finish' button
- Clean the project and run the app, Xcode should give you a few errors:
    'FBSDKGraphRequest' has been renamed to 'GraphRequest'
    Cannot call value of non-function type 'ApplicationDelegate'
    'sharedInstance' has been renamed to 'shared'

So you can easily fix those errors by clicking on their red dots -> Fix button. Xcode will perform name changes for you.
Alternatively, you may compare your old 'AppDelegate.swift' and Intro.swift' files to the updated ones and perform the few code updates

April 23, 2020

- Updated the GoogleMobileAds framework files into the 'AdMob' folder:  removed the old .framework files in the 'Frameworks' folder in Xcode and imported the new ones - this should fix the UIWebView warning message from Apple after submitting the app on the App Store

January 17, 2020

- Removed the appleButton View from the Storyboard, because Apple wants apps to use its default 'Apple Sign in Button', no custom and well-designed buttons.

- Edited the Intro.swift file by adding some code to programmatically create the 'Apple Sign in Button' into the 'viewDidLoad()' function, and by replacing:
    @IBAction func appleButt(_ sender: Any) {
    @objc func appleButt() {

- Removed these lines too:
    @IBOutlet weak var appleButton: UIButton!
    appleButton.layer.cornerRadius = 22

January 13, 2020

- Added Apple Sing In button in the Intro controller of the Storyboard 
- Added the 'Sign In with Apple' capability in the Capabilities tab in XCode (YOU SHOULD TO THE SAME ON YOUR OWN IN YOUR PROJECT!)
- Edited the Intro.swift file by adding the Apple Sing In code
- Added an 'apple_icon' ImageSet in the Assets.xcassets folder
- Edited the Login and SignUp controllers in the Storyboard and their relative swift files
- Replaced:
    vc.modalPresentationStyle = .overFullScreen
    present(vc, animated: true, completion: nil)
    navigationController?.pushViewController(vc, animated: true)

in all those @IBAction functions that instantiate the "Intro" controller of the Home.swift, AdInfo.swift, UserProfile.swift, FollowingAds.swift, Chats.swift, Settings.swift, Notifications.swift and Account.swift files. 

- Edited the 'showUsderInfo()' function in Account.swift by adding this code:
    var currentUser = PFUser.current()!
    do { try currentUser = PFUser.current()!.fetch() } catch { print("\(error)") }
- Removed this line into the view // Call query
        if PFUser.current() != nil { queryAds() }
- Updated the online Documentation

December 23, 2019

- Updated the 'main.js' file to compile with the latest Parse Server 3.x version | Remember to update the Parse Server version of your app on back4app from the 'Manage Parse Server' section!

December 16, 2019

- Updated the 'main.js' file to compile with the latest Parse Server 3.x version.
1. Update your Parse Server to the latest version (currently it's 3.9.0) from the 'Manage Parse Server' section of your Parse App on back4app- unless you already have the latest version selected.
2. Upload the updated 'main.js' file into the 'Cloud Code Function' section of your app on back4app, overwrite the existing one and Deploy it.

November 11, 2019

Added this code into the 'Info.plist' file, in order to force Light Mode for the app even when the device is on Dark Mode:

NOTE: You can right-click on the Info.plist file and select 'Open As -> Source Code', then paste that code anywhere 

November 4, 2019

- Added this line of code inside the 'camera' and 'library' instances of the 'photoButt()' function in the SellEditStuff.swift file:
    imagePicker.modalPresentationStyle = .fullScreen

This fixes the bug about adding a second image after uploading the first one.

September 28, 2019

- Removed all frameworks from the 'Embed Frameworks' section of the 'Build Phases' tab
- Removed the code inside the Ruin Script section (still in Build Phases)
- Replaced the Bolts.framework file with an older version - it's in the Parse folder

In this way, you'll be able to successfully Archive the app and submit your binary to the App Store

September 23, 2019

- Updated to Xcode 11, iOS 13
- Added a 'Launch Screen.storyboard' file to the project and customized it with an ImageView that contains the 'launch_screen' ImageSet - which was added into the 'Assets.xcassets' folder
- Assigned the Launch Screen storyboard file to the 'Launch Screen File' field in the General tab 
- Removed the BrandAssets folder from the Assets.xcassets one
- Removed the row called 'Asset Catalog Compiler Launch Image Name - Brand Assets' from Build Settings
- Added this line of code above all instances of 'present(vc, animated: true, completion: nil)' due to iOS 13 new Modal system:
    vc.modalPresentationStyle = .fullScreen

- Downgraded the Facebook Login Core and Share SDK frameworks to version 4.38.0, because the new SDK is not ready for iOS 13 yet :(
- Increased the height of the custom Top Bar Views in the Storyboard, due to iPhone X and 11 screens - top Buttons weren't easily clickable.

** PLEASE NOTE: You may see a bunch of Buildtime warnings while running the app on your device via Xcode, saying:
"Auto Layout Localization: Views without any layout constraints may clip their content or overlap other views".
 Do not worry about it, just ignore those warnings - they aren't errors - and the app will still work perfectly and the design won't get messed up.

September 10, 2019

- Replaced the UIWebView with WebKitView in the 'TermsOfService' ViewController in the Storyboard
- Edited the code of the 'TermsOfService.swift' file, since Apple no longer accepts apps with UIWebView
- Changed 'Builds for' value from '9.0 and Later'  to 'iOS 11.0 and Later' in the File inspector of the Storyboard

July 20, 2019

- Added a script in the 'Build Phases' tab in Xcode that allows you to upload your Archive to the App Store Connect page (avoiding the ERROR ITMS-90087 issue).

** In order to update your own Xcode project, do the following:
• Download the updated project from your Downloads page
• Enter the Build Phases tab in the updated Xcode project
• Expand the 'Run Script' section and copy the code inside it.
• Open your own Xcode project and enter the 'Build Phases' tab
• Click 'Editor -> Add Build Phase -> Add Run Script Build Phase', and expand the 'Run Script' section that Xcode has created
• Paste the copied code and Clean your project.
• Finally, Archive it again
See this screenshot for details: **

June 19, 2019

- Updated the .framework files in the 'AdMob' folder
- Updated the Facebook's .framework files in the 'Parse' folder to v5.0.0
- Added the FBSDK framework file and Bolts.framework in the 'Embedded Binaries' section of the 'General' tab in Xcode, as shown here:

June 6, 2019

- Updated all the .framework files into the 'Parse' folder with the Parse SDK 1.17.2 version
- Updated all instances of 'PFFile' into 'PFFileObject'
- Removed the automatic Camera popup when you are about to sell a new item by editing the SellEditStuff.swift file
- Removed this line of code in the 'sellStuffButt()' functions in the Home.swift and Account.swift files:
      vc.isFirstPhoto = true

** Compare your old .swift files with the updated ones and perform the changes **

March 29, 2019

- Updated to Xcode 10.2 - Swift 5

March 22, 2019

- Updated AdMob SDK to 7.42.0 version, which means that I've added the following .frameworks files to the project:
   • GoogleMobileAds.framework
   • GoogleAppMeasurement.framework
   • GoogleUtilities.framework
   • nanopb.framework

- Added the "-ObjC" value in the 'Other Linker Flag' row in the 'Build Settings' tab
- Added 'import GoogleMobileAds' on the top of the 'AppDelegate.swift' file
- Added the following code into the 'didFinishLaunchingWithOptions() delegate function in the 'Appdelegate.swift' file:
    // Initialize AdMob
    GADMobileAds.sharedInstance().start(completionHandler: nil)

- Updated the Documentation

February 13, 2019

- Removed the 'fakeTxt' TextField in the Storyboard and renamed the 'fakeView' IBOutlet into 'writeMessageView'
- Added the Send button IBOutlet and moved the messageTxt into that 'writeMessageView'
- Removed the code that initializes a keyboard toolbar into 'viewDidLoad() in the 'Messages.swift' file
- Updated the Messages.swift file with the necessary code that checks for keyboard shown/hidden
- Added a Swipegesturerecognizer instance in the Storyboard of the Messages ViewController, declared it as an IBAction and placed the code to dismiss the Image Preview View on swipe down

January 31, 2019

- Updated the following Facebook SDK Frameworks into 4.40.0 version:

You can find those .framework files into the 'Parse' folder - it's into the project folder.

January 23, 2019

- Edited the 'sellButt()' function in 'SellEditItem.swift', in order to send a Push Notification to all those Users who follow the currentUser

January 20, 2019

- Fixed a small typo in the 'AdInfo.swift' file -> 'optionsButt()' function - into the SHARE AD method - by replacing 'alert' with 'actVC', so now the sharing option works on iPad, and the code looks like this:
    actVC.modalPresentationStyle = .popover 
    actVC.popoverPresentationController?.sourceView = self.view
    actVC.popoverPresentationController?.sourceRect = sender.frame
    self.present(actVC, animated: true, completion: nil)

- Added this code into the 'viewDiAppear()' function in the 'Account.swift' file:
    // Recall query
    if !noReload {
        noReload = false

- Added this line into the 'deleteButt()' function in SellEditItem.swift:
    noReload = false

- Added an AlertController called 'alert2' in the 'markAsSoldButt()' function in the 'SellEditStuff.swift' file
- Added 'noReload = false' in the 'sellButt()' function, into the Alert that has the following message:
    "Congratulations, your stuff has been successfully posted!" 

January 18, 2019

- Added a public function called 'Reachability' into the 'Configurations.swift' file, and wrapped the 'func getCurrentLocation()' and 'func queryAds()' functions in 'Home.swift' into an IF statement like this:
    if !Reachability.isInternetConnectionAvailable(){
            simpleAlert("Internet Connection is not available, please enable WiFi or Mobile data!")
        } else {
        }// ./ If Internet connection

- Removed 'let' from this line into 'func showItemDetails()' function in 'SellEditStuff.swift', so it now looks like this:
     // Negotiable
     isNegotiable = adObj[ADS_IS_NEGOTIABLE] as! Bool

January 17, 2019

- Fixed a crash - occurred after deleting an Ad and then entering the Chats screen - by editing the 'let delete = UIAlertAction()' functions into SellEditStuff.swift and AdInfo.swift

•• Into the Configurations.swift file:
- Added these lines:
    let MESSAGES_DELETED_BY = "deletedBy" 
    let CHATS_DELETED_BY = "deletedBy" 

•• Into the Messages.swift file:
- Added this line into the 'sendMessageButt()' function:
    mObj[MESSAGES_DELETED_BY] = [String]()

- Added this line into the 'queryMessages()' function:
    query.whereKey(MESSAGES_DELETED_BY, notContainedIn: [currentUser.objectId!])

- Added this line into the 'saveLastMessageInChats()' function:
    chatsObj[CHATS_DELETED_BY] = [String]()

- Edited the 'let deleteChat = UIAlertAction()' function, in order to allow users to delete chat messages only for them, so the ones who they were talking to can still see all messages.

•• Into the Chats.swift file:
- Added this line into 'queryChats()' function:
    query.whereKey(CHATS_DELETED_BY, notContainedIn: [currentUser.objectId!])

**IMPORTANT**: IF THIS IS AN UPDATE FOR YOU, you must perform the following steps:
1. Compare your old files with the ones mentioned above, and perform code changes.
2. After you've performed the code changes, run the app and send at least a chat message to your test users by using the app.
3. Stop the app, enter your Parse Dashboard -> 'Messages' class, find the 'deletedBy' column and fill all its empty cells  by typing [ ] into each one, one by one (double-click into a cell -> type [ ] -> hit Enter)
4. Do the same thing into the 'Chats' class

January 8, 2019

- Added a TextField delegate function in 'Filters.swift' that allows you to type only numbers in the 'From price' and To price' TextFields

November 16, 2018

- Edited Settings.swift in order to dismiss the keyboard when you hit the Cancel button by adding this line of code into the 'cancelOptionButt()' function:

November 5, 2018

- Just changed the Documentation design

September 19, 2018

- Fixed the Sell Stuff button's position on iPhone XR and XS Max by using this code in Home.swift and Account.swift -> viewDidLoad() function:
    // iPhone X/S, iPhone XS Max, XR
    if UIScreen.main.bounds.size.height == 812 || UIScreen.main.bounds.size.height == 896 {
        sellStuffView.frame.origin.y = view.frame.size.height - 90 - sellStuffView.frame.size.height
        adsCollView.frame.size.height = adsCollView.frame.size.height - sellStuffView.frame.size.height

September 18, 2018

- Updated to Xcode 10 - Swift 4.2
- Added 2 launch images into Assets.xcassets/Brand Assets folder (the iPhone XS Max and XR images)

August 2, 2018

- Added a few lines of code into the 'viewDidLoad()' function on Home.swift and Account.swift files, in order to have the Sell Stuff button not to be hidden by the TabBar on the iPhone X:
    if UIScreen.main.bounds.size.height == 812 {
            // iPhone X
            sellStuffView.frame.origin.y = view.frame.size.height - 90 - sellStuffView.frame.size.height
            adsCollView.frame.size.height = adsCollView.frame.size.height - sellStuffView.frame.size.height

July 30, 2018

- First release, iOS 9.0 and above
- Native Xcode project, Swift language
- Compatible with all iOS devices


For any support requests, please contact me through my Profile’s Contact Form

Rate my Work

Your support is always greatly appreciated, from comments to product’s reviews, so please click here to rate your purchases!

Flag Counter