I took a trip to Stockholm last year, but it wasn't until the last day that I started to know my way around. The car rides I took were disorienting as I didn't know where I was, or what I was seeing. I took a lot of photos on those rides, but I couldn't tell you what were in many of them.
What it does
Tour Guide automates the creation of a scenic route to your destination. You can share this to your driver for a small fee, and get a tour of the top-rated sights of a city. The app automatically narrates information about these sights as you approach them. With a synced Canon camera, any photos you take are automatically tagged with the sight, along with the audio information. This trip gets saved for your review, and you can share it with others.
How I built it
I wrote a native iOS app in Swift and integrated several third-party services. Top-rated sights in your area are queried from Amadeus. I use HERE fleet routing algorithms to generate an optimized driving route from your starting point, past the sights, and to your destination. I also use HERE maps to display the route, sights, and your location. A YubiKey is used for user login authorization to secure your account against others charging your Tour Guide account. I use the Canon CCAPI to watch for photos taken with your camera and sync them to your trip.
Challenges I ran into
This was a lot of pieces to get working, and time was my biggest obstacle. I had plans for more features, but feel I got the main ones implemented. I had to learn a lot about WebAuthn and FIDO2 to properly integrate the YubiKey into my login process. Amadeus had some limitations for the free account I was using, and I uncovered a back-end bug that they helped me work around. HERE routing is very powerful, but figuring out a way to make it work for me took a lot of investigation. The Canon CCAPI does not have an iOS SDK, so I had to create my own services to monitor and extract photo info.
Accomplishments that I'm proud of
I have enough of the app working to properly demonstrate the potential of the Tour Guide service.
What I learned
I learned a lot about WebAuthn and various authentication processes. This was my first deep dive into the HERE API, and while I learned a lot, there's still more I'd like to investigate. Implementing a service layer on top of the Canon CCAPI was something new for me.
What's next for Tour Guide
The exiting features need quite a bit of work to be commercially viable. A true account backend, a full payment service, options and preferences for tours, better sources for audio content, and self-driving and even walking tours, are key capabilities that need finishing. I believe there could be a tour marketplace, where tour creators can be compensated by users choosing to follow one of their tours. Audio streams should be more plentiful, with crowd-sourcing of neighborhood tips and guides, which would be very beneficial for walking tours.