Revolutionize Your SaaS Development with BlazorPlate

The All-In-One Blazor Boilerplate and Admin Dashboard Template You Need
Platform Overview

BlazorPlate is a comprehensive solution for .NET projects that utilizes .NET 10 and Blazor WASM. It offers pre-built boilerplate code with minimal customization required, catering to the needs of startups aiming to minimize development costs and efforts. By providing a well-structured and organized foundation, BlazorPlate enables startups to focus on building their business rather than the code. BlazorPlate's code ensures future modifications are more straightforward, reducing development time.

BlazorPlate's Clean Architecture is a developer-friendly solution that utilizes an organized and scalable project structure. The architecture is designed with various layers, including Presentation, Application, Domain, and Infrastructure, which promote modularity, maintainability, and separation of concerns.

Key features of BlazorPlate's Clean Architecture include:

  • Easy testing: Each layer can be tested separately, significantly reducing development time.
  • Scalability: New features or frameworks can be incorporated without impacting the entire project, allowing for faster development and quicker response times to meet changing user requirements.
  • Flexibility: Developers can choose the latest frameworks and technologies while still maintaining a consistent codebase.
Solution Structure (11 Projects)
Core Layer
  • BinaryPlate.Domain — Contains core domain entities representing business data and rules, independent of any external frameworks.
  • BinaryPlate.Application — Contains commands, queries, validators, and custom exceptions, orchestrating data flow and operations between the domain and infrastructure layers.
  • BinaryPlate.Shared — Contains shared classes, DTOs, and enums used across both frontend (Blazor) and backend (API) layers for consistent communication.
Infrastructure Layer
  • BinaryPlate.Infrastructure — Includes implementations for external interfaces, including database access, file operations, and external services.
  • BinaryPlate.Infrastructure.Razor — Contains Razor-based infrastructure services such as email template rendering using Razor views.
  • BinaryPlate.AppResources — Provides static resources and shared assets including images, scripts, and styles.
Presentation Layer
  • Aspire — The .NET Aspire AppHost project that orchestrates all infrastructure dependencies (SQL Server, Redis, mail server, etc.) for containerized development via Aspire Mode.
  • BinaryPlate.Server — The host project that provides endpoints for communication via APIs or web services, hosting controllers, SignalR hubs, and static assets.
  • BinaryPlate.BlazorPlate.Tdap — Encompasses the Tenant Dedicated Portal (TDP) accessible through custom sub-domains, and the Tenant Administration Portal (TAP) for host administrators at the primary domain.
  • BinaryPlate.BlazorPlate.Top — The Tenant Onboarding Portal (TOP), a public-facing Blazor WebAssembly app for tenant registration, subscription, and initial onboarding.

Watch tutorial: Clean Architecture & Solution Structure

BlazorPlate supports two first-class development modes for different workflow needs:

  • Aspire Mode: Uses .NET Aspire's AppHost to automatically spin up and connect all infrastructure dependencies (SQL Server, Redis, SMTP, etc.) via Docker containers. Ideal for consistent team onboarding; a new developer can be running the full stack in under 2 minutes.
  • Native Mode: Connects directly to locally installed services. Offers faster application startup times since infrastructure is already running locally. Preferred by experienced developers who prefer working with pre-installed services.

Switching between modes is a single configuration change; the application code, database schema, and all feature implementations are identical in both modes.

BlazorPlate is fully operational from first launch:

  • Pre-seeded demo data: Roles, permissions, and demo records are seeded automatically on startup. No scripts, no manual database setup.
  • Default admin accounts: SuperAdmin and Admin accounts are created automatically in demo mode, allowing immediate exploration of all portal areas.
  • 2-minute setup: Both Aspire Mode (Docker-based) and Native Mode reach a fully running state in under 2 minutes from clone.
  • Documented access points: Each user persona (Host Admin, Tenant Admin, Tenant User) has clearly documented default credentials and entry URLs.

