diff --git a/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor b/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor
index c4a4bf8..776efe6 100644
--- a/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor
+++ b/BeauFindlay/src/BeauFindlay.Client/Pages/About.razor
@@ -4,14 +4,7 @@
About - Beau Findlay
-@if (comingSoon)
-{
-
-
Coming soon...
-
-}
-else
-{
+
@if (!hasPreviouslyRendered)
{
@@ -20,32 +13,48 @@ else
}
else
{
- This app|
+ 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.
+Below is an overview of how this simple app is made and what technologies are used. If you'd like to dive straight in, the full project is available on my GitHub.
-
- Front-end
+I'm planning to integrate a simple blog as part of this app that will dive into more specific implementation details so check back soon for more!
- 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.
+
+ Front-end:
.NET Blazor WASM
- 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.
+ 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.
- 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 ScrollToElementAsync(HostingSection)" class="underline underline-offset-2 cursor-pointer">hosting section.
-
+ Blazor traditionally came in two flavours, server and webassembly with an additional third option (Blazor Web App) recently released with .NET 8 which can offer the functionality of both, alongside traditional SSR (server-side rendering). 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 the webassembly model to enable free hosting using an Azure Static Web App. You can read more about this in the ScrollToElementAsync(HostingSection)" class="underline underline-offset-2 cursor-pointer">hosting section.
+
+ This app is styled using a cool CSS framework called TailwindCSS. PostCSS is used alongside Tailwind to generate a lightweight stylesheet based only on the parts of the framework that are used, as oppose to including a everything the framework offers.
+
+
+
+ Back-end:
.NET Azure Functions API
+
+ There is a very minimal API used as the back-end of this app to allow users to contact me directly via the contact page. This will be expanded to serve the technical blog I'm building as a new feature that will be available soon.
+
+ The contact API endpoint currently:
+
+ - Validates a Google Recaptcha token to protect against fraudulent submissions.
+ - Builds a HTML email from the information provided in the form.
+ - Sends an email directly to my inbox using the SendGrid API.
+
+
+ The API is written in .NET 8 using Azure Serverless Functions with HTTP triggers to act as API endpoints. For larger scale projects I would almost always opt for a fully-featured Web API, however Azure Functions provide automatic elastic scaling with consumption-based billing and a generous free-tier, making them perfect for smaller projects like this.
+
+
-
-}
+
+ Hosting:
Microsoft Azure Static Web App
+
+
+
diff --git a/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css b/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css
index cb692ef..1542088 100644
--- a/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css
+++ b/BeauFindlay/src/BeauFindlay.Client/wwwroot/css/app.min.css
@@ -633,6 +633,14 @@ video {
height: 100%;
}
+.h-auto {
+ height: auto;
+}
+
+.h-10 {
+ height: 2.5rem;
+}
+
.min-h-screen {
min-height: 100vh;
}
@@ -673,6 +681,10 @@ video {
width: 2.5rem;
}
+.w-auto {
+ width: auto;
+}
+
.max-w-xl {
max-width: 36rem;
}