blazor-wasm-boilerplate
Clean Architecture Boilerplate Template for .NET 6.0 Blazor WebAssembly built for FSH WebAPI with the goodness of MudBlazor Components.
File Explorer
Download Latest Version (.zip)- dotnet.yml
- dependabot.yml
- FUNDING.yml
- icon.png
- ide.host.json
- template.json
- launch.json
- settings.json
- tasks.json
- nswag-regen.ps1
- pull-shared-from-webapi.ps1
- CustomValidation.cs
- ErrorHandler.razor
- ErrorHandler.razor.cs
- FshCustomError.razor
- FshTable.cs
- FshTitle.razor
- PersonCard.razor
- PersonCard.razor.cs
- TablePager.razor
- DeleteConfirmation.razor
- Logout.razor
- AddEditModal.razor
- AddEditModal.razor.cs
- EntityClientTableContext.cs
- EntityField.cs
- EntityServerTableContext.cs
- EntityTable.razor
- EntityTable.razor.cs
- EntityTableContext.cs
- IAddEditModal.cs
- PaginationResponse.cs
- LanguageSelector.razor
- NotificationConnection.razor
- NotificationConnection.razor.cs
- NotificationConnectionStatus.razor
- ColorPanel.razor
- ColorPanel.razor.cs
- DarkModePanel.razor
- DarkModePanel.razor.cs
- RadiusPanel.razor
- RadiusPanel.razor.cs
- TableCustomizationPanel.razor
- TableCustomizationPanel.razor.cs
- ThemeButton.razor
- ThemeButton.razor.cs
- ThemeDrawer.razor
- ThemeDrawer.razor.cs
- Authentication.razor
- ForgotPassword.razor
- ForgotPassword.razor.cs
- Login.razor
- Login.razor.cs
- SelfRegister.razor
- SelfRegister.razor.cs
- BrandAutocomplete.cs
- Brands.razor
- Products.razor
- Products.razor.cs
- Account.razor
- Profile.razor
- Profile.razor.cs
- Security.razor
- Security.razor.cs
- RolePermissions.razor
- RolePermissions.razor.cs
- Roles.razor
- Roles.razor.cs
- UserProfile.razor
- UserProfile.razor.cs
- UserRoles.razor
- UserRoles.razor.cs
- Users.razor
- Users.razor.cs
- Tenants.razor
- Tenants.razor.cs
- UpgradeSubscriptionModal.razor
- AuditLogs.razor
- AuditLogs.razor.cs
- Dashboard.razor
- Dashboard.razor.cs
- Index.razor
- launchSettings.json
- TablePager.ar.resx
- TablePager.de.resx
- TablePager.en.resx
- TablePager.es.resx
- TablePager.fr.resx
- TablePager.id.resx
- TablePager.it.resx
- TablePager.km.resx
- TablePager.nl.resx
- TablePager.pt.resx
- TablePager.ru.resx
- TablePager.sv.resx
- Register.ar.resx
- Register.de.resx
- Register.en.resx
- Register.es.resx
- Register.fr.resx
- Register.id.resx
- Register.it.resx
- Register.km.resx
- Register.nl.resx
- Register.pt.resx
- Register.ru.resx
- Register.sv.resx
- Reset.ar.resx
- Reset.de.resx
- Reset.en.resx
- Reset.es.resx
- Reset.fr.resx
- Reset.id.resx
- Reset.it.resx
- Reset.km.resx
- Reset.nl.resx
- Reset.pt.resx
- Reset.ru.resx
- Reset.sv.resx
- Authentication.ar.resx
- Authentication.de.resx
- Authentication.en.resx
- Authentication.es.resx
- Authentication.fr.resx
- Authentication.id.resx
- Authentication.it.resx
- Authentication.km.resx
- Authentication.nl.resx
- Authentication.pt.resx
- Authentication.ru.resx
- Authentication.sv.resx
- ForgotPassword.ar.resx
- ForgotPassword.de.resx
- ForgotPassword.en.resx
- ForgotPassword.es.resx
- ForgotPassword.fr.resx
- ForgotPassword.id.resx
- ForgotPassword.it.resx
- ForgotPassword.km.resx
- ForgotPassword.nl.resx
- ForgotPassword.pt.resx
- ForgotPassword.ru.resx
- ForgotPassword.sv.resx
- Login.ar.resx
- Login.de.resx
- Login.en.resx
- Login.es.resx
- Login.fr.resx
- Login.id.resx
- Login.it.resx
- Login.km.resx
- Login.nl.resx
- Login.pt.resx
- Login.ru.resx
- Login.sv.resx
- Register.ar.resx
- Register.de.resx
- Register.en.resx
- Register.es.resx
- Register.fr.resx
- Register.id.resx
- Register.it.resx
- Register.km.resx
- Register.nl.resx
- Register.pt.resx
- Register.ru.resx
- Register.sv.resx
- AddEditBrandModal.ar.resx
- AddEditBrandModal.de.resx
- AddEditBrandModal.en.resx
- AddEditBrandModal.es.resx
- AddEditBrandModal.fr.resx
- AddEditBrandModal.id.resx
- AddEditBrandModal.it.resx
- AddEditBrandModal.km.resx
- AddEditBrandModal.nl.resx
- AddEditBrandModal.pt.resx
- AddEditBrandModal.ru.resx
- AddEditProductModal.ar.resx
- AddEditProductModal.de.resx
- AddEditProductModal.en.resx
- AddEditProductModal.es.resx
- AddEditProductModal.fr.resx
- AddEditProductModal.id.resx
- AddEditProductModal.it.resx
- AddEditProductModal.km.resx
- AddEditProductModal.nl.resx
- AddEditProductModal.pt.resx
- AddEditProductModal.ru.resx
- AddEditProductModal.sv.resx
- Brands.ar.resx
- Brands.de.resx
- Brands.en.resx
- Brands.es.resx
- Brands.fr.resx
- Brands.id.resx
- Brands.it.resx
- Brands.km.resx
- Brands.nl.resx
- Brands.pt.resx
- Brands.ru.resx
- Brands.sv.resx
- Products.ar.resx
- Products.de.resx
- Products.en.resx
- Products.es.resx
- Products.fr.resx
- Products.id.resx
- Products.it.resx
- Products.km.resx
- Products.nl.resx
- Products.pt.resx
- Products.ru.resx
- Products.sv.resx
- Chat.ar.resx
- Chat.de.resx
- Chat.en.resx
- Chat.es.resx
- Chat.fr.resx
- Chat.id.resx
- Chat.it.resx
- Chat.km.resx
- Chat.nl.resx
- Chat.pt.resx
- Chat.ru.resx
- Chat.sv.resx
- Home.ar.resx
- Home.de.resx
- Home.en.resx
- Home.es.resx
- Home.fr.resx
- Home.id.resx
- Home.it.resx
- Home.km.resx
- Home.nl.resx
- Home.pt.resx
- Home.ru.resx
- Home.sv.resx
- Resources.ar.resx
- Resources.de.resx
- Resources.en.resx
- Resources.es.resx
- Resources.fr.resx
- Resources.id.resx
- Resources.it.resx
- Resources.km.resx
- Resources.nl.resx
- Resources.pt.resx
- Resources.ru.resx
- Resources.sv.resx
- Account.ar.resx
- Account.de.resx
- Account.en.resx
- Account.es.resx
- Account.fr.resx
- Account.id.resx
- Account.it.resx
- Account.km.resx
- Account.nl.resx
- Account.pt.resx
- Account.ru.resx
- Account.sv.resx
- Profile.ar.resx
- Profile.de.resx
- Profile.en.resx
- Profile.es.resx
- Profile.fr.resx
- Profile.id.resx
- Profile.it.resx
- Profile.km.resx
- Profile.nl.resx
- Profile.pt.resx
- Profile.ru.resx
- Profile.sv.resx
- Security.ar.resx
- Security.de.resx
- Security.en.resx
- Security.es.resx
- Security.fr.resx
- Security.id.resx
- Security.it.resx
- Security.km.resx
- Security.nl.resx
- Security.pt.resx
- Security.ru.resx
- Security.sv.resx
- RolePermissions.ar.resx
- RolePermissions.de.resx
- RolePermissions.en.resx
- RolePermissions.es.resx
- RolePermissions.fr.resx
- RolePermissions.id.resx
- RolePermissions.it.resx
- RolePermissions.km.resx
- RolePermissions.nl.resx
- RolePermissions.pt.resx
- RolePermissions.ru.resx
- RolePermissions.sv.resx
- Roles.ar.resx
- Roles.de.resx
- Roles.en.resx
- Roles.es.resx
- Roles.fr.resx
- Roles.id.resx
- Roles.it.resx
- Roles.km.resx
- Roles.nl.resx
- Roles.pt.resx
- Roles.ru.resx
- Roles.sv.resx
- UserProfile.ar.resx
- UserProfile.de.resx
- UserProfile.en.resx
- UserProfile.es.resx
- UserProfile.fr.resx
- UserProfile.id.resx
- UserProfile.it.resx
- UserProfile.km.resx
- UserProfile.nl.resx
- UserProfile.pt.resx
- UserProfile.ru.resx
- UserProfile.sv.resx
- UserRoles.ar.resx
- UserRoles.de.resx
- UserRoles.en.resx
- UserRoles.es.resx
- UserRoles.fr.resx
- UserRoles.id.resx
- UserRoles.it.resx
- UserRoles.km.resx
- UserRoles.nl.resx
- UserRoles.pt.resx
- UserRoles.ru.resx
- UserRoles.sv.resx
- Users.ar.resx
- Users.de.resx
- Users.en.resx
- Users.es.resx
- Users.fr.resx
- Users.id.resx
- Users.it.resx
- Users.km.resx
- Users.nl.resx
- Users.pt.resx
- Users.ru.resx
- Users.sv.resx
- RegisterUserModal.ar.resx
- RegisterUserModal.de.resx
- RegisterUserModal.en.resx
- RegisterUserModal.es.resx
- RegisterUserModal.fr.resx
- RegisterUserModal.id.resx
- RegisterUserModal.it.resx
- RegisterUserModal.km.resx
- RegisterUserModal.nl.resx
- RegisterUserModal.pt.resx
- RegisterUserModal.ru.resx
- RegisterUserModal.sv.resx
- Reset.ar.resx
- Reset.de.resx
- Reset.en.resx
- Reset.es.resx
- Reset.fr.resx
- Reset.id.resx
- Reset.it.resx
- Reset.km.resx
- Reset.nl.resx
- Reset.pt.resx
- Reset.ru.resx
- Reset.sv.resx
- RoleModal.ar.resx
- RoleModal.de.resx
- RoleModal.en.resx
- RoleModal.es.resx
- RoleModal.fr.resx
- RoleModal.id.resx
- RoleModal.it.resx
- RoleModal.km.resx
- RoleModal.nl.resx
- RoleModal.pt.resx
- RoleModal.ru.resx
- RoleModal.sv.resx
- AddEditDocumentModal.ar.resx
- AddEditDocumentModal.de.resx
- AddEditDocumentModal.en.resx
- AddEditDocumentModal.es.resx
- AddEditDocumentModal.fr.resx
- AddEditDocumentModal.id.resx
- AddEditDocumentModal.it.resx
- AddEditDocumentModal.km.resx
- AddEditDocumentModal.nl.resx
- AddEditDocumentModal.pt.resx
- AddEditDocumentModal.ru.resx
- AddEditDocumentModal.sv.resx
- AddEditDocumentTypeModal.ar.resx
- AddEditDocumentTypeModal.de.resx
- AddEditDocumentTypeModal.en.resx
- AddEditDocumentTypeModal.es.resx
- AddEditDocumentTypeModal.fr.resx
- AddEditDocumentTypeModal.km.resx
- AddEditDocumentTypeModal.nl.resx
- AddEditDocumentTypeModal.pt.resx
- AddEditDocumentTypeModal.ru.resx
- DocumentStore.ar.resx
- DocumentStore.de.resx
- DocumentStore.en.resx
- DocumentStore.es.resx
- DocumentStore.fr.resx
- DocumentStore.id.resx
- DocumentStore.it.resx
- DocumentStore.km.resx
- DocumentStore.nl.resx
- DocumentStore.pt.resx
- DocumentStore.ru.resx
- DocumentStore.sv.resx
- DocumentTypes.ar.resx
- DocumentTypes.de.resx
- DocumentTypes.en.resx
- DocumentTypes.es.resx
- DocumentTypes.fr.resx
- DocumentTypes.km.resx
- DocumentTypes.nl.resx
- DocumentTypes.pt.resx
- DocumentTypes.ru.resx
- Tenants.de.resx
- Tenants.en.resx
- Tenants.it.resx
- Tenants.pt.resx
- UpgradeSubscriptionModal.de.resx
- UpgradeSubscriptionModal.en.resx
- UpgradeSubscriptionModal.it.resx
- UpgradeSubscriptionModal.pt.resx
- AuditLogs.ar.resx
- AuditLogs.de.resx
- AuditLogs.en.resx
- AuditLogs.es.resx
- AuditLogs.fr.resx
- AuditLogs.it.resx
- AuditLogs.km.resx
- AuditLogs.nl.resx
- AuditLogs.pt.resx
- AuditLogs.ru.resx
- AuditLogs.sv.resx
- Dashboard.ar.resx
- Dashboard.de.resx
- Dashboard.en.resx
- Dashboard.es.resx
- Dashboard.fr.resx
- Dashboard.id.resx
- Dashboard.it.resx
- Dashboard.km.resx
- Dashboard.nl.resx
- Dashboard.pt.resx
- Dashboard.ru.resx
- Dashboard.sv.resx
- Index.de.resx
- Index.en.resx
- Index.it.resx
- Index.pt.resx
- AddEditExtendedAttributeModalLocalization.ar.resx
- AddEditExtendedAttributeModalLocalization.de.resx
- AddEditExtendedAttributeModalLocalization.en.resx
- AddEditExtendedAttributeModalLocalization.es.resx
- AddEditExtendedAttributeModalLocalization.fr.resx
- AddEditExtendedAttributeModalLocalization.id.resx
- AddEditExtendedAttributeModalLocalization.it.resx
- AddEditExtendedAttributeModalLocalization.km.resx
- AddEditExtendedAttributeModalLocalization.nl.resx
- AddEditExtendedAttributeModalLocalization.pt.resx
- AddEditExtendedAttributeModalLocalization.ru.resx
- AddEditExtendedAttributeModalLocalization.sv.resx
- ExtendedAttributesLocalization.ar.resx
- ExtendedAttributesLocalization.de.resx
- ExtendedAttributesLocalization.en.resx
- ExtendedAttributesLocalization.es.resx
- ExtendedAttributesLocalization.fr.resx
- ExtendedAttributesLocalization.id.resx
- ExtendedAttributesLocalization.it.resx
- ExtendedAttributesLocalization.km.resx
- ExtendedAttributesLocalization.nl.resx
- ExtendedAttributesLocalization.pt.resx
- ExtendedAttributesLocalization.ru.resx
- ExtendedAttributesLocalization.sv.resx
- ImportExcelModal.ar.resx
- ImportExcelModal.de.resx
- ImportExcelModal.en.resx
- ImportExcelModal.es.resx
- ImportExcelModal.fr.resx
- ImportExcelModal.id.resx
- ImportExcelModal.it.resx
- ImportExcelModal.km.resx
- ImportExcelModal.nl.resx
- ImportExcelModal.pt.resx
- ImportExcelModal.ru.resx
- ImportExcelModal.sv.resx
- LanguageSelector.ar.resx
- LanguageSelector.de.resx
- LanguageSelector.en.resx
- LanguageSelector.es.resx
- LanguageSelector.fr.resx
- LanguageSelector.id.resx
- LanguageSelector.it.resx
- LanguageSelector.nl.resx
- LanguageSelector.pt.resx
- LanguageSelector.ru.resx
- DeleteConfirmation.en.resx
- DeleteConfirmation.es.resx
- DeleteConfirmation.fr.resx
- DeleteConfirmation.id.resx
- DeleteConfirmation.it.resx
- DeleteConfirmation.km.resx
- DeleteConfirmation.nl.resx
- DeleteConfirmation.pt.resx
- DeleteConfirmation.ru.resx
- DeleteConfirmation.sv.resx
- Logout.en.resx
- Logout.es.resx
- Logout.fr.resx
- Logout.id.resx
- Logout.it.resx
- Logout.km.resx
- Logout.nl.resx
- Logout.pt.resx
- Logout.ru.resx
- Logout.sv.resx
- ββDeleteConfirmation.ar.resx
- ββLogout.ar.resx
- MainLayout.de.resx
- MainLayout.en.resx
- MainLayout.es.resx
- MainLayout.fr.resx
- MainLayout.id.resx
- MainLayout.it.resx
- MainLayout.km.resx
- MainLayout.nl.resx
- MainLayout.pt.resx
- MainLayout.ru.resx
- MainLayout.sv.resx
- NavMenu.de.resx
- NavMenu.en.resx
- NavMenu.es.resx
- NavMenu.fr.resx
- NavMenu.id.resx
- NavMenu.it.resx
- NavMenu.km.resx
- NavMenu.nl.resx
- NavMenu.pt.resx
- NavMenu.ru.resx
- NavMenu.sv.resx
- NotFoundLayout.de.resx
- NotFoundLayout.en.resx
- NotFoundLayout.es.resx
- NotFoundLayout.fr.resx
- NotFoundLayout.id.resx
- NotFoundLayout.it.resx
- NotFoundLayout.km.resx
- NotFoundLayout.nl.resx
- NotFoundLayout.pt.resx
- NotFoundLayout.ru.resx
- NotFoundLayout.sv.resx
- SharedResource.de.resx
- SharedResource.en.resx
- SharedResource.it.resx
- ββMainLayout.ar.resx
- ββNavMenu.ar.resx
- ββNotFoundLayout.ar.resx
- ApiHelper.cs
- BaseLayout.razor
- BaseLayout.razor.cs
- DialogServiceExtensions.cs
- MainLayout.razor
- MainLayout.razor.cs
- NavMenu.razor
- NavMenu.razor.cs
- NotFound.razor
- SharedResource.cs
- fsh.css
- appsettings.Development.json
- appsettings.json
- favicon.ico
- full-stack-hero-logo.png
- index.html
- manifest.json
- service-worker.js
- service-worker.published.js
- _Imports.razor
- App.razor
- Client.csproj
- Program.cs
- FSHApi.cs
- IApiService.cs
- nswag.json
- AzureAdAuthenticationService.cs
- AzureAdAuthorizationMessageHandler.cs
- AzureAdClaimsPrincipalFactory.cs
- AccessTokenProviderAccessor.cs
- JwtAuthenticationHeaderHandler.cs
- JwtAuthenticationService.cs
- AuthorizationServiceExtensions.cs
- AuthProvider.cs
- IAuthenticationService.cs
- MustHavePermissionAttribute.cs
- Startup.cs
- AccessTokenProviderExtensions.cs
- ApplicationConstants.cs
- ConfigNames.cs
- IAppService.cs
- LocalizationConstants.cs
- StorageConstants.cs
- ConnectionState.cs
- ConnectionStateChanged.cs
- INotificationPublisher.cs
- NotificationPublisher.cs
- NotificationWrapper.cs
- Startup.cs
- ClientPreference.cs
- ClientPreferenceManager.cs
- FshTablePreference.cs
- IClientPreferenceManager.cs
- IPreference.cs
- IPreferenceManager.cs
- CustomColors.cs
- CustomTypography.cs
- DarkTheme.cs
- LightTheme.cs
- Client.Infrastructure.csproj
- GlobalUsings.cs
- Startup.cs
- Error.cshtml
- Error.cshtml.cs
- launchSettings.json
- appsettings.Development.json
- appsettings.json
- Host.csproj
- Program.cs
- ClaimsPrincipalExtensions.cs
- FSHClaims.cs
- FSHPermissions.cs
- FSHRoles.cs
- IEvent.cs
- MultitenancyConstants.cs
- BasicNotification.cs
- INotificationMessage.cs
- JobNotification.cs
- NotificationConstants.cs
- StatsChangedNotification.cs
- Shared.csproj
- .dockerignore
- .editorconfig
- .gitignore
- Directory.Build.props
- Directory.Build.targets
- Dockerfile
- dotnet.ruleset
- FSH.BlazorWebAssembly.nuspec
- FSH.BlazorWebAssembly.sln
- global.json
- icon.png
- LICENSE
- README.md
- stylecop.json
# Installation Guide
1. Get the code
git clone https://github.com/fullstackhero/blazor-wasm-boilerplate
Downloads the entire project code from GitHub to your computer.
cd blazor-wasm-boilerplate
Moves into the project folder you just downloaded.
2. Docker
Easy RecommendedPrerequisites
- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
docker build -t blazor-wasm-boilerplate .
Builds a runnable image based on the Dockerfile.
docker run -p 8080:80 blazor-wasm-boilerplate
Runs the built image as an actual container.
Run docker compose ps to check the containers are Up. If the README mentions a port, open http://localhost:PORT in your browser.
3. .NET
MediumPrerequisites
dotnet new --install FullStackHero.BlazorWebAssembly.Boilerplate
Type this command into your terminal and run it.
dotnet new --install FullStackHero.BlazorWebAssembly.Boilerplate::0.0.1-rc
Type this command into your terminal and run it.
dotnet new --install FullStackHero.WebAPI.Boilerplate::0.0.6-rc
Type this command into your terminal and run it.
After dotnet run, check the message or address shown in the terminal.
Pulled directly from this repo's README.
// repository documentation
Was this content helpful?
(0 ratings)
