diff --git a/BeauFindlay/src/BeauFindlay.Client/Layout/MainLayout.razor b/BeauFindlay/src/BeauFindlay.Client/Layout/MainLayout.razor index 9a486ee..d7ef8e5 100644 --- a/BeauFindlay/src/BeauFindlay.Client/Layout/MainLayout.razor +++ b/BeauFindlay/src/BeauFindlay.Client/Layout/MainLayout.razor @@ -3,7 +3,7 @@
-
+
@Body
diff --git a/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor b/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor index c71ccbd..bd8e300 100644 --- a/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor +++ b/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor @@ -2,50 +2,61 @@ @inject IJSRuntime JSRuntime -@if (!hasPreviouslyRendered) +@if (comingSoon) { -

- -

+
+

Coming soon...

+
} else { -

This app|

+ @if (!hasPreviouslyRendered) + { +

+ +

+ } + else + { +

This app|

+ } + +

Below is a brief outline of how this app is made and what technologies are used. If you'd like to dive straight in then full project is available on my GitHub.

+ +
+

Front-end

+ +

I wanted to create a decent, modern client-side experience for this app and given my (very...) limited front-end expertise I decided to choose .NET Blazor Webassembly. Blazor is Microsoft's take on component-based SPAs (single page applications) and offers us back-end focussed devs a way of producing decent client experiences without needing to dive into another front-end specific technology.

+ +

Blazor traditionally came in two flavours, server and webassembly with an additional third option (Blazor Web App) recently released with .NET 8 which is an amalgamation of both. Blazor Server initially generates content on the server and utilises web-sockets to communicate dynamic UI updates with the client without requiring a page load, whereas Blazor Webassembly downloads the entire app to the client browser on first load alongside a light-weight .NET run-time to execute code directly on the browsers UI thread.

+ +

As Blazor server requires a dedicated server to host the application, I chose Blazor webassembly to enable me to host this app for free using an Azure Static Web App. You can read more about this in the hosting section.

+
+ +
+

Back-end

+

As the

+
+ + +
+

Hosting

+

+
} -

Below is a brief outline of how this app is made and what technologies are used. If you'd like to dive straight in then full project is available on my GitHub.

-
-

Front-end

- -

I wanted to create a decent, modern client-side experience for this app and given my (very...) limited front-end expertise I decided to choose .NET Blazor Webassembly. Blazor is Microsoft's take on component-based SPAs (single page applications) and offers us back-end focussed devs a way of producing decent client experiences without needing to dive into another front-end specific technology.

- -

Blazor traditionally came in two flavours, server and webassembly with an additional third option (Blazor Web App) recently released with .NET 8 which is an amalgamation of both. Blazor Server initially generates content on the server and utilises web-sockets to communicate dynamic UI updates with the client without requiring a page load, whereas Blazor Webassembly downloads the entire app to the client browser on first load alongside a light-weight .NET run-time to execute code directly on the browsers UI thread.

- -

As Blazor server requires a dedicated server to host the application, I chose Blazor webassembly to enable me to host this app for free using an Azure Static Web App. You can read more about this in the hosting section.

-
- -
-

Back-end

-

As the

-
- - -
-

Hosting

-

-
- - + @code { - private const string ComponentKey = "ComponentRendered_About"; + private const string ComponentKey = "ComponentRendered_About"; private const string FrontEndSection = "front-end"; private const string BackEndSection = "back-end"; private const string HostingSection = "hosting"; - + private bool hasPreviouslyRendered; - + private bool comingSoon = true; + protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) @@ -59,7 +70,7 @@ else { await JSRuntime.InvokeVoidAsync("localStorage.setItem", ComponentKey, "true"); } - + if (previousValue != hasPreviouslyRendered) { StateHasChanged(); @@ -71,4 +82,5 @@ else { await JSRuntime.InvokeVoidAsync("scrollToElement", elementId); } + } \ No newline at end of file diff --git a/BeauFindlay/src/BeauFindlay.Client/Pages/Contact.razor b/BeauFindlay/src/BeauFindlay.Client/Pages/Contact.razor index a40cf8b..c84376c 100644 --- a/BeauFindlay/src/BeauFindlay.Client/Pages/Contact.razor +++ b/BeauFindlay/src/BeauFindlay.Client/Pages/Contact.razor @@ -19,14 +19,14 @@
- +
- +
diff --git a/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css b/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css index 562a466..399f64d 100644 --- a/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css +++ b/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css @@ -666,6 +666,10 @@ video { max-width: 36rem; } +.flex-1 { + flex: 1 1 0%; +} + .flex-shrink-0 { flex-shrink: 0; }