diff --git a/TeamsISO.Linux.slnf b/TeamsISO.Linux.slnf
new file mode 100644
index 0000000..1bf2820
--- /dev/null
+++ b/TeamsISO.Linux.slnf
@@ -0,0 +1,11 @@
+{
+ "solution": {
+ "path": "TeamsISO.sln",
+ "projects": [
+ "src/TeamsISO.Engine/TeamsISO.Engine.csproj",
+ "src/TeamsISO.Engine.NdiInterop/TeamsISO.Engine.NdiInterop.csproj",
+ "src/tests/TeamsISO.Engine.Tests/TeamsISO.Engine.Tests.csproj",
+ "src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj"
+ ]
+ }
+}
diff --git a/TeamsISO.sln b/TeamsISO.sln
index 82462a4..a82d73c 100644
--- a/TeamsISO.sln
+++ b/TeamsISO.sln
@@ -13,6 +13,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DBDF4A1D
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.Tests", "src\tests\TeamsISO.Engine.Tests\TeamsISO.Engine.Tests.csproj", "{F8DBD7AB-E160-4B75-88FC-BAECDD4D44E8}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.App", "src\TeamsISO.App\TeamsISO.App.csproj", "{80DCE039-3BBC-4D3F-B44B-51F324591C29}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.IntegrationTests", "src\tests\TeamsISO.Engine.IntegrationTests\TeamsISO.Engine.IntegrationTests.csproj", "{A85E331D-026E-4BDE-B89C-0CC4C95001CE}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -34,11 +38,21 @@ Global
{F8DBD7AB-E160-4B75-88FC-BAECDD4D44E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8DBD7AB-E160-4B75-88FC-BAECDD4D44E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8DBD7AB-E160-4B75-88FC-BAECDD4D44E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {80DCE039-3BBC-4D3F-B44B-51F324591C29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {80DCE039-3BBC-4D3F-B44B-51F324591C29}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80DCE039-3BBC-4D3F-B44B-51F324591C29}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {80DCE039-3BBC-4D3F-B44B-51F324591C29}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A85E331D-026E-4BDE-B89C-0CC4C95001CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A85E331D-026E-4BDE-B89C-0CC4C95001CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A85E331D-026E-4BDE-B89C-0CC4C95001CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A85E331D-026E-4BDE-B89C-0CC4C95001CE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{F0D24EAE-9225-4DC4-B3D2-6966077287A0} = {46E05E34-8A87-4986-87D3-FE0DE4E05F44}
{E737E54B-73DE-4F74-909C-1F0F5CF82AC6} = {46E05E34-8A87-4986-87D3-FE0DE4E05F44}
{DBDF4A1D-4215-42D5-B456-2CE7159DF848} = {46E05E34-8A87-4986-87D3-FE0DE4E05F44}
{F8DBD7AB-E160-4B75-88FC-BAECDD4D44E8} = {DBDF4A1D-4215-42D5-B456-2CE7159DF848}
+ {80DCE039-3BBC-4D3F-B44B-51F324591C29} = {46E05E34-8A87-4986-87D3-FE0DE4E05F44}
+ {A85E331D-026E-4BDE-B89C-0CC4C95001CE} = {DBDF4A1D-4215-42D5-B456-2CE7159DF848}
EndGlobalSection
EndGlobal
diff --git a/src/TeamsISO.App/App.xaml b/src/TeamsISO.App/App.xaml
new file mode 100644
index 0000000..e703f02
--- /dev/null
+++ b/src/TeamsISO.App/App.xaml
@@ -0,0 +1,6 @@
+
+
+
diff --git a/src/TeamsISO.App/App.xaml.cs b/src/TeamsISO.App/App.xaml.cs
new file mode 100644
index 0000000..0b4da7d
--- /dev/null
+++ b/src/TeamsISO.App/App.xaml.cs
@@ -0,0 +1,7 @@
+using System.Windows;
+
+namespace TeamsISO.App;
+
+public partial class App : Application
+{
+}
diff --git a/src/TeamsISO.App/MainWindow.xaml b/src/TeamsISO.App/MainWindow.xaml
new file mode 100644
index 0000000..89319a7
--- /dev/null
+++ b/src/TeamsISO.App/MainWindow.xaml
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/src/TeamsISO.App/MainWindow.xaml.cs b/src/TeamsISO.App/MainWindow.xaml.cs
new file mode 100644
index 0000000..d32a3d7
--- /dev/null
+++ b/src/TeamsISO.App/MainWindow.xaml.cs
@@ -0,0 +1,11 @@
+using System.Windows;
+
+namespace TeamsISO.App;
+
+public partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/src/TeamsISO.App/TeamsISO.App.csproj b/src/TeamsISO.App/TeamsISO.App.csproj
new file mode 100644
index 0000000..faa8a54
--- /dev/null
+++ b/src/TeamsISO.App/TeamsISO.App.csproj
@@ -0,0 +1,17 @@
+
+
+
+ WinExe
+ net8.0-windows
+ true
+ TeamsISO.App
+
+ false
+
+
+
+
+
+
+
+
diff --git a/src/tests/TeamsISO.Engine.IntegrationTests/IntegrationTestsScaffold.cs b/src/tests/TeamsISO.Engine.IntegrationTests/IntegrationTestsScaffold.cs
new file mode 100644
index 0000000..6d33330
--- /dev/null
+++ b/src/tests/TeamsISO.Engine.IntegrationTests/IntegrationTestsScaffold.cs
@@ -0,0 +1,11 @@
+namespace TeamsISO.Engine.IntegrationTests;
+
+public class IntegrationTestsScaffold
+{
+ [Fact(Skip = "Phase A: integration tests require NDI runtime — added in Phase B.")]
+ [Trait("requires", "ndi")]
+ public void ScaffoldFactSkipsCleanly()
+ {
+ Assert.True(true);
+ }
+}
diff --git a/src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj b/src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj
new file mode 100644
index 0000000..b85c9ae
--- /dev/null
+++ b/src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj
@@ -0,0 +1,29 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+