aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-05-06 18:18:47 +0300
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-05-06 18:18:47 +0300
commit6fedb4158836e6bf8d0e6190bc8fd36f188ac60d (patch)
tree008b43c7b07b5a76430d163b0bf30f9b50726aa5
parent628307b05165bb8c1faf82f3e9ab0c0053832e48 (diff)
downloadit-kariera-exam-template-6fedb4158836e6bf8d0e6190bc8fd36f188ac60d.tar
it-kariera-exam-template-6fedb4158836e6bf8d0e6190bc8fd36f188ac60d.tar.gz
it-kariera-exam-template-6fedb4158836e6bf8d0e6190bc8fd36f188ac60d.zip
Added gitignore and initial project generation
-rw-r--r--.gitignore225
-rw-r--r--ExamTemplate/Common/Class1.cs8
-rw-r--r--ExamTemplate/Common/Common.csproj7
-rw-r--r--ExamTemplate/Data/Class1.cs8
-rw-r--r--ExamTemplate/Data/Data.csproj11
-rw-r--r--ExamTemplate/ExamTemplate.sln62
-rw-r--r--ExamTemplate/Services/Class1.cs8
-rw-r--r--ExamTemplate/Services/Services.csproj12
-rw-r--r--ExamTemplate/Web/Controllers/HomeController.cs37
-rw-r--r--ExamTemplate/Web/Models/ErrorViewModel.cs11
-rw-r--r--ExamTemplate/Web/Program.cs26
-rw-r--r--ExamTemplate/Web/Properties/launchSettings.json27
-rw-r--r--ExamTemplate/Web/Startup.cs57
-rw-r--r--ExamTemplate/Web/Views/Home/Index.cshtml8
-rw-r--r--ExamTemplate/Web/Views/Home/Privacy.cshtml6
-rw-r--r--ExamTemplate/Web/Views/Shared/Error.cshtml25
-rw-r--r--ExamTemplate/Web/Views/Shared/_Layout.cshtml48
-rw-r--r--ExamTemplate/Web/Views/Shared/_ValidationScriptsPartial.cshtml2
-rw-r--r--ExamTemplate/Web/Views/_ViewImports.cshtml3
-rw-r--r--ExamTemplate/Web/Views/_ViewStart.cshtml3
-rw-r--r--ExamTemplate/Web/Web.csproj12
-rw-r--r--ExamTemplate/Web/appsettings.Development.json9
-rw-r--r--ExamTemplate/Web/appsettings.json10
23 files changed, 625 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3c5eb50
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,225 @@
+# The following command works for downloading when using Git for Windows:
+# curl -LOf http://gist.githubusercontent.com/kmorcinek/2710267/raw/.gitignore
+#
+# Download this file using PowerShell v3 under Windows with the following comand:
+# Invoke-WebRequest https://gist.githubusercontent.com/kmorcinek/2710267/raw/ -OutFile .gitignore
+#
+# or wget:
+# wget --no-check-certificate http://gist.githubusercontent.com/kmorcinek/2710267/raw/.gitignore
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+
+# Build results
+[Dd]ebug/
+[Rr]elease/
+x64/
+[Bb]in/
+[Oo]bj/
+# build folder is nowadays used for build scripts and should not be ignored
+#build/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+*_i.c
+*_p.c
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.log
+*.scc
+
+# OS generated files #
+.DS_Store*
+Icon?
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+*.ncrunch*
+.*crunch*.local.xml
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.Publish.xml
+
+# Windows Azure Build Output
+csx
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Others
+*.Cache
+ClientBin/
+[Ss]tyle[Cc]op.*
+~$*
+*~
+*.dbmdl
+*.[Pp]ublish.xml
+*.pfx
+*.publishsettings
+modulesbin/
+tempbin/
+
+# EPiServer Site file (VPP)
+AppData/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file to a newer
+# Visual Studio version. Backup files are not needed, because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# vim
+*.txt~
+*.swp
+*.swo
+
+# Temp files when opening LibreOffice on ubuntu
+.~lock.*
+
+# svn
+.svn
+
+# CVS - Source Control
+**/CVS/
+
+# Remainings from resolving conflicts in Source Control
+*.orig
+
+# SQL Server files
+**/App_Data/*.mdf
+**/App_Data/*.ldf
+**/App_Data/*.sdf
+
+
+#LightSwitch generated files
+GeneratedArtifacts/
+_Pvt_Extensions/
+ModelManifest.xml
+
+# =========================
+# Windows detritus
+# =========================
+
+# Windows image file caches
+Thumbs.db
+ehthumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Mac desktop service store files
+.DS_Store
+
+# SASS Compiler cache
+.sass-cache
+
+# Visual Studio 2014 CTP
+**/*.sln.ide
+
+# Visual Studio temp something
+.vs/
+
+# dotnet stuff
+project.lock.json
+
+# VS 2015+
+*.vc.vc.opendb
+*.vc.db
+
+# Rider
+.idea/
+
+# Visual Studio Code
+.vscode/
+
+# Output folder used by Webpack or other FE stuff
+**/node_modules/*
+**/wwwroot/*
+
+# SpecFlow specific
+*.feature.cs
+*.feature.xlsx.*
+*.Specs_*.html
+
+#####
+# End of core ignore list, below put you custom 'per project' settings (patterns or path)
+#####
diff --git a/ExamTemplate/Common/Class1.cs b/ExamTemplate/Common/Class1.cs
new file mode 100644
index 0000000..8cae90e
--- /dev/null
+++ b/ExamTemplate/Common/Class1.cs
@@ -0,0 +1,8 @@
+using System;
+
+namespace Common
+{
+ public class Class1
+ {
+ }
+}
diff --git a/ExamTemplate/Common/Common.csproj b/ExamTemplate/Common/Common.csproj
new file mode 100644
index 0000000..72764a6
--- /dev/null
+++ b/ExamTemplate/Common/Common.csproj
@@ -0,0 +1,7 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ </PropertyGroup>
+
+</Project>
diff --git a/ExamTemplate/Data/Class1.cs b/ExamTemplate/Data/Class1.cs
new file mode 100644
index 0000000..78d17f8
--- /dev/null
+++ b/ExamTemplate/Data/Class1.cs
@@ -0,0 +1,8 @@
+using System;
+
+namespace Data
+{
+ public class Class1
+ {
+ }
+}
diff --git a/ExamTemplate/Data/Data.csproj b/ExamTemplate/Data/Data.csproj
new file mode 100644
index 0000000..7be2d32
--- /dev/null
+++ b/ExamTemplate/Data/Data.csproj
@@ -0,0 +1,11 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <ItemGroup>
+ <ProjectReference Include="..\Common\Common.csproj" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ </PropertyGroup>
+
+</Project>
diff --git a/ExamTemplate/ExamTemplate.sln b/ExamTemplate/ExamTemplate.sln
new file mode 100644
index 0000000..0522362
--- /dev/null
+++ b/ExamTemplate/ExamTemplate.sln
@@ -0,0 +1,62 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.6.30114.105
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Data", "Data\Data.csproj", "{5676382D-F650-45BF-96CD-1E99F4965233}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Services", "Services\Services.csproj", "{4BA16964-42F1-4481-8A47-1610B04398AE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Web", "Web\Web.csproj", "{5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Debug|x64.Build.0 = Debug|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Debug|x86.Build.0 = Debug|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Release|x64.ActiveCfg = Release|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Release|x64.Build.0 = Release|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Release|x86.ActiveCfg = Release|Any CPU
+ {5676382D-F650-45BF-96CD-1E99F4965233}.Release|x86.Build.0 = Release|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Debug|x64.Build.0 = Debug|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Debug|x86.Build.0 = Debug|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Release|x64.ActiveCfg = Release|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Release|x64.Build.0 = Release|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Release|x86.ActiveCfg = Release|Any CPU
+ {4BA16964-42F1-4481-8A47-1610B04398AE}.Release|x86.Build.0 = Release|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Debug|x64.Build.0 = Debug|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Debug|x86.Build.0 = Debug|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Release|x64.ActiveCfg = Release|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Release|x64.Build.0 = Release|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Release|x86.ActiveCfg = Release|Any CPU
+ {5AEF48AD-2352-43FC-8B6E-2E2A1FF3001E}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/ExamTemplate/Services/Class1.cs b/ExamTemplate/Services/Class1.cs
new file mode 100644
index 0000000..ba9b8d2
--- /dev/null
+++ b/ExamTemplate/Services/Class1.cs
@@ -0,0 +1,8 @@
+using System;
+
+namespace Services
+{
+ public class Class1
+ {
+ }
+}
diff --git a/ExamTemplate/Services/Services.csproj b/ExamTemplate/Services/Services.csproj
new file mode 100644
index 0000000..98e2941
--- /dev/null
+++ b/ExamTemplate/Services/Services.csproj
@@ -0,0 +1,12 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <ItemGroup>
+ <ProjectReference Include="..\Data\Data.csproj" />
+ <ProjectReference Include="..\Common\Common.csproj" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ </PropertyGroup>
+
+</Project>
diff --git a/ExamTemplate/Web/Controllers/HomeController.cs b/ExamTemplate/Web/Controllers/HomeController.cs
new file mode 100644
index 0000000..3c5b6ec
--- /dev/null
+++ b/ExamTemplate/Web/Controllers/HomeController.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using Web.Models;
+
+namespace Web.Controllers
+{
+ public class HomeController : Controller
+ {
+ private readonly ILogger<HomeController> _logger;
+
+ public HomeController(ILogger<HomeController> logger)
+ {
+ _logger = logger;
+ }
+
+ public IActionResult Index()
+ {
+ return View();
+ }
+
+ public IActionResult Privacy()
+ {
+ return View();
+ }
+
+ [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+ public IActionResult Error()
+ {
+ return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
+ }
+ }
+}
diff --git a/ExamTemplate/Web/Models/ErrorViewModel.cs b/ExamTemplate/Web/Models/ErrorViewModel.cs
new file mode 100644
index 0000000..f603890
--- /dev/null
+++ b/ExamTemplate/Web/Models/ErrorViewModel.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace Web.Models
+{
+ public class ErrorViewModel
+ {
+ public string RequestId { get; set; }
+
+ public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+ }
+}
diff --git a/ExamTemplate/Web/Program.cs b/ExamTemplate/Web/Program.cs
new file mode 100644
index 0000000..fb68b7f
--- /dev/null
+++ b/ExamTemplate/Web/Program.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+
+namespace Web
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ CreateHostBuilder(args).Build().Run();
+ }
+
+ public static IHostBuilder CreateHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args)
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup<Startup>();
+ });
+ }
+}
diff --git a/ExamTemplate/Web/Properties/launchSettings.json b/ExamTemplate/Web/Properties/launchSettings.json
new file mode 100644
index 0000000..9bcdafd
--- /dev/null
+++ b/ExamTemplate/Web/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:36205",
+ "sslPort": 44322
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "Web": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "applicationUrl": "https://localhost:5001;http://localhost:5000",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/ExamTemplate/Web/Startup.cs b/ExamTemplate/Web/Startup.cs
new file mode 100644
index 0000000..51a6797
--- /dev/null
+++ b/ExamTemplate/Web/Startup.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.HttpsPolicy;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace Web
+{
+ public class Startup
+ {
+ public Startup(IConfiguration configuration)
+ {
+ Configuration = configuration;
+ }
+
+ public IConfiguration Configuration { get; }
+
+ // This method gets called by the runtime. Use this method to add services to the container.
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddControllersWithViews();
+ }
+
+ // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+ else
+ {
+ app.UseExceptionHandler("/Home/Error");
+ // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+ app.UseHsts();
+ }
+ app.UseHttpsRedirection();
+ app.UseStaticFiles();
+
+ app.UseRouting();
+
+ app.UseAuthorization();
+
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapControllerRoute(
+ name: "default",
+ pattern: "{controller=Home}/{action=Index}/{id?}");
+ });
+ }
+ }
+}
diff --git a/ExamTemplate/Web/Views/Home/Index.cshtml b/ExamTemplate/Web/Views/Home/Index.cshtml
new file mode 100644
index 0000000..1fcf97d
--- /dev/null
+++ b/ExamTemplate/Web/Views/Home/Index.cshtml
@@ -0,0 +1,8 @@
+@{
+ ViewData["Title"] = "Home Page";
+}
+
+<div class="text-center">
+ <h1 class="display-4">Welcome</h1>
+ <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
+</div>
diff --git a/ExamTemplate/Web/Views/Home/Privacy.cshtml b/ExamTemplate/Web/Views/Home/Privacy.cshtml
new file mode 100644
index 0000000..a850e76
--- /dev/null
+++ b/ExamTemplate/Web/Views/Home/Privacy.cshtml
@@ -0,0 +1,6 @@
+@{
+ ViewData["Title"] = "Privacy Policy";
+}
+<h1>@ViewData["Title"]</h1>
+
+<p>Use this page to detail your site's privacy policy.</p>
diff --git a/ExamTemplate/Web/Views/Shared/Error.cshtml b/ExamTemplate/Web/Views/Shared/Error.cshtml
new file mode 100644
index 0000000..08a315d
--- /dev/null
+++ b/ExamTemplate/Web/Views/Shared/Error.cshtml
@@ -0,0 +1,25 @@
+@model ErrorViewModel
+@{
+ ViewData["Title"] = "Error";
+}
+
+<h1 class="text-danger">Error.</h1>
+<h2 class="text-danger">An error occurred while processing your request.</h2>
+
+@if (Model.ShowRequestId)
+{
+ <p>
+ <strong>Request ID:</strong> <code>@Model.RequestId</code>
+ </p>
+}
+
+<h3>Development Mode</h3>
+<p>
+ Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
+</p>
+<p>
+ <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
+ It can result in displaying sensitive information from exceptions to end users.
+ For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+ and restarting the app.
+</p>
diff --git a/ExamTemplate/Web/Views/Shared/_Layout.cshtml b/ExamTemplate/Web/Views/Shared/_Layout.cshtml
new file mode 100644
index 0000000..b94d4ee
--- /dev/null
+++ b/ExamTemplate/Web/Views/Shared/_Layout.cshtml
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>@ViewData["Title"] - Web</title>
+ <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
+ <link rel="stylesheet" href="~/css/site.css" />
+</head>
+<body>
+ <header>
+ <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
+ <div class="container">
+ <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">Web</a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
+ aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
+ <ul class="navbar-nav flex-grow-1">
+ <li class="nav-item">
+ <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </nav>
+ </header>
+ <div class="container">
+ <main role="main" class="pb-3">
+ @RenderBody()
+ </main>
+ </div>
+
+ <footer class="border-top footer text-muted">
+ <div class="container">
+ &copy; 2021 - Web - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
+ </div>
+ </footer>
+ <script src="~/lib/jquery/dist/jquery.min.js"></script>
+ <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
+ <script src="~/js/site.js" asp-append-version="true"></script>
+ @RenderSection("Scripts", required: false)
+</body>
+</html>
diff --git a/ExamTemplate/Web/Views/Shared/_ValidationScriptsPartial.cshtml b/ExamTemplate/Web/Views/Shared/_ValidationScriptsPartial.cshtml
new file mode 100644
index 0000000..9b7b0de
--- /dev/null
+++ b/ExamTemplate/Web/Views/Shared/_ValidationScriptsPartial.cshtml
@@ -0,0 +1,2 @@
+<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
+<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
diff --git a/ExamTemplate/Web/Views/_ViewImports.cshtml b/ExamTemplate/Web/Views/_ViewImports.cshtml
new file mode 100644
index 0000000..bf79573
--- /dev/null
+++ b/ExamTemplate/Web/Views/_ViewImports.cshtml
@@ -0,0 +1,3 @@
+@using Web
+@using Web.Models
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
diff --git a/ExamTemplate/Web/Views/_ViewStart.cshtml b/ExamTemplate/Web/Views/_ViewStart.cshtml
new file mode 100644
index 0000000..66b5da2
--- /dev/null
+++ b/ExamTemplate/Web/Views/_ViewStart.cshtml
@@ -0,0 +1,3 @@
+@{
+ Layout = "_Layout";
+}
diff --git a/ExamTemplate/Web/Web.csproj b/ExamTemplate/Web/Web.csproj
new file mode 100644
index 0000000..3c3737c
--- /dev/null
+++ b/ExamTemplate/Web/Web.csproj
@@ -0,0 +1,12 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+ <ItemGroup>
+ <ProjectReference Include="..\Services\Services.csproj" />
+ <ProjectReference Include="..\Common\Common.csproj" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <TargetFramework>netcoreapp5.0</TargetFramework>
+ </PropertyGroup>
+
+</Project>
diff --git a/ExamTemplate/Web/appsettings.Development.json b/ExamTemplate/Web/appsettings.Development.json
new file mode 100644
index 0000000..dba68eb
--- /dev/null
+++ b/ExamTemplate/Web/appsettings.Development.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ }
+}
diff --git a/ExamTemplate/Web/appsettings.json b/ExamTemplate/Web/appsettings.json
new file mode 100644
index 0000000..81ff877
--- /dev/null
+++ b/ExamTemplate/Web/appsettings.json
@@ -0,0 +1,10 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information"
+ }
+ },
+ "AllowedHosts": "*"
+}