All Projects → samkhawase → Loolocator

samkhawase / Loolocator

Licence: mit
A simple iOS app that fetches the crowd-sourced data from OpenStreetMaps, and shows toilets within walking distance.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Loolocator

Alamofire
Elegant HTTP Networking in Swift
Stars: ✭ 36,896 (+15667.52%)
Mutual labels:  xcode, carthage
Sqift
Powerful Swift wrapper for SQLite
Stars: ✭ 119 (-49.15%)
Mutual labels:  xcode, carthage
Device
Light weight tool for detecting the current device and screen size written in swift.
Stars: ✭ 1,503 (+542.31%)
Mutual labels:  xcode, carthage
Collectionnode
a collectionView made for Sprite Kit
Stars: ✭ 96 (-58.97%)
Mutual labels:  xcode, carthage
Cdmarkdownkit
An extensive Swift framework providing simple and customizable markdown parsing.
Stars: ✭ 158 (-32.48%)
Mutual labels:  xcode, carthage
Nextgrowingtextview
📝 The next in the generations of 'growing textviews' optimized for iOS 8 and above.
Stars: ✭ 1,540 (+558.12%)
Mutual labels:  xcode, carthage
Microfeatures Example
📦📱 Example of iOS app built using the uFeatures architecture
Stars: ✭ 112 (-52.14%)
Mutual labels:  xcode, carthage
Corenavigation
📱📲 Navigate between view controllers with ease. 💫 🔜 More stable version (written in Swift 5) coming soon.
Stars: ✭ 69 (-70.51%)
Mutual labels:  xcode, carthage
Donut
Donut is a library for arranging views circularly like a donut.
Stars: ✭ 141 (-39.74%)
Mutual labels:  xcode, carthage
Natrium
A pre-build (Swift) script to alter your Xcode project at pre-build-time per environment, build configuration and target.
Stars: ✭ 131 (-44.02%)
Mutual labels:  xcode, carthage
Pluggableappdelegate
!! No longer supported !! A lightweight service-oriented AppDelegate for iOS, made in Swift.
Stars: ✭ 96 (-58.97%)
Mutual labels:  xcode, carthage
Carting
🚘 A simple tool for updating Carthage script phase
Stars: ✭ 182 (-22.22%)
Mutual labels:  xcode, carthage
Xmlmapper
A simple way to map XML to Objects written in Swift
Stars: ✭ 90 (-61.54%)
Mutual labels:  xcode, carthage
Swifterswift
A handy collection of more than 500 native Swift extensions to boost your productivity.
Stars: ✭ 10,706 (+4475.21%)
Mutual labels:  xcode, carthage
Loadingshimmer
An easy way to add a shimmering effect to any view with just one line of code. It is useful as an unobtrusive loading indicator.
Stars: ✭ 1,180 (+404.27%)
Mutual labels:  xcode, carthage
Shari
Shari is the alternative to the library of UIPickerView(drum roll) in Swift. You can select a item using UITableView.
Stars: ✭ 111 (-52.56%)
Mutual labels:  xcode, carthage
Swiftymessenger
Swift toolkit for passing messages between iOS apps and extensions.
Stars: ✭ 48 (-79.49%)
Mutual labels:  xcode, carthage
Luautocompleteview
Highly configurable autocomplete view that is attachable to any UITextField
Stars: ✭ 55 (-76.5%)
Mutual labels:  xcode, carthage
Croc
Swift emoji string parsing library
Stars: ✭ 124 (-47.01%)
Mutual labels:  xcode, carthage
Irldocumentscanner
A drop-in Objective-C ViewController that will Automatically scan a document for you you.
Stars: ✭ 172 (-26.5%)
Mutual labels:  xcode, carthage

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
  2. Part 2: Defining the Data Model
  3. Part 3: The Location provider
  4. Part 4: Defining the networking layer
  5. Part 5: The ViewModel
  6. Part 6: The Final App - Putting it all together

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
  4. Optional: 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 file for details

Acknowledgments

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].