DotvvmChildEventCallback

Refactor to match base setup.

6/28/2023 7:56:55 AM

Changes

.gitignore 1(+1 -0)

src/Web/GettingStarted.html 126(+0 -126)

src/Web/libman.json 18(+18 -0)

src/Web/Resources/Images/text.svg 11(+0 -11)

src/Web/Resources/Images/tree.svg 19(+0 -19)

src/Web/Scripts/jquery.signalR-2.4.3.js 3174(+0 -3174)

src/Web/Scripts/jquery.signalR-2.4.3.min.js 9(+0 -9)

src/Web/Scripts/jquery-3.7.0.intellisense.js 2670(+0 -2670)

src/Web/Scripts/jquery-3.7.0.js 10704(+0 -10704)

src/Web/Scripts/jquery-3.7.0.min.js 2(+0 -2)

src/Web/Scripts/jquery-3.7.0.min.map 1(+0 -1)

src/Web/Scripts/jquery-3.7.0.slim.js 8605(+0 -8605)

src/Web/Scripts/jquery-3.7.0.slim.min.js 2(+0 -2)

src/Web/Scripts/jquery-3.7.0.slim.min.map 1(+0 -1)

src/Web/Startup.cs 27(+10 -17)

src/Web/Styles/styles.css 62(+0 -62)

src/Web/Web.csproj 152(+135 -17)

Details

.gitignore 1(+1 -0)

diff --git a/.gitignore b/.gitignore
index 500eecf..2e829e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,7 @@
 
 ### Libman packages
 src/Web/wwwroot/css/bootstrap/
+src/Web/wwwroot/css/font-awesome/
 src/Web/wwwroot/js/jquery/
 
 # User-specific files
diff --git a/src/Web/DotvvmStartup.cs b/src/Web/DotvvmStartup.cs
index 1ac9f8c..58cd425 100644
--- a/src/Web/DotvvmStartup.cs
+++ b/src/Web/DotvvmStartup.cs
@@ -1,46 +1,62 @@
-using DotVVM.Framework.Configuration;
-using DotVVM.Framework.ResourceManagement;
-using DotVVM.Framework.Routing;
-using Microsoft.Extensions.DependencyInjection;
-using DotVVM.Framework.Controls.Bootstrap4;
-
 namespace Web
 {
-    public class DotvvmStartup : IDotvvmStartup, IDotvvmServiceConfigurator
+    using DotVVM.Framework.Configuration;
+    using DotVVM.Framework.Controls.Bootstrap4;
+    using DotVVM.Framework.ResourceManagement;
+    using Helper;
+    using Microsoft.Extensions.DependencyInjection;
+
+    public class DotVvmStartup : IDotvvmStartup, IDotvvmServiceConfigurator
     {
-        // For more information about this class, visit https://dotvvm.com/docs/tutorials/basics-project-structure
         public void Configure(DotvvmConfiguration config, string applicationPath)
         {
-            config.AddBootstrap4Configuration(DotvvmBootstrapOptions.CreateDefaultSettings());
-            ConfigureRoutes(config, applicationPath);
             ConfigureControls(config, applicationPath);
             ConfigureResources(config, applicationPath);
+            ConfigureRoutes(config, applicationPath);
+
+            config.AddBootstrap4Configuration(new DotvvmBootstrapOptions
+            {
+                BootstrapCssResource = new StylesheetResource(new UrlResourceLocation("~/wwwroot/css/bootstrap/css/bootstrap.min.css")),
+                BootstrapJsResource = new ScriptResource(new UrlResourceLocation("~/wwwroot/css/bootstrap/js/bootstrap.bundle.min.js")),
+                JQueryResource = new ScriptResource(new UrlResourceLocation("~/wwwroot/js/jquery/jquery.min.js")),
+                IncludeBootstrapResourcesInPage = true,
+                IncludeJQueryResourceInPage = true
+            });
         }
 
-        private void ConfigureRoutes(DotvvmConfiguration config, string applicationPath)
+        public void ConfigureServices(IDotvvmServiceCollection options)
         {
-            config.RouteTable.Add("Default", "", "Views/default.dothtml");
-            config.RouteTable.AutoDiscoverRoutes(new DefaultRouteStrategy(config));       
+            options.AddDefaultTempStorages(Constants.DefaultTemporaryStoragePath);
+            //options.AddHotReload();
         }
 
+        #region Private Methods
         private void ConfigureControls(DotvvmConfiguration config, string applicationPath)
         {
-            // register code-only controls and markup controls
         }
 
         private void ConfigureResources(DotvvmConfiguration config, string applicationPath)
         {
-            // register custom resources and adjust paths to the built-in resources
+            RegisterCss(config);
+            RegisterJavascript(config);
+        }
+
+        private void ConfigureRoutes(DotvvmConfiguration config, string applicationPath)
+        {
+            config.RouteTable.Add("Default", "", "Views/default.dothtml");
+            //config.RouteTable.AutoDiscoverRoutes(new DefaultRouteStrategy(config));
+        }
+        private void RegisterCss(DotvvmConfiguration config)
+        {
             config.Resources.Register("Styles", new StylesheetResource()
             {
-                Location = new UrlResourceLocation("~/Styles/styles.css")
+                Location = new UrlResourceLocation("~/wwwroot/css/site.css")
             });
         }
-		
-		public void ConfigureServices(IDotvvmServiceCollection options)
+
+        private void RegisterJavascript(DotvvmConfiguration config)
         {
-            options.AddDefaultTempStorages("temp");
-            options.AddHotReload();
-		}
+        }
+        #endregion
     }
 }
