Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/samkhawase/LooLocator
A simple iOS app that fetches the crowd-sourced data from OpenStreetMaps, and shows toilets within walking distance.
https://github.com/samkhawase/LooLocator
carthage ios openstreetmap quick swift xcode
Last synced: 3 months ago
JSON representation
A simple iOS app that fetches the crowd-sourced data from OpenStreetMaps, and shows toilets within walking distance.
- Host: GitHub
- URL: https://github.com/samkhawase/LooLocator
- Owner: samkhawase
- License: mit
- Created: 2018-02-26T09:32:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-10-21T14:46:06.000Z (about 4 years ago)
- Last Synced: 2024-05-03T06:39:10.669Z (6 months ago)
- Topics: carthage, ios, openstreetmap, quick, swift, xcode
- Language: Swift
- Size: 229 KB
- Stars: 235
- Watchers: 12
- Forks: 18
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# LooLocator
Find Amenities (*like toilets*) near you! The simple iOS fetches the crowd-sourced data from OpenStreetMap, and shows toilets within walking distance.
User can then use AppleMaps to find walking directions to the amenity.## Design Rationale
The following series of bite-sized posts explain the design rationale behind creating the app:
1. [Part 1: Introduction - Writing a modular, and testable iOS App in Swift using MVVM pattern](https://samkhawase.com/blog/mvvm_swift_introduction/)
2. [Part 2: Defining the Data Model](https://samkhawase.com/blog/mvvm_swift_model/)
3. [Part 3: The Location provider](https://samkhawase.com/blog/mvvm_swift_location_provider/)
4. [Part 4: Defining the networking layer](https://samkhawase.com/blog/mvvm_swift_networking/)
5. [Part 5: The ViewModel](https://samkhawase.com/blog/mvvm_swift_view_model/)
6. [Part 6: The Final App - Putting it all together](https://samkhawase.com/blog/mvvm_swift_final_app/)## Getting Started
Here are the steps to get started with the project on your local machine:
1. Clone the git repositiory
2. Run `carthage update --platform iOS --cache-builds --no-use-binaries` to fetch the dependencies.
3. If running on the simulator, you can edit the scheme and set the simulated location in Xcode. (*E.g. Hongkong*)
4. Run the project via Xcode.### Prerequisites
What things you need to install the software and how to install them
1. Mac OS X
2. Xcode 9
3. [Carthage](https://github.com/Carthage/Carthage)
4. Optional: [xcpretty](https://github.com/supermarin/xcpretty)## Running the tests
The app uses BDD style tests using Quick and Nimble. There are unit tests written to test the LocationManager, APIClient (*with Network mocks*), and ViewModel behaviors.
To run the test, enter the command on the command line.```
xcodebuild -scheme 'LooLocator' \
-sdk iphonesimulator \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 6s,OS=latest' \
test | xcpretty
```The output will be similar to
```
Test Suite LooLocatorTests.xctest started
ApiClientTests
✓ Amenity_Request_tests__should_fetch_amenities (0.027 seconds)
LocationProviderTests
✓ Given_a_LocationProvider__When_it_s_started_with_LocationManager__then_starts_location_updates (1.547 seconds)
✓ Given_a_LocationProvider__When_it_s_started_with_LocationManager__then_provides_current_location (0.001 seconds)
MapViewModelTests
✓ Given_a_MapViewModel__get_current_location (0.002 seconds)
✓ Given_a_MapViewModel__should_get_all_amenities_in_range (0.004 seconds)
```## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
## Acknowledgments
* This project is inspired by the MapKit article from [RayWenderlich](https://www.raywenderlich.com/160517/mapkit-tutorial-getting-started)
* The [Overpass Turbo API](https://overpass-turbo.eu/)