diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000..1a312f0
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,53 @@
+name: Docs
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - src/**
+ - docs/**
+ - .github/workflows/docs.yml
+ pull_request:
+ branches:
+ - main
+ paths:
+ - docs/**
+ - .github/workflows/docs.yml
+ workflow_dispatch:
+
+jobs:
+ generate-docs:
+
+ runs-on: windows-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup .NET Core 3.1
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 3.1.x
+
+ - name: Setup .NET 5.0
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 5.0.x
+
+ - name: Setup DocFX
+ uses: crazy-max/ghaction-chocolatey@v1
+ with:
+ args: install docfx
+
+ - name: DocFX Build
+ working-directory: docs
+ run: docfx .\docfx.json
+ continue-on-error: false
+
+ - name: Publish
+ if: github.event_name == 'push'
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: docs/_site
+ force_orphan: true
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 0000000..4378419
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,9 @@
+###############
+# folder #
+###############
+/**/DROP/
+/**/TEMP/
+/**/packages/
+/**/bin/
+/**/obj/
+_site
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..a7fe0b1
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,29 @@
+# XPlat Documentation
+
+This folder contains source code for the generation of XPlat's documentation.
+
+## Contributing to the docs
+
+### Install dependencies
+
+Download and install docfx on your computer.
+
+#### MacOS
+
+```
+brew install docfx
+```
+
+#### Windows
+
+```
+choco install docfx
+```
+
+### Running locally
+
+```
+docfx .\docfx.json --serve
+```
+
+This will run the docs on `http://localhost:8080`
\ No newline at end of file
diff --git a/docs/api/.gitignore b/docs/api/.gitignore
new file mode 100644
index 0000000..e8079a3
--- /dev/null
+++ b/docs/api/.gitignore
@@ -0,0 +1,5 @@
+###############
+# temp file #
+###############
+*.yml
+.manifest
diff --git a/docs/api/index.md b/docs/api/index.md
new file mode 100644
index 0000000..283261b
--- /dev/null
+++ b/docs/api/index.md
@@ -0,0 +1,10 @@
+---
+uid: api-docs
+title: Explore the APIs
+---
+
+# Explore the APIs
+
+Here you'll find all of the generated code documentation for the XPlat Windows APIs projects, similar to what you might find on Microsoft Docs!
+
+This documentation is designed to show you how each component of XPlat Windows APIs is constructed and provide a reference for you when building your projects.
diff --git a/docs/articles/available-packages.md b/docs/articles/available-packages.md
new file mode 100644
index 0000000..b5b0b49
--- /dev/null
+++ b/docs/articles/available-packages.md
@@ -0,0 +1,30 @@
+---
+uid: available-packages
+title: Available packages
+---
+
+# Available XPlat packages
+
+XPlat Windows APIs are available via NuGet. Each available package is detailed below.
+
+We have purposefully split the XPlat Windows APIs to allow you to pick and choose the specific components that your app needs to prevent bloat!
+
+| Package | Current | Preview |
+| ------ | ------ | ------ |
+| XPlat.ApplicationModel | [](https://www.nuget.org/packages/XPlat.ApplicationModel/) | [](https://www.nuget.org/packages/XPlat.ApplicationModel/) |
+| XPlat.ApplicationModel.DataTransfer | [](https://www.nuget.org/packages/XPlat.ApplicationModel.DataTransfer/) | [](https://www.nuget.org/packages/XPlat.ApplicationModel.DataTransfer/) |
+| XPlat.Core | [](https://www.nuget.org/packages/XPlat.Core/) | [](https://www.nuget.org/packages/XPlat.Core/) |
+| XPlat.Device.Display | [](https://www.nuget.org/packages/XPlat.Device.Display/) | [](https://www.nuget.org/packages/XPlat.Device.Display/) |
+| XPlat.Device.Geolocation | [](https://www.nuget.org/packages/XPlat.Device.Geolocation/) | [](https://www.nuget.org/packages/XPlat.Device.Geolocation/) |
+| XPlat.Device.Launcher | [](https://www.nuget.org/packages/XPlat.Device.Launcher/) | [](https://www.nuget.org/packages/XPlat.Device.Launcher/) |
+| XPlat.Device.Power | [](https://www.nuget.org/packages/XPlat.Device.Power/) | [](https://www.nuget.org/packages/XPlat.Device.Power/) |
+| XPlat.Device.Profile | [](https://www.nuget.org/packages/XPlat.Device.Profile/) | [](https://www.nuget.org/packages/XPlat.Device.Profile/) |
+| XPlat.Foundation | [](https://www.nuget.org/packages/XPlat.Foundation/) | [](https://www.nuget.org/packages/XPlat.Foundation/) |
+| XPlat.Media.Capture | [](https://www.nuget.org/packages/XPlat.Media.Capture/) | [](https://www.nuget.org/packages/XPlat.Media.Capture/) |
+| XPlat.Services.Maps | [](https://www.nuget.org/packages/XPlat.Services.Maps/) | [](https://www.nuget.org/packages/XPlat.Services.Maps/) |
+| XPlat.Storage | [](https://www.nuget.org/packages/XPlat.Storage/) | [](https://www.nuget.org/packages/XPlat.Storage/) |
+| XPlat.Storage.Pickers | [](https://www.nuget.org/packages/XPlat.Storage.Pickers/) | [](https://www.nuget.org/packages/XPlat.Storage.Pickers/) |
+| XPlat.UI | [](https://www.nuget.org/packages/XPlat.UI/) | [](https://www.nuget.org/packages/XPlat.UI/) |
+| XPlat.UI.Controls | [](https://www.nuget.org/packages/XPlat.UI.Controls/) | [](https://www.nuget.org/packages/XPlat.UI.Controls/) |
+| XPlat.UI.Core | [](https://www.nuget.org/packages/XPlat.UI.Core/) | [](https://www.nuget.org/packages/XPlat.UI.Core/) |
+| XPlat.UI.Popups | [](https://www.nuget.org/packages/XPlat.UI.Popups/) | [](https://www.nuget.org/packages/XPlat.UI.Popups/) |
diff --git a/docs/articles/intro.md b/docs/articles/intro.md
new file mode 100644
index 0000000..9e6fc67
--- /dev/null
+++ b/docs/articles/intro.md
@@ -0,0 +1,24 @@
+---
+uid: xplat-intro
+title: Overview
+---
+
+
+
+# XPlat Windows APIs
+
+XPlat Windows APIs are designed to make it easier for developers adjusted to developing with the Windows Runtime APIs (UWP) to take those skills cross-platform with their applications in .NET.
+
+As each application platform offers their own unique platform-specific APIs, XPlat attempts to bring all of those APIs under one umbrella using a UWP like API, allowing a developer to learn a single API which works with any application built for Windows and Xamarin for Android and iOS.
+
+For a Windows developer, this is appealing as it allows you to easily migrate your existing Windows code to Xamarin shared code with minimal changes through the use of XPlat Windows APIs which mimic the UWP API alternatives.
+
+## Why should I use this project?
+
+You've spent years developing Windows applications and you've been using the Windows Runtime APIs (UWP) to build modern app experiences. Now you want to take your existing apps and skills cross-platform with Xamarin, but you don't know where to start because you don't know what APIs to use!
+
+I had this same problem!
+
+That's where XPlat Windows APIs started, a set of APIs which mimic those Windows APIs but that are cross-platform, supporting both Android and iOS.
+
+Use your existing skills and build epic cross-platform applications.
\ No newline at end of file
diff --git a/docs/articles/toc.yml b/docs/articles/toc.yml
new file mode 100644
index 0000000..c6fa19c
--- /dev/null
+++ b/docs/articles/toc.yml
@@ -0,0 +1,6 @@
+- name: Overview
+ topicHref: intro.md
+- name: Get started
+ items:
+ - name: Available packages
+ href: available-packages.md
diff --git a/docs/docfx.json b/docs/docfx.json
new file mode 100644
index 0000000..cc7ac2c
--- /dev/null
+++ b/docs/docfx.json
@@ -0,0 +1,82 @@
+{
+ "metadata": [
+ {
+ "src": [
+ {
+ "src": "../",
+ "files": [
+ "src/**.csproj"
+ ],
+ "exclude": [
+ "**/bin/**",
+ "**/obj/**",
+ "_site/**"
+ ]
+ }
+ ],
+ "dest": "api",
+ "disableGitFeatures": false,
+ "disableDefaultFilter": false,
+ "properties": {
+ "TargetFramework": "netstandard2.0"
+ }
+ }
+ ],
+ "build": {
+ "content": [
+ {
+ "files": [
+ "api/**.yml",
+ "api/index.md"
+ ]
+ },
+ {
+ "files": [
+ "articles/**.md",
+ "articles/**/toc.yml",
+ "toc.yml",
+ "*.md"
+ ]
+ }
+ ],
+ "resource": [
+ {
+ "files": [
+ "images/**"
+ ]
+ }
+ ],
+ "overwrite": [
+ {
+ "files": [
+ "apidoc/**.md"
+ ],
+ "exclude": [
+ "obj/**",
+ "_site/**"
+ ]
+ }
+ ],
+ "dest": "_site",
+ "globalMetadataFiles": [],
+ "fileMetadataFiles": [],
+ "template": [
+ "default",
+ "templates/material"
+ ],
+ "postProcessors": [],
+ "markdownEngineName": "markdig",
+ "noLangKeyword": false,
+ "keepFileLink": false,
+ "cleanupCacheHistory": false,
+ "disableGitFeatures": false,
+ "globalMetadata": {
+ "_appLogoPath": "images/Logo.png",
+ "_appFaviconPath": "images/Logo.png",
+ "_appTitle": "XPlat Windows APIs",
+ "_appFooter": "Copyright (c) XPlat Apps",
+ "_enableSearch": true,
+ "_enableNewTab": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/images/Logo.png b/docs/images/Logo.png
new file mode 100644
index 0000000..ad84416
Binary files /dev/null and b/docs/images/Logo.png differ
diff --git a/docs/images/ProjectBanner.png b/docs/images/ProjectBanner.png
new file mode 100644
index 0000000..d8fef60
Binary files /dev/null and b/docs/images/ProjectBanner.png differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..f9dd6b8
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,76 @@
+---
+uid: front-page
+title: Docs
+---
+
+
+
+
+Find yourself with .NET Windows API skills but unsure how to go cross-platform? +
++That's why I started XPlat Windows APIs. This is an API layer for Xamarin Android and iOS application mimicking the equivalent Windows API. So you can build cross-platform applications with the skills you know! +
+ ++Take advantage of what is available for XPlat Windows APIs in your applications. +
++You'll discover what packages are available for you from NuGet.org, plus how you can use them. +
+ ++Are we missing an API you need in your application? +
++XPlat Windows APIs are available as an open-source project on GitHub! Dive into the codebase and bring your improvements. +
+ ++If you'd like to support our current and future endeavors in open-source projects, considering sponsoring the work we do! +
+ + +