The goal of the app is using FourSquare API's navigate a map whith the current user location and show pins with the nearest places. And the posilility to show more information of that place in a specific view.
| Map | Complete detail | Less detail |
|---|---|---|
![]() |
![]() |
![]() |
The code has two viewcontrollers. The map and the view detail.
The map itself is using MapKit to create the map. And using FourSquareService create the API call to get the data. Tapping on an annotation will show basic information about the place and the posibillity to open a new view with more details. Moving arround will pop a button to show more places in that specific position and will dismiss the current card.
The view is composed by a scroll view and a stack view. The main idea behind this to use builders. The builder build a specific part of the view, creating atomics views. Based on the API response, each builder knows if hast to draw the view and in wich way to do it. In a more complex view, can be added builders who has more builders on it.
The presenter of the view has the first array of builders. Each one knows what to do. For example, DetailVenueAddressBuilder if there is specific data will create the view and populate, and DetailVenueSocialBlockBuilder will create the builders for the specific social media who is present on the API response
Alamofire is an HTTP networking library written in Swift.
Nuke provides a simple and efficient way to download and display images in your app.
The ultimate API for iOS & OS X Auto Layout
The project was created using cocoapods 1.7.1 and Xcode 10.2.1
- Clone the code
- Run
bundle install - Go to FourSquare
- Run
bundle exec pod install - Open
FourSquare.xcworkspace
The code was construct in a way that dependency injection will be easy to use. This help you to create mocks for specific parts of the code or external libraries, like the rest client.


