Skiing is pretty much fun, but even more fun in a group. However, you might struggle finding your friends in large ski resorts, which can encompass more than 200 kilometers of pistes. Calling or messaging them is an option, however, you have to take off your gloves and your hands become cold pretty fast. Additionally, finding the best way to your friends can be challenging too.
What it does
Our app tracks the position of the user and passes this information to your friends. The user can start the navigation to a friend by saying his/her nickname. The app guides the user via auditive guidance like a satnav in a car. We plan to integrate more features based on the navigation later, such as calculating round trips.
How we built it
We decided to use a native Android app as the user interface and an API backend that handles user authentication and orchestrates services. The most important service is a C++ ski routing engine that uses ski resort data we extracted from open street map resources and the user locations from the API backend. The ski resort is modeled as a directed and weighted graph, where edges represent ski runs and lifts. We created the orchestration API backend with Java and Spring Boot. We created the Android app with Kotlin and RxJava.
Challenges we ran into
- Connectivity issues between client and backend (most probably because of restrictions of the local network)
- OSM tags often do not adhere to a standard, so we had to reverse engineer the meaning by looking on visualized data
- We had to spend considerable time on getting our head around the used techniques
- Usage of AI API of Google required too much effort to manage the integration within time constraints
- We could not create an IOS app because using Siri requires a payed subscription we do not have
Accomplishments that we are proud of
- Coupling of the three main parts (Android app, Java user management backend, C++ routing) despite of the different techniques
- To the best of our knowledge, there is no publicly available mapping application yet that can compute routes on ski runs. Google Maps, Bing Maps, Yandex Maps, and Here Maps partly show ski runs on their maps, but cannot use them for routing.
What we learned
- Integration of Google Assist and Google AI requires some effort to gain basic knowledge about the techniques
- Spring Boot allows creating APIs fast if you know the used conventions
- Open Street Map contains lot of usable data but some refinement is useful
What's next for SelchApp
- Improve input data for routing and support more ski resorts
- Integrate features know from satnavs into app
- Evaluate battery usage and optimize it
- Voice messages between friends