diff --git a/src/Web/Helper/Constants.cs b/src/Web/Helper/Constants.cs
new file mode 100644
index 0000000..5c7c657
--- /dev/null
+++ b/src/Web/Helper/Constants.cs
@@ -0,0 +1,7 @@
+namespace Web.Helper
+{
+    public static class Constants
+    {
+        public const string DefaultTemporaryStoragePath = "App_Data\\temporary";
+    }
+}

src/Web/libman.json 18(+18 -0)

diff --git a/src/Web/libman.json b/src/Web/libman.json
new file mode 100644
index 0000000..273a705
--- /dev/null
+++ b/src/Web/libman.json
@@ -0,0 +1,18 @@
+{
+  "version": "1.0",
+  "defaultProvider": "cdnjs",
+  "libraries": [
+    {
+      "library": "bootstrap@4.6.2",
+      "destination": "wwwroot/css/bootstrap"
+    },
+    {
+      "library": "jquery@3.7.0",
+      "destination": "wwwroot/js/jquery/"
+    },
+    {
+      "library": "font-awesome@4.7.0",
+      "destination": "wwwroot/css/font-awesome/"
+    }
+  ]
+}
\ No newline at end of file

src/Web/Startup.cs 27(+10 -17)

diff --git a/src/Web/Startup.cs b/src/Web/Startup.cs
index 8452c6c..7c28b50 100644
--- a/src/Web/Startup.cs
+++ b/src/Web/Startup.cs
@@ -1,18 +1,14 @@
-using System;
-using System.Web.Hosting;
 using Microsoft.Owin;