BlazorPlate provides layer-appropriate HTTP context access patterns that preserve architectural boundaries:

  • IHttpContextService: Used in the Application layer. Wraps HttpContext access behind a testable interface, enabling unit testing of handlers without requiring a real HTTP request.
  • Direct HttpContext extensions: Used in Middleware and Filters where performance is critical and DI overhead should be avoided.
  • IHttpContextAccessor extensions: Used in Infrastructure services for convenient context access without coupling to the presentation layer.

BlazorPlate's API response wrapper and exception handling feature provide developers with a comprehensive solution for streamlining API consumption. This feature offers a unified API response structure, which simplifies development processes and eliminates inconsistencies in API responses.

  • Improved management of inconsistent API responses and error handling.
  • Unified API response structure for successful and failed responses.
  • Streamlined and predictable JSON formats.
  • Crystal-clear and concise error messages for system exceptions, ensuring a smooth and hassle-free user experience.
  • Quick identification and resolution of any issues that may arise.

BlazorPlate provides a testable, request-stable time abstraction throughout the application:

  • IUtcDateTimeProvider: Request-scoped UTC time provider injected across all layers. Clock values are frozen at request start, eliminating time drift within a single operation.
  • Singleton system clock with scoped freezing: A singleton provides the real system clock; scoped instances capture and freeze the value at request start for consistency.
  • Lazy factory: Time provider initialization is deferred until first use, avoiding unnecessary overhead in requests that do not require time values.
  • Periodic timer service: Enables bounded background polling within request scope for time-sensitive operations.

BlazorPlate's development team has completely redesigned ASP.NET Identity to offer an unparalleled user authentication experience. The revamped version utilizes Blazor-based components instead of traditional razor pages, simplifying the authentication process for businesses.

BlazorPlate's ASP.NET Identity includes crucial features such as Two-Factor Authentication, sign-in, sign-up, password reset, and account activation via email confirmation. These features ensure reliable and secure user authentication. With BlazorPlate's customized ASP.NET Identity, businesses can quickly create a secure and reliable user authentication system, allowing them to focus on developing their core business functionalities.

Watch tutorial: Identity Settings

BlazorPlate introduces robust Two-Factor Authentication (2FA), an identity and access management security method that requires two forms of identification to access resources and data. With 2FA enabled, users are required to verify their identity using two distinct authentication methods:

  • Something You Know: A combination of a username and password the user knows and uses to authenticate themselves.
  • Something You Have: A physical item or token such as a smartphone with an authenticator app that generates a one-time passcode.

By requiring both a username/password combination and a one-time passcode from an authenticator app, BlazorPlate significantly enhances protection against unauthorized access, strengthening overall account security and safeguarding sensitive resources and data.

Watch tutorial: Login Using 2FA & Recovery Code

BlazorPlate uses a two-token authentication strategy combining short-lived JWTs with secure HttpOnly refresh cookies:

  • Access tokens (JWT): Short-lived Bearer tokens carried in the Authorization header. Signed with a configurable secret and validated on every request.
  • Refresh tokens (HttpOnly cookie): Long-lived tokens stored in HttpOnly cookies, inaccessible to JavaScript. Tokens rotate automatically on every refresh cycle so a compromised refresh token cannot be reused.
  • Admin-configurable lifespans: Token expiry windows are adjustable from the admin panel at runtime with no application restart required.
  • Revocation: Refresh tokens are persisted and can be revoked per-user or globally from the admin interface.

BlazorPlate offers a robust Access Token Lifespan Management feature to ensure secure and reliable application access:

  • Intuitive GUI administration panel: BlazorPlate simplifies the management of access and refresh tokens by providing an intuitive GUI administration panel.
  • Expiration time frame: Administrators can limit the time frame in which access and refresh tokens can be used, increasing the security of your application.
  • Real-time adjustment: System administrators can make changes to token lifespans without disrupting the application.

Watch tutorial: Access Token & Refresh Token Settings

Experience the power of BlazorPlate with the capability to integrate with an extensive range of external OAuth authentication providers. From well-known platforms such as Outlook, Gmail, Twitter, and LinkedIn to many others, effortlessly empower your users with external login options. This feature enables users to sign in to your platform using their personal or work emails via secure OAuth 2.0 flows, ensuring a smooth and efficient authentication process.

