diff --git a/.gitignore b/.gitignore
index f14867ad..f59c525d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,15 @@
node_modules
-*.sw?
built
-typings/
-tmp/
+typings
+tmp
+temp
+projects
+win10/app/bin
+win10/app/bld
+
+*.user
+*.sw?
*.ts.new
*.tgz
-temp/
*.db
-projects/
+*.suo
diff --git a/README.md b/README.md
index a00857f5..98600ef7 100644
--- a/README.md
+++ b/README.md
@@ -8,3 +8,7 @@ This target allow to program a [BBC micro:bit](https://www.microbit.co.uk/) usin
# Getting started
Please follow instructions at https://github.com/Microsoft/pxt#running-a-target-from-localhost
+
+## Universal Windows App
+
+Open the ``win10/app.sln`` solution with Visual Studio 2015 Update 2 or higher to build it.
\ No newline at end of file
diff --git a/win10/app.sln b/win10/app.sln
new file mode 100644
index 00000000..e3e22128
--- /dev/null
+++ b/win10/app.sln
@@ -0,0 +1,48 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25123.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "app", "app\app.jsproj", "{39122940-AB16-4CD4-A0CE-79A3EB863ECF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM = Debug|ARM
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|ARM = Release|ARM
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|ARM.ActiveCfg = Debug|ARM
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|ARM.Build.0 = Debug|ARM
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|ARM.Deploy.0 = Debug|ARM
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|x64.ActiveCfg = Debug|x64
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|x64.Build.0 = Debug|x64
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|x64.Deploy.0 = Debug|x64
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|x86.ActiveCfg = Debug|x86
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|x86.Build.0 = Debug|x86
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Debug|x86.Deploy.0 = Debug|x86
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|ARM.ActiveCfg = Release|ARM
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|ARM.Build.0 = Release|ARM
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|ARM.Deploy.0 = Release|ARM
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|x64.ActiveCfg = Release|x64
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|x64.Build.0 = Release|x64
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|x64.Deploy.0 = Release|x64
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|x86.ActiveCfg = Release|x86
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|x86.Build.0 = Release|x86
+ {39122940-AB16-4CD4-A0CE-79A3EB863ECF}.Release|x86.Deploy.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/win10/app/app.jsproj b/win10/app/app.jsproj
new file mode 100644
index 00000000..215e862e
--- /dev/null
+++ b/win10/app/app.jsproj
@@ -0,0 +1,90 @@
+
+
+
+
+ Debug
+ AnyCPU
+
+
+ Debug
+ ARM
+
+
+ Debug
+ x64
+
+
+ Debug
+ x86
+
+
+ Release
+ AnyCPU
+ true
+
+
+ Release
+ ARM
+ true
+
+
+ Release
+ x64
+ true
+
+
+ Release
+ x86
+ true
+
+
+
+ 39122940-ab16-4cd4-a0ce-79a3eb863ecf
+
+
+
+ 14.0
+
+
+
+
+ UAP
+ 10.0.10586.0
+ 10.0.10240.0
+ $(VersionNumberMajor).$(VersionNumberMinor)
+ en-US
+
+ pxtwinapp_TemporaryKey.pfx
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/win10/app/images/LockScreenLogo.scale-200.png b/win10/app/images/LockScreenLogo.scale-200.png
new file mode 100644
index 00000000..735f57ad
Binary files /dev/null and b/win10/app/images/LockScreenLogo.scale-200.png differ
diff --git a/win10/app/images/SplashScreen.scale-200.png b/win10/app/images/SplashScreen.scale-200.png
new file mode 100644
index 00000000..023e7f1f
Binary files /dev/null and b/win10/app/images/SplashScreen.scale-200.png differ
diff --git a/win10/app/images/Square150x150Logo.scale-200.png b/win10/app/images/Square150x150Logo.scale-200.png
new file mode 100644
index 00000000..af49fec1
Binary files /dev/null and b/win10/app/images/Square150x150Logo.scale-200.png differ
diff --git a/win10/app/images/Square44x44Logo.scale-200.png b/win10/app/images/Square44x44Logo.scale-200.png
new file mode 100644
index 00000000..ce342a2e
Binary files /dev/null and b/win10/app/images/Square44x44Logo.scale-200.png differ
diff --git a/win10/app/images/Square44x44Logo.targetsize-24_altform-unplated.png b/win10/app/images/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 00000000..f6c02ce9
Binary files /dev/null and b/win10/app/images/Square44x44Logo.targetsize-24_altform-unplated.png differ
diff --git a/win10/app/images/StoreLogo.png b/win10/app/images/StoreLogo.png
new file mode 100644
index 00000000..7385b56c
Binary files /dev/null and b/win10/app/images/StoreLogo.png differ
diff --git a/win10/app/images/Wide310x150Logo.scale-200.png b/win10/app/images/Wide310x150Logo.scale-200.png
new file mode 100644
index 00000000..288995b3
Binary files /dev/null and b/win10/app/images/Wide310x150Logo.scale-200.png differ
diff --git a/win10/app/msapp-error.css b/win10/app/msapp-error.css
new file mode 100644
index 00000000..baefb056
--- /dev/null
+++ b/win10/app/msapp-error.css
@@ -0,0 +1,17 @@
+body {
+ margin: 10px;
+}
+
+.tip {
+ font-size: 90%;
+ padding-left: 20px;
+}
+
+.paramName {
+ font-size: 100%;
+ color: black;
+}
+
+.paramValue {
+ color: black;
+}
diff --git a/win10/app/msapp-error.html b/win10/app/msapp-error.html
new file mode 100644
index 00000000..054a8554
--- /dev/null
+++ b/win10/app/msapp-error.html
@@ -0,0 +1,26 @@
+
+
+
+ Navigation Error
+
+
+
+
+ Navigation Error
+
+ -failureUrl=
+
+ (indicates the url where the error occurred)
+
+
+ -httpStatus=
+
+ (available when the error has an http status code)
+
+
+ -failureName=
+
+ (available only when the error does not have a http status code)
+
+
+
diff --git a/win10/app/msapp-error.js b/win10/app/msapp-error.js
new file mode 100644
index 00000000..d9051e8b
--- /dev/null
+++ b/win10/app/msapp-error.js
@@ -0,0 +1,22 @@
+(function () {
+ var validParameterNames = [ "httpStatus", "failureName", "failureUrl" ];
+
+ function parseQueryParameters() {
+ var query = location.search.slice(1);
+ return query.split("&").reduce(function (queryParameters, rawPair) {
+ var pair = rawPair.split("=").map(decodeURIComponent);
+ queryParameters[pair[0]] = pair[1];
+ return queryParameters;
+ }, {});
+ }
+
+ function initialize() {
+ var queryParameters = parseQueryParameters();
+ validParameterNames.forEach(function (parameterName) {
+ var parameterValue = queryParameters[parameterName] || "N/A";
+ document.getElementById(parameterName + "Value").textContent = parameterValue;
+ });
+ }
+
+ document.addEventListener("DOMContentLoaded", initialize);
+}());
diff --git a/win10/app/package.appxmanifest b/win10/app/package.appxmanifest
new file mode 100644
index 00000000..a06a5f53
--- /dev/null
+++ b/win10/app/package.appxmanifest
@@ -0,0 +1,33 @@
+
+
+
+
+
+ pxtwinapp
+ jhalleux
+ images\storelogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/win10/app/pxtwinapp_TemporaryKey.pfx b/win10/app/pxtwinapp_TemporaryKey.pfx
new file mode 100644
index 00000000..613b5574
Binary files /dev/null and b/win10/app/pxtwinapp_TemporaryKey.pfx differ