Geo Contacts is a cross-platform mobile contact application sample for iOS, Android, and Windows built with Xamarin.Forms and leverages several services inside of Azure including Azure AD B2C, Functions, and Cosmos DB.
See the full session from Build 2018 here: https://channel9.msdn.com/Events/Build/2018/BRK2429
Sample data for this application was imported from the Microsoft Cloud Developer Advocates (CDAs). When a CDA logs in (who is part of Azure Active Directory) they are able to update their location anywhere in the world. All users have the ability to skip login and browse our beautiful contact list of CDA and find CDAs that are nearby.
Since CDAs travel often to help developers around the world build amazing things we built into the application a way for CDAs to update their current city/state/country and a way for other CDAs to see who is nearby. This leverages built in capabilities of the devices such as geolocation and also leverages advanced geolocation capabilities of CosmosDB for fast queries.
Used directly for all authentication in the app. CDAs can log in and we use this authentication with our Azure Function.
Our CDAs are located all through the world. We leverage CosmosDB for it's geo-replication to ensure optimal performance in the mobile applications. We also leverage Cosmo sDB advanced queries to get specific data based on the user's geolocation.
When checking in our CDAs can add their current mood by taking a photo of their face and then the Cognitiver Services API will analyze their emotion and return an emoji to be synced.
We use serverless architecture for several features of the application including:
- Updating geolocation data. The CDA will update their location with an Azure Function that will detect their city/state/country and get an annonymous Latitude and Longitude for that location. This ensure privacy so exact location is not stored.
- This then updates Cosmos DB with their new location.
Used extensively for Continuous Integration and Deployment, while providing powerful analytics and crash reporting that is imported directly into Application Insights.
- Xamarin.Forms
- Xamarin.Essentials
- Azure Cognitive Service: Face API
- Media Plugin
- MVVM Helpers
- Monkey Cache
- App Center - Build, Distribute, Analytics, Crash
- Multilingual Plugin
- Markdig
- Microsoft Identity Client
- Azure DocumentDb Core
- Bit by Ashley McNamara
- Cloud Neon Sign by Bryan Liston with permission
Under MIT (see license file)