-using Microsoft.Owin.FileSystems;
-using Microsoft.Owin.StaticFiles;
-using Owin;
-using DotVVM.Framework;
-using DotVVM.Framework.Configuration;
-using DotVVM.Framework.Routing;
-using DotVVM.Framework.Hosting;
-using Microsoft.Extensions.DependencyInjection;
 
 [assembly: OwinStartup(typeof(Web.Startup))]
 namespace Web
 {
+    using System.Web.Hosting;
+    using Microsoft.Owin.FileSystems;
+    using Microsoft.Owin.StaticFiles;
+    using Owin;
+    using DotVVM.Framework.Routing;
+
     public class Startup
     {
         public void Configuration(IAppBuilder app)
@@ -21,11 +17,8 @@ namespace Web
 
             ConfigureAuth(app);
 
-            // use DotVVM
-            var dotvvmConfiguration = app.UseDotVVM<DotvvmStartup>(applicationPhysicalPath, debug: IsInDebugMode());
-            dotvvmConfiguration.AssertConfigurationIsValid();
-
-            // use static files
+            var dotVvmConfiguration = app.UseDotVVM<DotVvmStartup>(applicationPhysicalPath, debug: IsInDebugMode());
+            dotVvmConfiguration.AssertConfigurationIsValid();
             app.UseStaticFiles(new StaticFileOptions()
             {
                 FileSystem = new PhysicalFileSystem(applicationPhysicalPath)
@@ -40,10 +33,10 @@ namespace Web
         {
         }
 
-		private bool IsInDebugMode()
+        private bool IsInDebugMode()
         {
 #if !DEBUG
-			return false;
+            return false;
 #endif
             return true;
         }
diff --git a/src/Web/ViewModels/DefaultViewModel.cs b/src/Web/ViewModels/DefaultViewModel.cs
index a364a48..4dab284 100644
--- a/src/Web/ViewModels/DefaultViewModel.cs
+++ b/src/Web/ViewModels/DefaultViewModel.cs
@@ -1,22 +1,7 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using DotVVM.Framework.ViewModel;
-using DotVVM.Framework.Hosting;
-
 namespace Web.ViewModels
 {
-    public class DefaultViewModel : MasterPageViewModel
+    public class DefaultViewModel : SiteViewModel
     {
-
-		public string Title { get; set;}
-
-		public DefaultViewModel()
-		{
-			Title = "Hello from DotVVM!";
-		}
+        
     }
 }
diff --git a/src/Web/Views/Default.dothtml b/src/Web/Views/Default.dothtml
index af9c84f..295034f 100644
--- a/src/Web/Views/Default.dothtml
+++ b/src/Web/Views/Default.dothtml
@@ -1,35 +1,6 @@
-@viewModel Web.ViewModels.DefaultViewModel, Web
-@masterPage Views/MasterPage.dotmaster
-<dot:Content ContentPlaceHolderID="MainContent">
+@viewModel Web.ViewModels.DefaultViewModel, Web
+@masterPage Views/Site.dotmaster
 
-    <div class="content">
-
-        <img src="/Resources/Images/tree.svg" class="content__background-image content__background-image--left" />
-
-        <a href="https://www.dotvvm.com/" target="_blank">
-            <img src="/Resources/Images/text.svg" class="content__image" />
-        </a>
-        <div class="content__text">
-            <h1>{{value: Title}}</h1>
-
-            <p>Open source MVVM framework for ASP.NET Core and OWIN</p>
-
-            <h3>Helpful Links</h3>
-            <ul class="content__links-list">
-                <li><a href="https://www.dotvvm.com/docs/latest" target="_blank">Docs</a></li>
-                <li><a href="https://academy.dotvvm.com" target="_blank">Academy</a></li>
-                <li><a href="https://www.dotvvm.com/samples" target="_blank">Samples</a></li>
-                <li><a href="https://gitter.im/riganti/dotvvm" target="_blank">Gitter</a></li>
-                <li><a href="https://www.youtube.com/channel/UCQZl8LNoe9kvE5FcjDyHlgQ" target="_blank">Youtube channel</a></li>
-            </ul>
-
-            <h3>Ecosystem</h3>
-            <ul class="content__links-list">
-                <li><a href="https://github.com/riganti/dotvvm" target="_blank">Github repo</a></li>
-                <li><a href="https://www.dotvvm.com/products" target="_blank">Products</a></li>
-            </ul>
-        </div>
-
-        <img src="/Resources/Images/tree.svg" class="content__background-image content__background-image content__background-image--right" />
-    </div>
+<dot:Content ContentPlaceHolderID="Body">
+    <h1>Hello World</h1>
 </dot:Content>

src/Web/Web.csproj 152(+135 -17)

diff --git a/src/Web/Web.csproj b/src/Web/Web.csproj
index e9d1df6..d8b0248 100644
--- a/src/Web/Web.csproj
+++ b/src/Web/Web.csproj
@@ -191,41 +191,159 @@
     <Reference Include="System.Xml.Linq" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Helper\Constants.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Startup.cs" />
-    <Compile Include="DotvvmStartup.cs" />
+    <Compile Include="DotVvmStartup.cs" />
     <Compile Include="ViewModels\DefaultViewModel.cs" />
-    <Compile Include="ViewModels\MasterPageViewModel.cs" />
+    <Compile Include="ViewModels\SiteViewModel.cs" />
   </ItemGroup>
   <ItemGroup>
-    <Content Include="GettingStarted.html" />
-    <Content Include="Resources\Images\text.svg" />
-    <Content Include="Resources\Images\tree.svg" />
-    <None Include="Scripts\jquery-3.7.0.intellisense.js" />
-    <Content Include="Scripts\jquery-3.7.0.js" />
-    <Content Include="Scripts\jquery-3.7.0.min.js" />
-    <Content Include="Scripts\jquery-3.7.0.slim.js" />
-    <Content Include="Scripts\jquery-3.7.0.slim.min.js" />
-    <Content Include="Scripts\jquery.signalR-2.4.3.js" />
-    <Content Include="Scripts\jquery.signalR-2.4.3.min.js" />
-    <Content Include="Styles\styles.css" />
     <Content Include="Web.config" />
-    <Content Include="Views\Default.dothtml" />
+    <Content Include="libman.json" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-grid.css" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-grid.min.css" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-reboot.css" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-reboot.min.css" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap.css" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap.min.css" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.bundle.js" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.bundle.min.js" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.js" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.min.js" />
+    <Content Include="wwwroot\css\font-awesome\css\font-awesome.css" />
+    <Content Include="wwwroot\css\font-awesome\css\font-awesome.min.css" />
+    <Content Include="wwwroot\css\font-awesome\fonts\fontawesome-webfont.svg" />
+    <Content Include="wwwroot\css\site.css" />
+    <Content Include="wwwroot\js\jquery\jquery.js" />
+    <Content Include="wwwroot\js\jquery\jquery.min.js" />
+    <Content Include="wwwroot\js\jquery\jquery.slim.js" />
+    <Content Include="wwwroot\js\jquery\jquery.slim.min.js" />
     <None Include="packages.config" />
-    <Content Include="Views\MasterPage.dotmaster" />
-    <Content Include="Scripts\jquery-3.7.0.slim.min.map" />
-    <Content Include="Scripts\jquery-3.7.0.min.map" />
+    <Content Include="Views\Site.dotmaster" />
+    <Content Include="Views\Default.dothtml" />
     <None Include="Web.Debug.config">
       <DependentUpon>Web.config</DependentUpon>
     </None>
     <None Include="Web.Release.config">
       <DependentUpon>Web.config</DependentUpon>
     </None>
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-grid.css.map" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-grid.min.css.map" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-reboot.css.map" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap-reboot.min.css.map" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap.css.map" />
+    <Content Include="wwwroot\css\bootstrap\css\bootstrap.min.css.map" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.bundle.js.map" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.bundle.min.js.map" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.js.map" />
+    <Content Include="wwwroot\css\bootstrap\js\bootstrap.min.js.map" />
+    <Content Include="wwwroot\css\bootstrap\scss\_alert.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_badge.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_breadcrumb.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_button-group.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_buttons.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_card.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_carousel.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_close.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_code.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_custom-forms.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_dropdown.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_forms.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_functions.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_grid.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_images.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_input-group.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_jumbotron.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_list-group.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_media.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_mixins.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_modal.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_nav.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_navbar.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_pagination.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_popover.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_print.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_progress.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_reboot.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_root.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_spinners.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\bootstrap-grid.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\bootstrap-reboot.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\bootstrap.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_tables.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_toasts.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_tooltip.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_transitions.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_type.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_utilities.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\_variables.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_alert.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_background-variant.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_badge.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_border-radius.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_box-shadow.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_breakpoints.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_buttons.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_caret.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_clearfix.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_deprecate.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_float.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_forms.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_gradients.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_grid-framework.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_grid.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_hover.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_image.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_list-group.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_lists.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_nav-divider.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_pagination.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_reset-text.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_resize.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_screen-reader.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_size.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_table-row.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_text-emphasis.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_text-hide.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_text-truncate.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_transition.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\mixins\_visibility.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_align.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_background.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_borders.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_clearfix.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_display.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_embed.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_flex.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_float.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_interactions.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_overflow.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_position.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_screenreaders.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_shadows.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_sizing.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_spacing.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_stretched-link.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_text.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\utilities\_visibility.scss" />
+    <Content Include="wwwroot\css\bootstrap\scss\vendor\_rfs.scss" />
+    <Content Include="wwwroot\js\jquery\jquery.min.map" />
+    <Content Include="wwwroot\js\jquery\jquery.slim.min.map" />
+    <Content Include="wwwroot\css\font-awesome\css\font-awesome.css.map" />
+    <Content Include="wwwroot\css\font-awesome\fonts\fontawesome-webfont.eot" />
+    <Content Include="wwwroot\css\font-awesome\fonts\fontawesome-webfont.ttf" />
+    <Content Include="wwwroot\css\font-awesome\fonts\fontawesome-webfont.woff" />
+    <Content Include="wwwroot\css\font-awesome\fonts\fontawesome-webfont.woff2" />
+    <Content Include="wwwroot\css\font-awesome\fonts\FontAwesome.otf" />
   </ItemGroup>
   <ItemGroup>
     <Analyzer Include="..\packages\DotVVM.4.1.7\analyzers\dotnet\cs\DotVVM.Analyzers.CodeFixes.dll" />
     <Analyzer Include="..\packages\DotVVM.4.1.7\analyzers\dotnet\cs\DotVVM.Analyzers.dll" />
   </ItemGroup>
+  <ItemGroup>
+    <Folder Include="wwwroot\css\scss\" />
+  </ItemGroup>
   <PropertyGroup>
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
diff --git a/src/Web/wwwroot/css/site.css b/src/Web/wwwroot/css/site.css
new file mode 100644
index 0000000..96b0f4b
--- /dev/null
+++ b/src/Web/wwwroot/css/site.css
@@ -0,0 +1,6 @@
+
+html, body {
+    margin: 0 auto;
+    font-family: Segoe UI,SegoeUI,Segoe WP,Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;
+    height: 100%;
+}