Appsample-Photosharing
PhotoSharingApp is a Universal Windows Platform (UWP) app sample that demonstrates real-world social media experiences around photo sharing.
With this app, users can earn virtual gold by uploading and sharing photos with people from all around the world. They can upload photos of their cats, shoes, houses, or last vacations, and see how they compete against other users. Are their photos a great gold source? Are they among the most generous contributors? They can find out on the app's leaderboard.
The goal of this app is to provide a complete, end-to-end example of a real-world app that uses a variety of UWP features, and exhibits design and development best practices. This makes it a great source of code you can copy into your own apps. It also provides an example of what a real-world app architecture might look like. The decoupled architecture makes it easy to reuse code or to make changes and build your own photo sharing app, which you can then publish in the Windows Store.
See our post on the Windows Apps Team blog: SnapGold
Application Screenshots:
- Categories Page Desktop Mobile
- Photo Stream Desktop Mobile
- Photo Details Page Desktop Mobile
- Profile Page Desktop Mobile
App features
The app allows users to:
- Browse photo categories and navigate into photo collections and photo details.
- Take and upload photos directly in the app or upload an existing photo.
- Give gold and add comments to photos uploaded by other users.
- Receive push notifications when users are given gold for uploaded photos.
- Explore a leaderboard of users with the most gold, users that have given the most gold to other photos, and the photos that have received the most gold.
- Sign in with a Microsoft, Facebook, Google, or Twitter account.
- Report content as abusive, inappropriate, or spam.
- Buy virtual gold using in-app purchase.
Technology overview
PhotoSharingApp demonstrates the following features:
-
Adaptive UI using the SplitView control (see video on Channel 9) and adaptive triggers:
-
In-app purchase (see the Windows.ApplicationModel.Store namespace):
-
Separation between user interface, business logic and data models (MVVM):
PhotoSharingApp.Universal.Models, PhotoSharingApp.Universal.Views, PhotoSharingApp.Universal.ViewModels
-
Extensibility and flexibility using the Unity dependency container:
PhotoSharingApp.Universal.Unity, PhotoSharingApp.Universal.Registries
-
How to connect your app to an Azure App Service
-
Real-world service implementation for storing uploaded photos using Azure DocumentDB
-
Sign-in with Azure Mobile Apps:
PhotoSharingApp.AppService.Shared.Repositories.DocumentDbRepository
-
Usage analysis with Visual Studio Application Insights
-
Push Notifications (see Integration with App Service Mobile Apps in Azure Notification Hubs:
PhotoSharingApp.Universal.Services.NotificationRegistrationClient
Running the sample
For instructions on setting up the sample, see Getting Started.
Project overview
For an overview of the projects structure and namespaces, see Project overview.
Technical deep dive
For an explanation of how the sample integrates multiple technologies, see Technical deep dive.