BlazorPlate supports OAuth 2.0 social login with four providers, all sharing the same ASP.NET Core external login pipeline:

  • Personal Microsoft accounts: Sign in with personal @outlook.com or @hotmail.com accounts via Microsoft's consumer OAuth endpoint.
  • Google: OAuth 2.0 sign-in using a Google account.
  • LinkedIn: OAuth 2.0 sign-in using a LinkedIn account.
  • Twitter/X: OAuth 2.0 sign-in using a Twitter/X account.
  • Automatic account linking: Incoming OAuth identities are linked to existing accounts by verified email, so users keep their full history and permissions regardless of which login method they choose.

BlazorPlate offers a simple and streamlined way to manage user authentication and authorization. With BlazorPlate's built-in user management system, developers can easily manage users and roles, grant access to resources, and implement robust security measures. Developers can use BlazorPlate's permission-based authorization to control user access to application resources, preventing unauthorized access and data breaches.

BlazorPlate also allows for the customization of various user settings, including sign-in, password policy, and lockout settings, to meet specific security requirements.

Watch tutorial: Users & Roles Management

Authorization is crucial for securing client requests for data access in Web APIs. However, the built-in authorization filter in .NET Web API projects can be challenging to manage, as it requires hardcoding which users or roles can access newly added APIs or actions.

BlazorPlate's innovative Dynamic API Authorization addresses this challenge by automatically scanning the system APIs and their actions for potential permissions during application startup. It saves the permissions in the database's permission table, and any new API or action changes are synced by restarting the application.

This approach combines Role-Based Access Control (RBAC) with Claims-Based Access Control (CBAC), allowing system administrators to grant or revoke fine-grained permissions from users or roles directly through the administration GUI panel. RBAC governs access through role assignments, while CBAC enables dynamic, claim-driven authorization policies for more granular control. This eliminates the need for hardcoding access rules using the built-in AuthorizeAttribute filter, providing a more flexible and maintainable approach.

Watch tutorial: Dynamic API Authorization

BlazorPlate's latest enhancement introduces an advanced Identity Impersonation feature. This allows administrators to log in as other users, enabling them to experience and address user-specific issues more effectively. With this feature, admins can start and stop impersonation sessions with ease, providing a direct view of the user experience and facilitating more efficient support and troubleshooting.

The Identity Impersonation feature improves the ability to diagnose problems and deliver targeted assistance by allowing administrators to simulate user sessions. This capability ensures that administrators can accurately replicate and resolve issues while maintaining robust security measures.

By streamlining the management of user accounts and enhancing administrative efficiency, this feature contributes to better overall service quality. It allows for quicker issue resolution and improves the support experience for users.

BlazorPlate supports multiple deployment topologies to fit different business and infrastructure needs:

  • Single-Tenant Model: A single organization controls the entire system. Each tenant has their own application instance and a dedicated database, providing complete isolation and control.
  • Multi-Tenant Model: Multiple tenants share the same application instance with either a shared or separate database per tenant. This efficient resource sharing approach offers cost savings and simplified maintenance.
  • Hybrid Model: Tenants can choose between a shared database or a separate database at registration time. This can be achieved by deploying two instances of the Tenant Dedicated Portal (TDP) with different isolation strategies; the Tenant Onboarding Portal (TOP) allows tenants to select their preferred strategy during sign-up.

Watch tutorial: Multitenancy & Tenant Resolution

