CleanArchitecture.Blazor.Solution.Template
1.0.0-preview.26
dotnet new install CleanArchitecture.Blazor.Solution.Template::1.0.0-preview.26
Clean Architecture With Blazor Server
This repository hosts a Blazor Server application designed with Clean Architecture principles, featuring a sophisticated user interface and an efficient code generator. This setup allows for the swift creation of remarkable web applications using .NET Blazor technology.
Explore the Live Demo
Experience the application in action in Blazor Server mode by visiting
MS SQL Database: architecture.blazorserver.com
PostgreSQL Database: architecture.blazors.app
Visual Insights
Dive into the application's aesthetics and functionality through screenshots and a video walkthrough.
Development Setup
To get started with development, ensure you have the following tools and environments set up:
- Microsoft Visual Studio Community 2022 (64-bit)
- Docker
- .NET 8.0
- Unit Test
This streamlined overview provides all the essential information about the Blazor Server application's repository, live demo, visual insights, and required development environment.
Setup Multiple authentication providers
Use the following topics to configure your application to use the respective providers:
- Facebook instructions
- Twitter instructions
- Google instructions
- Microsoft instructions
- Other provider instructions
Docker Setup for Blazor Server Application
Pull the Docker Image
First, pull the latest version of the Blazor Server Docker image:
docker pull blazordevlab/cleanarchitectureblazorserver:latest
Run the Docker Container
You can start the container in two modes: using an in-memory database for development purposes or connecting to an MSSQL database for persistent storage and configuring SMTP for email functionalities.
For Development (In-Memory Database):
docker run -p 8443:443 -e UseInMemoryDatabase=true -e ASPNETCORE_ENVIRONMENT=Development -e ASPNETCORE_HTTPS_PORTS=443 blazordevlab/cleanarchitectureblazorserver:latest
For Production (Persistent Database and SMTP Configuration):
docker run -d -p 8443:443 \
-e UseInMemoryDatabase=false \
-e ASPNETCORE_ENVIRONMENT=Development \
-e ASPNETCORE_HTTP_PORTS=80 \
-e ASPNETCORE_HTTPS_PORTS=443 \
-e DatabaseSettings__DBProvider=mssql \
-e DatabaseSettings__ConnectionString="Server=127.0.0.1;Database=BlazorDashboardDb;User Id=sa;Password=<YourPassword>;MultipleActiveResultSets=true;Encrypt=false;TrustServerCertificate=false" \
-e SmtpClientOptions__User=<YourSMTPUser> \
-e SmtpClientOptions__Port=25 \
-e SmtpClientOptions__Server=<YourSMTPServer> \
-e SmtpClientOptions__Password=<YourSMTPPassword> \
-e Authentication__Microsoft__ClientId=<YourMicrosoftClientId> \
-e Authentication__Microsoft__ClientSecret=<YourMicrosoftClientSecret> \
-e Authentication__Google__ClientId=<YourGoogleClientId> \
-e Authentication__Google__ClientSecret=<YourGoogleClientSecret> \
-e Authentication__Facebook__AppId=<YourFacebookAppId> \
-e Authentication__Facebook__AppSecret=<YourFacebookAppSecret> \
blazordevlab/cleanarchitectureblazorserver:latest
Replace placeholder values (<Your...>) with your actual configuration details.
Docker Compose Setup
For easier management, use a docker-compose.yml file:
version: '3.8'
services:
blazorserverapp:
image: blazordevlab/cleanarchitectureblazorserver:latest
environment:
- UseInMemoryDatabase=false
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://+:80;https://+:443
- ASPNETCORE_HTTP_PORTS=80
- ASPNETCORE_HTTPS_PORTS=443
- DatabaseSettings__DBProvider=mssql
- DatabaseSettings__ConnectionString=Server=127.0.0.1;Database=BlazorDashboardDb;User Id=sa;Password=***;MultipleActiveResultSets=true;Encrypt=false;TrustServerCertificate=false
- SmtpClientOptions__User=<YourSMTPUser>
- SmtpClientOptions__Port=25
- SmtpClientOptions__Server=<YourSMTPServer>
- SmtpClientOptions__Password=<YourSMTPPassword>
- Authentication__Microsoft__ClientId=<YourMicrosoftClientId>
- Authentication__Microsoft__ClientSecret=<YourMicrosoftClientSecret>
- Authentication__Google__ClientId=<YourGoogleClientId>
- Authentication__Google__ClientSecret=<YourGoogleClientSecret>
- Authentication__Facebook__AppId=<YourFacebookAppId>
- Authentication__Facebook__AppSecret=<YourFacebookAppSecret>
ports:
- "8443:443"
volumes:
- files_volume:/app/Files
volumes:
files_volume:
Notes:
Replace <Your...> placeholders with actual values from your environment. The files_volume volume is used for persistent storage of application files. Adjust or extend volumes based on your specific needs. This optimized guide should help in setting up your Blazor Server application with either an in-memory or MSSQL database, configured SMTP server for email functionalities, and OAuth authentication for Microsoft, Google, and Facebook.
Supported Databases
- PostgreSQL (Provider Name:
postgresql
) - Microsoft SQL Server (Provider Name:
mssql
) - SQLite (Provider Name:
sqlite
)
How to select a specific Database?
- Open the
appsettings.json
file located in the src directory of theServer.UI
project. - Change the setting
DBProvider
to the desired provider name (See Supported Databases). - Change the
ConnectionString
to a connection string, which works for your selected database provider.
Docker compose https deployment
Create self-signed development certificates for the project
cmd:dotnet dev-certs https -ep $env:USERPROFILE\.aspnet\https\CleanArchitecture.Blazor.Server.UI.pfx -p Password@123
- cmd:
dotnet dev-certs https --trust
- cmd:
- Manage User secrets to save the password
- cmd:
dotnet user-secrets init
- cmd:
dotnet user-secrets -p Server.UI.csproj set "Kestrel:Certificates:Development:Password" "Password@123"
- cmd:
Code Generator Extension for visual studio.net 2022
<div><video controls src="https://user-images.githubusercontent.com/1549611/197116874-f28414ca-7fc1-463a-b887-0754a5bb3e01.mp4" muted="false"></video></div>
Install CleanArchitecture CodeGenerator For Blazor App
- Open Manage Extensions Search with
CleanArchitecture CodeGenerator For Blaozr App
- Download to Install
CleanArchitecture CodeGenerator For Blazor App Repo
The code generator can automatically generate the standard code
- Application Layer Code
-
- Domain Event
-
- Blazor UI Layer Code
-
- Task List
-
- Test Explorer
How to install solution templates
- install the project template
- run CLI:
dotnet new install ./
- run CLI:
dotnet new list
- run CLI:
<img width="828" alt="image" src="https://github.com/neozhu/CleanArchitectureWithBlazorServer/assets/1549611/f23022e0-3fd6-475a-96ab-84b0d3328e4c">
create a solution with the template
- run CLI:
dotnet new ca-blazorserver-sln
ordotnet new ca-blazorserver-sln -n NewProjectName(root namesapces)
- run CLI:
build a project template with nuget.exe
- run CLI:
.\nuget.exe add -Source .\ CleanArchitecture.Blazor.Solution.Template.1.0.0-preview.1.nupkg
<img width="1329" alt="image" src="https://github.com/neozhu/CleanArchitectureWithBlazorServer/assets/1549611/7c56dec5-5935-4fc5-ad81-8bcb65e9d0dc"> - create a new project from Clean Architecture for Blazor Server Solution <img width="769" alt="image" src="https://github.com/neozhu/CleanArchitectureWithBlazorServer/assets/1549611/ed7eb20f-aec2-4f69-95b7-d47c2eb20428">
- run CLI:
Tutorial: Removing an cutomer Object from a Project
Tutorial: add an contact Entity in the project
Why I chose Blazor Server
- I hate switching between C# and JavaScript at the same time in order to develop a project, which is why I opted for Blazor Server.
Characteristic
- Real-Time Updates
- Avoid repeating work
- Focus on story implementation
- Integration Hangfire dashboard
- Implementation OCR image recognition
- org chart
About
Coming up.
License
MIT License
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0-preview.26 | 133 | 8/9/2024 |
1.0.0-preview.21 | 103 | 4/18/2024 |
1.0.0-preview.20 | 798 | 2/21/2024 |
1.0.0-preview.19 | 268 | 2/13/2024 |
1.0.0-preview.18 | 326 | 2/2/2024 |
1.0.0-preview.17 | 1,517 | 12/6/2023 |
1.0.0-preview.16 | 1,387 | 10/14/2023 |
1.0.0-preview.15 | 87 | 9/22/2023 |
1.0.0-preview.14 | 90 | 8/28/2023 |
1.0.0-preview.12 | 83 | 8/15/2023 |
1.0.0-preview.11 | 86 | 8/10/2023 |
1.0.0-preview.10 | 87 | 8/9/2023 |
1.0.0-preview.9 | 118 | 8/9/2023 |
1.0.0-preview.8 | 77 | 8/8/2023 |
1.0.0-preview.7 | 76 | 8/8/2023 |
1.0.0-preview.6 | 115 | 7/21/2023 |
1.0.0-preview.5 | 90 | 7/16/2023 |
1.0.0-preview.4 | 86 | 7/11/2023 |
1.0.0-preview.3 | 93 | 7/5/2023 |
1.0.0-preview.2 | 97 | 7/5/2023 |
1.0.0-preview.1 | 125 | 7/3/2023 |
1.0.0-preview.26
- 🌈 Integrate Stl.Fusion for real-time updates
- 🐛 fixed ocr process issue
- 🌈 Implement Google and Microsoft External Provider Authentication