Foursquare_clone_app is my pet-project. This is a stripped-down version of the Foursquare app with some of my functionality different from the original version. The application is based on the MVC pattern. The project is divided into modules that are implemented through a router. Also worked in practice with Networking, CoreLocation, MapKit, Keychain.


The home screen of the application is the HomeViewController:

Screenshot 2021-03-05 at 11 12 52

  • Image is uploaded via Kingfisher.
  • The label in the picture displays the coordinates of the user.
  • By clicking on the search button or on one of the standard categories, we get to the search screen.
  • If the user has not allowed to use the data about his location, then the default coordinates are used.

Search screen:

Screenshot 2021-03-05 at 11 23 26

  • By clicking on the place you need, we are prompted to select a controller option to display detailed information about the place.

Screenshot 2021-03-05 at 12 59 16

Detail screen:

  • With ScrollView:

Screen_Recording_2021-03-05_at_13 05 36

  • With TableView:

Screen_Recording_2021-03-05_at_13 13 15

* There is a bug with a button for showing detailed information about the operating time.
  • Did tap on the picture to open the screen for full screen view of the picture

Map Screen:

Screen_Recording_2021-03-05_at_19 29 57


Screen_Recording_2021-03-05_at_13 33 32-2

Profile tab is AccountViewController:

When the user is not logged in, the initial state of the controller is displayed:

Screenshot 2021-03-05 at 11 13 12

  • Did presed on the “Login” button opens the SFSafariViewController with the original Foursquare site. After authorization, we return to the application and save the access token in the keychain.

When the user is logged in, the authorization state of the controller is displayed After authorization, the download of user data begins

Screenshot 2021-03-05 at 11 21 53

  • Did pressed on the exit button, we remove the access token and log out of the user account.
  • By clicking on the button more (in the upper right corner) opens the settings screen.

Settings screen:

Screenshot 2021-03-05 at 12 25 57

  • The switch activates local notifications.
  • The “About Us” button opens a controller with a WebView and displays the apple site.
  • The “Operating Conditions” button opens the controller with WebView and displays the local PDF file.
  • The “Privacy” button opens a controller with a TextView and displays the text formatted via attributes.

Lists tab – ListsViewController:

Screenshot 2021-03-05 at 11 22 14

  • Without authorization, the user cannot create new lists.

When creating a list, a custom alert appears:

Screenshot 2021-03-05 at 11 22 51

  • After clicking the create button, we make a post request to the server.


View Github