
Explore how dotnet maui enables cross-platform mobile apps from a single code base, using XAML, event-driven design, mobile storage options, SQLite for dotnet, and Visual Studio 2022.
Explore .NET MAUI, a multi-platform UI framework for native Windows, Android, iOS, iPadOS, and macOS. Develop with a single C# and XAML code base, using the base class library.
https://learn.microsoft.com/en-us/dotnet/maui/android/emulator/hardware-acceleration?view=net-maui-8.0
https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation?view=net-maui-8.0&tabs=visual-studio-code
Create and debug your first .NET MAUI app, explore project structure and components, and learn xaml syntax, layouts, resources, and navigation to build a functioning app.
Create your first .NET MAUI app by starting a Visual Studio project, selecting the .NET MAUI template in C#, naming it my first MAUI app, and selecting the framework.
Debug a .NET MAUI app by enabling Windows developer mode and using Android emulators in Visual Studio, then deploy, run, and test button interactions.
Explore the single .NET MAUI project structure, including Program.cs, App.xaml, MainPage.xaml, App Shell, and resources, and learn how platform folders and launchSettings.json configure behavior.
Create a .NET MAUI mobile page with C#, building a test page using a scroll view and stack layout, adding a label and button with an on clicked event.
Create controls with Xaml in a .NET Maui app by defining a content page, centering a label and button, wiring a click event, and reviewing the code-behind and initialize component.
Explore Maui layouts by creating a content page, applying margins and padding, and arranging controls with vertical stack and grid layouts, including column definitions, auto and fixed widths.
Standardize XAML with markup extensions to expose a global font size, enabling a single change to propagate across multiple labels via a centralized value.
Define platform specific values in a single .NET MAUI code base by using device info platform and on platform markup to tailor padding and styling for iOS and other devices.
Create a static shared resources class in a .NET MAUI app to define read-only colors, such as a font color via RGB, and reference them in XAML for consistency.
Implement flyout navigation with a hamburger to access multiple pages. Add icons and resources for the menu, then explore tabbed navigation with a tab bar and shell content.
Build a foundational .NET MAUI mobile app by creating pages, wiring navigation, and handling events in C# code-behind, then prepare for a fuller app.
Build car listing app to explore mvvm and crud concepts with sqlite local storage and create, read, update, and delete operations, using the mvvm community toolkit for dynamic mobile development.
Create a .NET MAUI project in Visual Studio, set up folders for models, views, and viewmodels, and explore MVVM patterns, bindings, and preparing for data models and debugging.
Create a car data model with id, mc, and vin fields; add a car marts class that holds a list of cars to illustrate the model view view model pattern.
Create a car service to taxi data from the data source to the app, returning a list of static car objects for the nvme pattern view model to consume.
Explore the MVVM pattern, where the model, view, and view model separate data, UI, and logic, enabling binding, commands, and asynchronous operations for responsive apps.
Learn how to adapt to breaking changes in the Community Tool Kit Library by replacing notify change with notify property changed and replacing ICommand with RelayCommand in view models.
Implement the MVVM pattern in .NET MAUI by building a base entity and base view model with observable properties, and leveraging the Microsoft MVVM toolkit for change notifications.
Set up the car list view model with dependency injection and an observable cars collection. Implement an asynchronous get car list command that manages loading and errors with alerts.
Learn how dependency injection enables inversion of control by wiring services like car service and car list view model through constructor injection, with singleton lifetime and binding context usage.
Implement a collection view with a data template in .NET MAUI, bind to an observable car list via MVVM, and fetch car data using a command.
Enhance the list page aesthetics with a refreshed view wrapping the collection view, grid layout, and margins. Bind pull-to-refresh to the car list command and enable tap gestures for details.
Learn to implement a details page in a .NET MAUI app by passing a full object through navigation, wiring commands, view models, and data binding to display car details.
Explore storage options in .NET MAUI with preferences for key-value data, file system storage using JSON serialized lists, and the basics of SQLite via Sequel Lite for relational data.
Configure a sqlite database in a .NET MAUI app by modeling a car as a cars table with a primary key and unique vin, using sqlite-net-pcl and a car service.
Learn to set up a .NET MAUI form to add and delete records using two-way bindings, commands, and grid layouts. Implement car add and delete operations with live list updates.
Explore finishing a data-driven .NET MAUI app with CRUD, implementing update in edit mode, binding car fields via observable properties, updating the database, and clearing the form after save.
Build a supporting api with dotnet minimal api and ef core, deploy locally, and explore platform specific operations like network vs local storage based on connectivity, including Android network access.
Build and consume a RESTful API to power mobile apps, mastering CRUD operations with get, put, post, delete, and the principles of uniform, stateless, layered API design.
Set up a web api project named car list update api using .NET 6 and Visual Studio 2022, choosing a minimal api approach over controllers and enabling open api.
Set up a cross origin resource sharing policy to allow all traffic to the API. Configure origins, headers, and methods, and apply it via middleware in the app.
Configure a sqlite database for the api with entity framework core, set up the db context, and seed car data; then create and apply migrations to build the database.
Configure and test CRUD API endpoints in a NET MAUI minimal API, using swagger to explore get, post, put, and delete routes for cars.
learn to test api endpoints using swagger, explore get responses as an array of cars, verify by id with 200 or 404, and perform update and delete operations.
Prepare your server for api deployment by installing the windows hosting bundle for .NET 6, restarting IIS, and configuring subsequent code changes to deploy the API to your machine.
Publish the api locally by configuring a local server with IIS and updating database paths. Create a publish profile and deploy to a local app pub folder for mobile access.
Modify the androidmanifest.xml to enable the network security config. Open with the source code text editor, not the GUI editor, to edit the XML.
Configure the Android emulator to access non-SSL endpoints by adding a network security config and manifest reference, allowing clear text traffic to localhost addresses like 10.0.2.2 for development.
Refactor Maui app for API communication by adding car API service, HTTP client, base addresses, and CRUD operations with JSON serialization.
Refactor the car list and details modules to handle online and offline data via a network access model, fix API calls, and improve user alerts and UI bindings.
Refactor enables full crud via database, local storage, or api across devices. Test on Windows, Android, and iOS, and explore custom themes, dark mode, and native features.
Add identity core to your minimal api and configure endpoint authentication to require authenticated access, including mobile app registration and login via JWT-based tokens with RBAC and claims.
Explain authentication vs. authorization and how Identity Core uses cookies and bearer tokens (JWT) to secure .NET MAUI apps, store tokens locally, and enforce roles and claims for API access.
Add identity to API by integrating identity core, configuring db context as identity db context, and implementing entity framework stores with migrations for authentication, authorization, and roles, and seeding users.
Create a /login endpoint with a login DTO, fetch the user via user manager, validate the password, return an auth response with user id, username, and a placeholder access token.
Add a loading page and login page in a .NET MAUI app, using MVVM to check a token in secure storage and route to login or main page.
Implement a login page in .NET MAUI by creating a login view model, binding username and password to the user interface, validating input, and scaffolding API-based authentication with role-based navigation.
Seed default roles and users in the API by configuring identity roles and users, hashing passwords, and assigning user roles, then run migrations to finalize.
Configure jwt authentication and authorization in a dotnet maui api by setting issuer, audience, and secret key, enabling jwt bearer, validating token lifetime, and applying a global fallback policy.
Generate a jwt by collecting user roles and claims, sign with sha-256 using a security key, and include issuer, audience, and a short utc expiry.
Implement a robust login flow in a .NET MAUI app: authenticate to a login endpoint, securely store the token, set authorization headers, and navigate to the main page.
Learn to adjust app flow and layout in .NET MAUI by building a role-aware flyout menu and header. Render administrator and user views dynamically based on role and navigation templates.
Implement logout for .NET MAUI apps via a logout page and its view model, remove the token from secure storage, and navigate to the login page.
Recap of adding identity tables and roles, implementing a login endpoint that returns a JWT access token, and building mobile login/logout flows with token-based authentication and guarded endpoints.
Package and publish an Android app using Dotnet Maui by deploying the API to Azure, signing and packaging the app for the Play Store, and producing an installable apk.
Publishes the API to Azure by automating migrations on startup, deploying to the root, and seeding data, then creates a publish profile and tests with Swagger.
Modify the app to switch between local and Azure hosted APIs with a get_base_address function, using debug versus release mode and Android local host to ensure login.
Learn to configure an Android MAUI app, validate package identifiers and versioning, generate a keystore, sign the release, and publish the APK to the Google Play store.
Conclude by examining dot net maui components and the Nvme pattern, building and securing a minimal API, and hosting or consuming it in a mobile app with local sql database.
Build cross-platform mobile applications with .NET MAUI, C#, XAML, MVVM, SQLite, REST APIs, authentication, and Azure deployment.
.NET MAUI is Microsoft’s modern framework for building native mobile and desktop applications from a single .NET codebase. In this course, you will learn how to create practical cross-platform apps using C#, XAML, Visual Studio, and the MVVM Community Toolkit.
This course is designed for C# developers who want to move into mobile app development and learn how to structure, style, connect to data, and prepare .NET MAUI applications for deployment.
You will start with the fundamentals of .NET MAUI, including project structure, XAML controls, layouts, styles, data binding, navigation, and event-driven development. You will then apply the MVVM pattern to organize your application logic and build maintainable mobile app features.
As the course progresses, you will work with local data using SQLite, connect your mobile app to a backend API, secure application workflows with authentication and authorization, and consume RESTful services from your .NET MAUI app.
You will also learn how to create an ASP.NET Core Minimal API, publish the API to Microsoft Azure, connect your mobile app to the hosted API, and sign and publish an Android application.
What you will learn
You will learn how to:
Build cross-platform mobile apps with .NET MAUI and C#
Design user interfaces with XAML controls, layouts, and styles.
Use data binding and the MVVM pattern in .NET MAUI applications.
Apply the MVVM Community Toolkit to simplify mobile app architecture.
Navigate between pages and manage user interactions.
Store local data using SQLite.
Build and consume an ASP.NET Core Minimal API.
Connect a .NET MAUI app to RESTful backend services.
Secure mobile app workflows using authentication, authorization, and JWT
Publish a backend API to Microsoft Azure.
Sign and prepare an Android app for release.
Troubleshoot common development and deployment issues
Why this course is useful
Many mobile courses focus only on screens and controls. This course goes further by showing how a .NET MAUI app can work with local storage, backend APIs, authentication, and cloud-hosted services.
That gives you a more realistic mobile development workflow and helps you understand how mobile apps interact with real application backends.
Technologies covered
.NET MAUI
C#
XAML
Visual Studio
MVVM
MVVM Community Toolkit
SQLite
ASP.NET Core Minimal API
REST API consumption
JWT authentication
Microsoft Azure
Android signing and publishing
Development environment note
The course is primarily demonstrated on Windows using Visual Studio and Android tooling. The .NET MAUI code is designed for cross-platform development, but testing and publishing iOS apps requires Apple hardware and the appropriate Apple developer tooling.
Who this course is for
This course is for:
C# developers who want to build mobile apps with .NET MAUI
.NET developers moving from web, desktop, or backend development into mobile development
Xamarin.Forms developers who want to understand the .NET MAUI workflow
Developers who want to build mobile apps with a shared .NET codebase
Learners who want practical experience with XAML, MVVM, SQLite, APIs, authentication, and Azure deployment
Developers who want to prepare Android apps for publishing
Prerequisites
You should have basic C# programming experience and be comfortable working with Visual Studio. Prior mobile development experience is not required. Basic knowledge of APIs and databases is helpful, but the course walks through the key concepts step by step.