TechIn.StatusPage
1.2.0
dotnet add package TechIn.StatusPage --version 1.2.0
NuGet\Install-Package TechIn.StatusPage -Version 1.2.0
<PackageReference Include="TechIn.StatusPage" Version="1.2.0" />
<PackageVersion Include="TechIn.StatusPage" Version="1.2.0" />
<PackageReference Include="TechIn.StatusPage" />
paket add TechIn.StatusPage --version 1.2.0
#r "nuget: TechIn.StatusPage, 1.2.0"
#:package TechIn.StatusPage@1.2.0
#addin nuget:?package=TechIn.StatusPage&version=1.2.0
#tool nuget:?package=TechIn.StatusPage&version=1.2.0
TechIn.StatusPage
A beautiful, developer-first status page and health check dashboard for ASP.NET Core applications.
TechIn.StatusPage seamlessly transforms your native .NET HealthChecks into a sleek, public-facing portal. It tracks uptime history, visualizes system stability, monitors latency, and automatically reports outages with a modern, minimalist interface.
✨ Features
- Native Integration: Hooks directly into
Microsoft.Extensions.Diagnostics.HealthChecks. No new health check logic required. - Uptime History: Visualizes past system performance and partial outages over a configurable retention period.
- Multiple Themes: Choose from beautifully crafted, responsive templates like
Axiom(dark-first, developer-oriented) orPulse(cyber aesthetic). - Latency Tracking: Displays real-time response times for your services.
- Zero Static Files: Rendered entirely dynamically. No need to pollute your
wwwrootdirectory. - Highly Customizable: Control footers, auto-refresh intervals, and retention days right from your
Program.cs.
🎨 Screenshots & Themes
TechIn.StatusPage comes with multiple built-in themes to match your brand aesthetic.
| Axiom Template (Dark, Developer-First) |
|---|
| <img src="assets/images/theme-axiom.png" alt="Axiom Theme" width="400px"> |
| Pulse Template (Cyberpunk Aesthetic) |
|---|
| <img src="assets/images/theme-pulse.png" alt="Pulse Theme" width="400px"> |
| Classic Template |
|---|
| <img src="assets/images/theme-classic.png" alt="Classic Theme" width="400px"> |
📦 Installation
Install the main package via NuGet. This umbrella package automatically includes the required Core storage engine and the UI rendering library.
dotnet add package TechIn.StatusPage
_(Note: Ensure you also have your standard AspNetCore.HealthChecks._ packages installed for the specific services you want to monitor).*
🚀 Quick Start & Configuration
TechIn.StatusPage is designed to be highly configurable while requiring minimal setup. Add the services and map the endpoint in your Program.cs:
var builder = WebApplication.CreateBuilder(args);
// 1. Configure TechIn Status Page Options
builder.Services.AddStatusPage(options =>
{
options.Title = "Acme Corp";
options.HistoryRetentionDays = 90;
options.PollingIntervalSeconds = 30;
options.ShowLatency = true;
options.ActivateAutoRefresh = false;
options.ShowFooter = true;
options.FooterText = "Powered By";
options.FooterLinkText = "TechIn";
options.FooterLinkUrl = "https://github.com/tekinozan";
// Pick your template:
options.Template = StatusPageTemplate.Axiom; // dark-first, developer-oriented
// options.Template = StatusPageTemplate.Pulse; // cyber aesthetic
// options.Template = StatusPageTemplate.Axiom; // clean, minimal
});
// 2. Register your standard .NET Health Checks
builder.Services.AddHealthChecks()
.AddRedis("localhost:6379", "Redis")
.AddCheck("API Server", () => HealthCheckResult.Healthy("Responding normally"))
.AddCheck("Database", () =>
{
// Simulate occasional degradation
return Random.Shared.Next(100) < 95
? HealthCheckResult.Healthy("Connected (12ms)")
: HealthCheckResult.Degraded("Slow queries detected");
})
.AddCheck("Redis Cache", () => HealthCheckResult.Healthy("6 nodes online"))
.AddCheck("Payment Gateway", () =>
{
// Simulate rare downtime
return Random.Shared.Next(100) < 98
? HealthCheckResult.Healthy("Stripe API OK")
: HealthCheckResult.Unhealthy("Connection timeout");
})
.AddCheck("Email Service", () => HealthCheckResult.Healthy("SendGrid OK"))
.AddCheck("Search Index", () =>
{
return Random.Shared.Next(100) < 90
? HealthCheckResult.Healthy("Elasticsearch green")
: HealthCheckResult.Degraded("Yellow cluster state");
});
var app = builder.Build();
// 3. Map the TechIn Status Page UI endpoint
app.MapStatusPage("/status");
// Standard health endpoint still works perfectly
app.MapHealthChecks("/health");
// Optional: Redirect root to status page
app.MapGet("/", () => Results.Redirect("/status"));
app.Run();
🏗️ Architecture
This package is built with a clean, decoupled architecture:
- TechIn.StatusPage.Core: The background publisher and state management engine (tracks history in-memory).
- TechIn.StatusPage.UI: The dynamic Razor rendering layer.
- TechIn.StatusPage (Hosting): The wrapper that brings them together with easy-to-use extension methods for your
Program.cs.
📄 License
This project is licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- TechIn.StatusPage.Core (>= 1.2.0)
- TechIn.StatusPage.UI (>= 1.2.0)
-
net8.0
- TechIn.StatusPage.Core (>= 1.2.0)
- TechIn.StatusPage.UI (>= 1.2.0)
-
net9.0
- TechIn.StatusPage.Core (>= 1.2.0)
- TechIn.StatusPage.UI (>= 1.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.