iOS 13.0+
Like this project? Give it a star! 🌟
https://apps.apple.com/fr/app/toilet-radar-paris/id6448686615
Toilet Radar Paris is an application that provides tourists and locals with a convenient way to find public toilets in Paris. The application features easy-to-use functionality including creating routes on the map, calculating time and distance from the user to the point and then changing this data as the user approaches their destination, as well as showing the details in an intuitive way. The application is fully localized to 9 most common languages spoken in Paris including Italian, Spanish and simplified Chinese.
Idle
Map view with constructed route
Details revealed in the bottom sheet
Prompting user to enable location services
Typical user flow
Toilet Radar is a MVVM application that uses RxSwift as a reactive backbone of the MVVM pattern. RxSwift operators and traits are extensively used
in the application.
The map SDK of my choice is MapboxMaps. I used some techniques that are not covered in SDK documentation
such as displaying device orientation and wrapping Mapbox classes in reactive API.
The application uses Mapbox Directions for polyline constructing and getting calculated distance and time.
Distance and time are dynamically recalculated with each location update.
The app demonstrates conformance to SOLID principles, good View-ViewModel coupling and uses a rich arsenal of tools that come with the Swift language.
Feel free to benchmark any practices used in this app in your own projects.
- RxSwift - RxSwift is used to make reactive bindings between View and ViewModel
- Alamofire - Alamofire is used to make API calls
- MapboxMaps - MapboxMaps SDK is the engine used for displaying map
- MapboxDirections - Mapbox Directions is a powerful navigation SDK for routing and working with locations, polylines, route legs, routes etc.