Foursquare clone app with swift

Foursquare_clone_app

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.

Description

The home screen of the application is the HomeViewController:

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

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

Detail screen:

  • With ScrollView:

  • With TableView:

* 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:

FullScreenImageViewController:

Profile tab is AccountViewController:

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

  • 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

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

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

  • Without authorization, the user cannot create new lists.

When creating a list, a custom alert appears:

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

GitHub

View Github