Inspiration

When a group of people go hunting together, they must be careful to hunt with sufficient distance between them due to the inherent danger of hunting.

The problem Shoot Safe solves

In order to make sure that hunters don't stray too close to one another's area, they have a large board in the middle of their base. When Joe is done hunting at the tree stand by the river, he must walk all the way back to the base and "pin in" to a different stand. Every single person, every single time.

What it does

Shoot Safe tracks the location of all of the Hunting Stands (the locations where a hunter will stay for several hours), which stands are occupied, and where the other hunters are.

Hunters can "pin out" (leave) their current stand and "pin in" to another stand on a map that everyone else can see from their iPhone or iPad. Easily keep track of everyone's location. Hunters keep in contact by calling one another but with Shoot Safe they can see where every other hunter is located. Marking the locations of the stands using GPS coordinates makes it easier to actually navigate to the tree stands.

How I built it

I build the app with the iOS SDK using Swift 2 and Xcode 7. I used Parse for a backend, login and as a database.

Challenges I ran into

I ran into a bug with the Swift parser in Xcode 7 which an Apple engineer helped me with. A bug report has been filed.

Accomplishments that I'm proud of

I found a bug in Xcode! Woo :)

What I learned

I really enjoy developing with Swift. Protocol extensions are fantastic for structuring code and adding new functionality. I ended up adding functionality to Parse, CLLocation, CLLocationManager, UIViewController, Swift Array, Swift Dictionary, MKMapView. The Swift type system made the functional approach a great fit for some parts of the application. Gists available here: https://gist.github.com/kevinrandrup

What's next for Shoot Safe

I will need to invest some more time to harden the syncing model and testing it in bad network conditions before I feel comfortable distributing it to users. Once I have done that, I will use TestFlight to deploy the app to a few users and iterate on their feedback. I eventually plan to develop an Android version and a Web app.

Built With

Share this project:

Updates