{"id":21192212,"url":"https://github.com/dotnet-architecture/eshop-mobile-client","last_synced_at":"2025-07-10T03:31:31.273Z","repository":{"id":37010053,"uuid":"321648439","full_name":"dotnet-architecture/eshop-mobile-client","owner":"dotnet-architecture","description":"eShop mobile \u0026 desktop client built with .NET MAUI","archived":true,"fork":false,"pushed_at":"2024-05-07T18:20:26.000Z","size":20113,"stargazers_count":542,"open_issues_count":7,"forks_count":206,"subscribers_count":30,"default_branch":"main","last_synced_at":"2025-03-26T02:21:38.871Z","etag":null,"topics":["dotnet","dotnetmaui"],"latest_commit_sha":null,"homepage":"https://dotnet.microsoft.com/learn/maui/architecture","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dotnet-architecture.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-15T11:34:29.000Z","updated_at":"2025-02-23T20:54:33.000Z","dependencies_parsed_at":"2024-05-07T19:43:28.478Z","dependency_job_id":null,"html_url":"https://github.com/dotnet-architecture/eshop-mobile-client","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dotnet-architecture/eshop-mobile-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnet-architecture%2Feshop-mobile-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnet-architecture%2Feshop-mobile-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnet-architecture%2Feshop-mobile-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnet-architecture%2Feshop-mobile-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dotnet-architecture","download_url":"https://codeload.github.com/dotnet-architecture/eshop-mobile-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotnet-architecture%2Feshop-mobile-client/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264521188,"owners_count":23622099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","dotnetmaui"],"created_at":"2024-11-20T19:07:59.295Z","updated_at":"2025-07-10T03:31:26.262Z","avatar_url":"https://github.com/dotnet-architecture.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eshop-mobile-client\n\n\u003e eShop sample applications have been updated and moved to https://github.com/dotnet/eShop. Active development will continue there.\n\n`eshop-mobile-client` is a reference [.NET MAUI](https://dot.net/maui) multi-platform client app whose imagined purpose is to serve the mobile workforce of a fictitious company that sells products. The app allows you to manage the catalog, view products, and manage the basket and the orders.\n\n# Dependencies\n\nThough `eshop-mobile-client` mobile app relies on the repo [eShopOnContainers](https://github.com/dotnet-architecture/eShopOnContainers) for its backend but by default it uses its internal MockServices for all its functionalities. For more details refer to the [Setup](https://github.com/dotnet-architecture/eshop-mobile-client#setup) section.\n\n\u003cimg src=\"media/eShopOnContainers_Architecture_Diagram.png\" alt=\"eShopOnContainers\" Width=\"800\" /\u003e\n\n## Architecture\n\nThe app architecture consists of two parts:\n\n1. A .NET MAUI mobile app for iOS, macOS, Android, and Windows.\n2. Several .NET Web API microservices are deployed as Docker containers.\n\n### .NET MAUI App\n\nThis project exercises the following platforms, frameworks, and features:\n\n- .NET MAUI\n  - XAML\n  - Behaviors\n  - Bindings\n  - Converters\n  - Central Styles\n  - Animations\n  - IoC\n  - Messaging Center\n  - Custom Controls\n  - xUnit Tests\n- Azure Mobile Services\n  - C# backend\n  - WebAPI\n  - Entity Framework\n  - Identity Server 4\n\n### Backend Services\n\nAll the backend services-related code and components are maintained as [eShopOnContainers](https://github.com/dotnet-architecture/eShopOnContainers) repo.\n\n## Supported platforms\n\nThe app targets **four** platforms:\n\n- iOS\n- Android\n- macOS (must build and deploy from Mac)\n- Windows (must build and deploy from Windows)\n\n## Requirements\n\n- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) (2022 or higher) to compile C# language features\n  - **Visual Studio Community Edition is fully supported!**\n- .NET MAUI add-ons for Visual Studio (available via the Visual Studio installer)\n\nor\n\n- [Visual Studio Code](https://learn.microsoft.com/dotnet/maui/get-started/installation?tabs=visual-studio-code) configured for .NET MAUI development on Mac, Windows, or Linux. \n\n## Setup\n\n### 1. Ensure the .NET MAUI platform is installed\n\nYou can do that by following the steps mentioned in [Installing .NET MAUI](https://learn.microsoft.com/dotnet/maui/get-started/installation)\n\n### 2. Ensure .NET MAUI is updated\n\nVisual Studio will periodically automatically check for updates. You can also manually check for updates using the [Update Visual Studio](https://docs.microsoft.com/visualstudio/install/update-visual-studio) options.\n\n### 3. Project Setup\n\nRestore NuGet packages for the project.\n\n### 4. Ensure Android Emulator is installed\n\nYou can use any Android emulator or device. Refer to the [Android Emulator documentation](https://learn.microsoft.com/dotnet/maui/android/emulator/device-manager) for details on setup.\n\n\u003e **Note**: Android emulators cannot run well inside a virtual machine or over Remote Desktop or VNC since it relies on virtualization.\n\nTo deploy and debug the application on a physical device, refer to the [Debug on an Android device](https://learn.microsoft.com/dotnet/maui/android/device/setup) article.\n\n### 5. Optional iOS Deployment\n\nTo deploy to iOS you can directly deploy from a Mac machine or optionally from a Windows machine [directly to a device](https://learn.microsoft.com/dotnet/maui/ios/hot-restart) or by [pairing your Windows machine to a Mac](https://learn.microsoft.com/dotnet/maui/ios/pair-to-mac).\n\n### 6. Use Actual Microservices\n\nBy default `eshop` multiplatform client uses the internal mock services to let the user explore different sets of features in the app.\n\nBut if you want to test out the app using real services, you can do that too.\n\nFor that you'll need to do the following:\n\n1. Deploy the backend services of `eShop` applications from the [eShopOnContainers](https://github.com/dotnet-architecture/eShopOnContainers) repo. You can deploy the application to either [Local Kubernetes](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Local-Kubernetes) or [AKS](\u003chttps://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS)\u003e) environments.\n\n2. Enable microservices endpoint in the `Settings` section.\n\n  \u003cimg src=\"media/microservices-endpoint-enable.png\" alt=\"Microservices Endpoint Enable\" Width=\"300\" /\u003e\n\n  \u003cimg src=\"media/microservices-endpoint-configure.png\" alt=\"Microservices Endpoint Configure\" Width=\"300\" /\u003e\n\nIdentity Url : `http://\u003cYOUR_IP_OR_DNS_NAME\u003e/identity`\nMobile Gateway Shopping Url: `http://\u003cYOUR_IP_OR_DNS_NAME\u003e/mobileshoppingapi`\n\n3. Enable HTTP traffic.\n\n#### Android App\n\nYou'll also need to include the `\u003cYOUR_IP_OR_DNS_NAME\u003e` in the section `\u003cdomain includeSubdomains=\"true\"\u003e\u003cYOUR_IP_OR_DNS_NAME\u003e\u003c/domain\u003e` of the `network_security_config.xml` file to use `HTTP` traffic.\n\nFor more details refer to [Managing HTTP \u0026 Cleartext Traffic on Android with Network Security Configuration](https://learn.microsoft.com/dotnet/maui/data-cloud/local-web-services)\n\n#### IOS App\n\nYou'll need to make sure your `info.plist` file contains the following configuration.\n\n```xml\n  \u003ckey\u003eNSAppTransportSecurity\u003c/key\u003e\n  \u003cdict\u003e\n    \u003ckey\u003eNSAllowsArbitraryLoads\u003c/key\u003e\n    \u003ctrue/\u003e\n  \u003c/dict\u003e\n```\n\nFor more details refer to [Opting-Out of ATS](https://learn.microsoft.com/en-us/dotnet/maui/data-cloud/local-web-services#ios-ats-configuration)\n\n\u003e **NOTE:** Please note, in production scenario you'll the services which uses `HTTPS` endpoint.\n\n### 7. Setup Google Maps for Android\n\nIn the `eShopOnContainers\\Platforms\\Android\\AndroidManifest.xml` you must replace the value of the `com.google.android.geo.API_KEY` with a valid Google Maps API key.\n\n```xml\n\u003cmeta-data android:name=\"com.google.android.geo.API_KEY\" android:value=\"YOUR_KEY_GOES_HERE\" /\u003e\n```\n\nFor more details refer to [.NET MAUI Map - Get a Google Maps API key](https://learn.microsoft.com/dotnet/maui/user-interface/controls/map#get-a-google-maps-api-key).\n\n## Screenshots\n\n\u003cimg src=\"media/auth_screen.png\" alt=\"Login\" Width=\"210\" /\u003e\n\u003cimg src=\"media/login_screen.png\" alt=\"Login\" Width=\"210\" /\u003e\n\u003cimg src=\"media/catalog_screen.png\" alt=\"Catalog\" Width=\"210\" /\u003e\n\u003cimg src=\"media/profile_screen.png\" alt=\"Profile\" Width=\"210\" /\u003e\n\u003cimg src=\"media/order_screen.png\" alt=\"Order details\" Width=\"210\" /\u003e\n\n## Clean and Rebuild\n\nIf you see build issues when pulling updates from the repo, try cleaning and rebuilding the solution.\n\n## Troubleshooting\n\n## Licenses\n\nThis project uses some third-party assets with a license that requires attribution:\n\n- [.NET MAUI Community Toolkit](https://github.com/CommunityToolkit/Maui)\n- [MVVM Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit)\n- [PCLCrypto](https://github.com/AArnott/PCLCrypto)\n- [IdentityModel](https://github.com/IdentityModel)\n\n## Copyright and license\n\n- Code and documentation copyright 2023 Microsoft Corp. Code released under the [MIT license](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotnet-architecture%2Feshop-mobile-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdotnet-architecture%2Feshop-mobile-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotnet-architecture%2Feshop-mobile-client/lists"}