Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/IvanBogdantsev/Toilet-Radar-Paris

A convenient app to find public toilets in Paris
https://github.com/IvanBogdantsev/Toilet-Radar-Paris

Last synced: 2 months ago
JSON representation

A convenient app to find public toilets in Paris

Awesome Lists containing this project

README

        

# Toilet Radar Paris
*iOS 13.0+*

**Like this project? Give it a star!** :star2:

### Link to App Store

https://apps.apple.com/fr/app/toilet-radar-paris/id6448686615

### General concept
*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.

### How it looks?
*Idle*

*Map view with constructed route*

*Details revealed in the bottom sheet*



*Prompting user to enable location services*

*Typical user flow*

![Screen_Recording_2023-05-07_at_15_53_40_AdobeExpress-2](https://user-images.githubusercontent.com/117449167/236682254-e501cd3c-13dc-4b37-8587-336cf4db92fa.gif)

### Technical Notes
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](https://github.com/mapbox/mapbox-maps-ios). 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](https://github.com/mapbox/mapbox-directions-swift) 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.*

### 3rd Party Libraries
* RxSwift - [RxSwift](https://github.com/ReactiveX/RxSwift) is used to make reactive bindings between View and ViewModel
* Alamofire - [Alamofire](https://github.com/Alamofire/Alamofire) is used to make API calls
* MapboxMaps - [MapboxMaps SDK](https://github.com/mapbox/mapbox-maps-ios) is the engine used for displaying map
* MapboxDirections - [Mapbox Directions](https://github.com/mapbox/mapbox-directions-swift) is a powerful navigation SDK for routing and working with
locations, polylines, route legs, routes etc.