BlazorPlate organizes its multi-tenant portals into two complementary deployments, both running from a single shared codebase:

  • TDAP (Tenant Dedicated/Administration Portal): A single deployment that unifies the TAP and TDP. The same binary serves both the Host interface and all tenant interfaces — tenant resolution (subdomain, header, or query string) automatically determines which portal context to apply per request.
  • TAP (Tenant Administration Portal): The Host-facing side of TDAP, accessible at the default domain (e.g., https://www.example.com). Host Admins manage the full tenant lifecycle from here.
  • TDP (Tenant Dedicated Portal): The tenant-facing side of TDAP, served at each tenant's subdomain (e.g., https://acmecorp.example.com). Each tenant's users and data remain fully isolated from all others.
  • TOP (Tenant Onboarding Portal): A standalone companion deployment running on its own port. Handles self-service tenant registration, subdomain assignment, and database provisioning — completely decoupled from TDAP and requiring no host admin intervention.
  • Multi-subdomain support: Kestrel wildcard binding is pre-configured for local development. Wildcard TLS certificates handle subdomain routing in production.

The Tenant Administration Portal (TAP) provides Host Admin Controls for centralized tenant account management. It efficiently handles the full tenant lifecycle from a single interface:

  • Tenant account management: Create, modify, deactivate, and delete tenant accounts directly from the admin panel.
  • Multi-tenant user & role validators: Secure access is enforced across both host-level and tenant-level request contexts.
  • Demo mode: Auto-created SuperAdmin and Admin accounts for new environments accelerate initial setup and testing.

The Tenant Dedicated Portal (TDP) is the isolated environment provided by the Host for each tenant, served at the tenant's own subdomain (e.g., https://acmecorp.example.com). It is part of the TDAP deployment alongside TAP:

  • Tenant Admin access: Tenant Admins manage their organization's users, roles, and application data entirely within their own TDP instance.
  • End-user access: Regular tenant users interact with features scoped to their roles, with no visibility into other tenants' data.
  • Complete isolation: Each TDP instance is fully isolated — data, roles, and settings of one tenant are never accessible to another.
  • Subdomain routing: BlazorPlate automatically resolves the active tenant from the subdomain, so no manual tenant ID wiring is required in your service layer.

BlazorPlate's Tenant Onboarding Portal (TOP) serves as the crucial entry point for your SaaS customers. It enables self-service tenant registration and onboarding, ensuring a smooth transition to their dedicated portal:

  • Self-service registration: New tenants sign up and provision their environment without requiring host admin intervention.
  • Custom subdomain assignment: Each tenant receives a personalized subdomain URL matching their business name, e.g. my-business-name.saas.com.
  • Separate deployment: TOP runs as a standalone deployment, keeping onboarding flows decoupled from the main application.

BlazorPlate automatically identifies and resolves the active tenant from each incoming request without any developer intervention:

  • Request headers: Tenant context is read from a dedicated HTTP header, ideal for API-to-API communication.
  • Query strings: Tenant identification from URL query parameters for simple integrations.
  • Subdomains: Wildcard subdomain support enables tenant resolution from tenant-name.saas.com; Kestrel wildcard binding is pre-configured for local development too.

Tenant-aware data access control guarantees that users can only reach resources belonging to their own tenant. Multi-tenant CORS policy support ensures browser security across subdomain boundaries.

BlazorPlate provides enhanced security for tenant data privacy through robust data isolation, ensuring that each tenant can only access and manipulate their own data. Two isolation strategies are supported out of the box:

  • Single-Tenant: A single organization controls the entire system with a dedicated database exclusively owned by that tenant.
  • Shared Database (Multi-Tenant): All tenants reside in one database, differentiated by tenant ID. BlazorPlate implements a layer of abstraction that maps each tenant to their data via automatic query filtering.
  • Separate Database per Tenant: Each tenant gets their own dedicated SQL Server database, offering unparalleled data isolation and eliminating any chance of cross-tenant interference.

Per-tenant data isolation is enforced automatically via EF Core global query filters, with no manual scoping needed in application code. Dynamic database routing based on tenant context handles connection switching transparently.

BlazorPlate uses Entity Framework Core 10 with a strategy-based initialization pipeline:

  • Strategy-based initialization: Database creation, schema migration, and seeding are orchestrated at startup via a pluggable strategy pipeline; behavior adapts automatically to the active isolation mode (Single-Tenant, Shared, or Separate-Database).
  • Global query filters: Tenant-aware query filtering is applied at model-build time. All queries are automatically scoped to the active tenant, with no manual WHERE clauses required in application code.
  • Optimistic concurrency: Built-in concurrency tokens prevent data corruption when multiple users edit the same record simultaneously.
  • Automatic seeding: Roles, permissions, and demo data are seeded on first startup. The database is ready the moment the application launches.
  • Full migration support: Schema evolution is managed via EF Core migrations with support for all three isolation strategies.

With BlazorPlate, you can enjoy seamless management of database commands thanks to its atomic transaction processing. This feature allows for the efficient handling of multiple database commands in a single batch, eliminating any data inconsistencies.

  • Efficient management of multiple database commands in a single batch without any hitches.
  • Easy rollback support, which reverts the system to its original state in case of any errors.
  • Improved consistency in data management processes.
  • Reduced likelihood of data inconsistencies, resulting in a more robust and reliable application.

BlazorPlate empowers you with the Concurrency Conflict Handler, an indispensable feature that expertly manages concurrent editing scenarios. When multiple users attempt to edit or delete the same record simultaneously, this powerful mechanism steps in to ensure data integrity and prevent any accidental data loss.

  • Efficiently manages simultaneous database commands, maintaining data consistency effortlessly.
  • Empowers you to eliminate the chances of data conflicts caused by simultaneous editing or deletion of records.
  • Ensures data integrity and prevents any unintentional data loss when multiple users attempt to modify the same data at the same time.
  • Seamlessly supports various database systems, enabling smooth integration with different database engines.

BlazorPlate ships a production-ready hybrid caching layer via IHybridCachingService, combining two levels of cache for optimal performance:

  • L1 — In-Memory Cache: Lightning-fast, zero-latency cache within the running process. Ideal for frequently accessed, short-lived data.
  • L2 — Distributed Redis Cache: Shared across all application instances for horizontal scalability and cache coherence in multi-node deployments.
  • Three named cache profiles: Pre-configured TTL profiles (Default, Permissions, Tenant) eliminate per-call expiry guesswork and enforce team-wide consistency.
  • Automatic Redis fallback: If the Redis cluster becomes unavailable, the system transparently falls back to L1 in-memory cache, with no exceptions and no downtime.

BlazorPlate uses Hangfire for reliable, durable background job processing:

  • SQL Server persistence: Jobs are persisted to the database; they survive application restarts and are automatically retried on failure.
  • Two-interface design: IJobScheduler handles enqueueing and scheduling; IJobHandler handles execution. Clean separation keeps your application code decoupled from the job infrastructure.
  • Distributed trace context propagation: OpenTelemetry trace context (TraceId, SpanId) is propagated into every job execution. Hangfire jobs appear as child spans in your distributed traces for full end-to-end visibility from HTTP request to job completion.

BlazorPlate is a comprehensive platform designed to streamline SaaS development processes, which includes an efficient and secure file storage management system. This feature stands out with its ability to switch seamlessly between On-Premise and Azure Storage options, providing the best of both worlds.

  • Switching between On-Premise and Azure Storage options without needing to restart or redeploy the application.
  • Efficient data storage on local servers using On-Premise storage.
  • Enjoying the benefits of storing data on the Microsoft Azure cloud platform with Azure Storage.
  • Increased flexibility and convenience, saving valuable time and effort.

Watch tutorial: File Storage Settings

BlazorPlate ships a complete email delivery system with two delivery strategies:

  • Synchronous delivery: Emails are sent immediately within the request pipeline via SMTP. Suitable for low-volume, time-critical messages.
  • Asynchronous delivery (Hangfire): Emails are queued as Hangfire background jobs for high-throughput scenarios. Jobs are persisted and retried automatically on failure.
  • Razor-rendered templates: Rich HTML email templates cover registration confirmation, password reset, and account management notifications.
  • Development bypass: A configurable flag suppresses all outbound email during local development, preventing accidental sends to real addresses.
  • Factory pattern: IEmailStrategyFactory selects the delivery strategy at runtime based on application settings, with no code changes needed to switch modes.

BlazorPlate includes a scaffolded SMS notification layer ready for provider integration:

  • ISmsNotificationService: A clean interface abstraction defining the SMS contract. Implement with any provider (Twilio, AWS SNS, Azure Communication Services) without touching calling code.
  • Decoupled from application logic: All SMS dispatch calls go through the interface; switching or adding providers is a single registration change in the DI container.

BlazorPlate's SignalR integration is tenant-aware and permission-enforced from the ground up:

  • Tenant-scoped groups: Every hub connection is automatically placed into a tenant-specific SignalR group. Cross-tenant message leakage is structurally impossible.
  • Hub and method permission enforcement: Hub methods use the same claims-based authorization system as REST API endpoints, giving you one permission model applied everywhere.
  • HubClientBase with exponential backoff: The base client class implements automatic reconnection with exponential backoff, ensuring graceful recovery from transient network failures without custom client-side retry logic.

BlazorPlate ships a production-ready PDF generation pipeline:

  • Two export modes: On-Demand mode executes synchronously within the request for small datasets; Background mode enqueues a Hangfire job for large or long-running reports.
  • Job lifecycle states: Background report jobs transition through Pending → InProgress → Completed | Failed states, persisted to SQL Server.
  • Real-time progress via SignalR: Clients receive live progress notifications as background reports execute, with no polling required.
  • Tenant-scoped generation: All report data is automatically filtered to the requesting tenant. Cross-tenant data leakage in reports is structurally impossible.
  • A4 landscape layout: Default document layout is A4 landscape, configurable per report type.

BlazorPlate ships with SQL Server as the default database. Because the data access layer is built on Entity Framework Core, teams can migrate to other relational database engines without restructuring the application architecture:

  • Migration path: EF Core's provider abstraction enables migration to PostgreSQL, MySQL, SQLite, and Oracle.
  • PostgreSQL guide: A dedicated migration guide for switching from SQL Server to PostgreSQL is available.
  • Infrastructure agnostic: BlazorPlate runs on any environment capable of hosting .NET 10 applications — Azure, AWS, DigitalOcean, on-premise servers, or any container platform.
  • Container-compatible: As a standard .NET 10 application, BlazorPlate is fully compatible with containerized deployment via Docker, Docker Compose, or Kubernetes.

Migration guidance for additional database providers can be made available upon request. Contact us at info@blazorplate.net.

BlazorPlate ships with OpenTelemetry 1.54.0+ fully pre-configured, providing end-to-end journey tracing out of the box. When a request enters the system, a distributed trace is created and propagated automatically across APIs, services, databases, and background workers. For example, when a user places an order:

Trace: Place Order Request
  ├─ Span: HTTP Request (Order API)
  │   ├─ Span: SQL Query (EF Core)
  │   └─ Span: Send Email (Notification)
  ├─ Span: Worker Processing (Hangfire)
  └─ Span: Generate PDF Report

BlazorPlate eliminates the typical complexity of achieving fully connected traces by pre-configuring trace context propagation across all instrumented sources:

  • Auto-instrumented sources: ASP.NET Core, EF Core, HttpClient, and Hangfire are all instrumented out of the box, with zero boilerplate required.
  • Hangfire trace context propagation: OpenTelemetry TraceId and SpanId are injected into every background job at enqueue time and restored at execution time. Hangfire jobs appear as child spans of the originating HTTP request, with no gaps or orphaned spans.
  • Three-layer filter pipeline: Health check noise, internal framework spans, and low-value infrastructure calls are filtered before export, keeping traces clean and actionable.
  • [TraceProperty] attribute: Mark any property or field on a MediatR command or query with [Trace] to automatically tag its span with that value via MediatRTracingBehavior, with no manual span enrichment needed. Five trace modes control how values are captured: Primitive (scalars and enums, lowest cost), Summary (collections recorded as count only, avoids large payloads), Json (serializes small DTOs, configurable via MaxJsonLength), Redacted (PII-safe: value is transformed by a redaction strategy before the span tag is written), and StructuredLog (emits a full structured log entry alongside the span, highest cost, suited for audit events). Four redaction strategies are available: Full (replaces the entire value with [REDACTED]), Hash (SHA-256 fingerprint for correlation without exposure), Mask (preserves first and last characters, e.g. jo***om), and Partial (keeps a configurable number of leading characters). Example: [Trace(TraceMode.Redacted, RedactionStrategy.Mask, redactionReason: "PII-Email")] on an Email property writes argument.request.Email = "jo***om" to the span.
  • [TraceMethod] AOP attribute: Decorate any service method with [TraceMethod] to automatically create a child span, with no manual Activity creation needed. When traceArguments: true is set, method arguments are captured as span tags and any PII properties annotated with [TraceProperty(TraceMode.Redacted, ...)] are automatically redacted before the span tag is written.
  • PII redaction in distributed trace spans: Personally identifiable information is automatically redacted from span attributes before export to any OTLP backend.
  • 6 pre-wired business metrics: Login events, user registrations, tenant provisioning, job completions, file uploads, and API error rates, tracked with no additional code.

BlazorPlate's logging configuration adapts automatically to the deployment environment:

  • Local development: Colored, single-line console output for fast readability and developer ergonomics.
  • Staging and production: Structured JSON output with all fields in machine-parseable format, ready to pipe into Azure Monitor or any OTLP-compatible log aggregation platform.
  • UTC timestamps: All log entries use UTC timestamps, eliminating timezone ambiguity in distributed deployments.

No manual configuration switching needed; the correct format is selected based on the ASPNETCORE_ENVIRONMENT value.

BlazorPlate exposes health check endpoints covering the full infrastructure dependency chain:

  • Load balancer probes: A /health/live endpoint confirms the process is running and accepting traffic.
  • Kubernetes liveness and readiness: Separate liveness and readiness endpoints allow Kubernetes to distinguish between "process is alive" and "process is ready to serve traffic", preventing traffic routing to initializing or degraded instances.
  • Zero custom implementation: Database checks are always registered; Redis and storage checks activate automatically when the corresponding connection strings are configured. Your team gets production-grade health observability without writing a single health check class.

BlazorPlate is built on MudBlazor, the top-rated Blazor Components UI Framework. MudBlazor is an open-source project that provides a wide range of versatile and responsive UI components designed with Material Design.

  • Versatile UI components: Buttons, cards, forms, dialogs, and more to create a visually appealing and intuitive user interface.
  • Advanced components: Data grids and charts making it easy for users to access complex data in a simplified and user-friendly way.
  • Material Design: MudBlazor's UI components are designed with Material Design, a popular design language that promotes clean, modern, and intuitive interfaces.

BlazorPlate's integration with MudBlazor allows developers to enhance their web application's appearance and user experience while streamlining their development process.

BlazorPlate uses a three-layer settings architecture that gives operators full runtime control without redeployment:

  • AppOptions: Strongly-typed configuration classes bound to appsettings.json, serving as the base layer for static configuration.
  • IAppOptionsService: A service abstraction that reads merged configuration at runtime, combining static file values with any database overrides.
  • IRuntimeSettingsService: Persists admin-defined overrides to the database and serves them back to the application layer on each request with no restart required. Operators can change password complexity rules, token lifespans, sign-in lockout thresholds, and file storage type live from the admin panel.

BlazorPlate enables dynamic localization of UI elements, ensuring a tailored experience based on user language preferences:

  • On-the-fly UI updates: Adjust interface elements dynamically to match the user's language preferences.
  • Data formatting flexibility: Automatically adapt formats like currencies and dates according to regional and language settings.
  • Enhanced user interaction: Improved user engagement through a personalized and language-sensitive interface.
  • Integration benefits: Implementing BlazorPlate's dynamic localization with culture-based adaptation enhances application accessibility and user satisfaction globally.

Watch tutorial: Multilingual Support & Localization

BlazorPlate proudly introduces LingoTextField, a groundbreaking component revolutionizing your app with dynamic, adaptive translations. Bid farewell to static data headaches and the complexity of managing multiple translation tables. LingoTextField simplifies your workflow by consolidating all translations into a single, streamlined table.

  • Effortless Multilingual Management: Uses a single database for all entity translations, simplifying your workflow and ensuring consistency.
  • Dynamic, Adaptive Translations: LingoTextField adapts your app's content on-the-fly, delivering the right message to every user in their preferred language.
  • Seamless User Experience: Ensures your app is always current and globally accessible, fostering a smooth user experience across cultures.