Codekali.Net.Config.UI
1.1.5
See the version list below for details.
dotnet add package Codekali.Net.Config.UI --version 1.1.5
NuGet\Install-Package Codekali.Net.Config.UI -Version 1.1.5
<PackageReference Include="Codekali.Net.Config.UI" Version="1.1.5" />
<PackageVersion Include="Codekali.Net.Config.UI" Version="1.1.5" />
<PackageReference Include="Codekali.Net.Config.UI" />
paket add Codekali.Net.Config.UI --version 1.1.5
#r "nuget: Codekali.Net.Config.UI, 1.1.5"
#:package Codekali.Net.Config.UI@1.1.5
#addin nuget:?package=Codekali.Net.Config.UI&version=1.1.5
#tool nuget:?package=Codekali.Net.Config.UI&version=1.1.5
Codekali.Net.Config.UI
A plug-and-play .NET 8 library that provides a browser-based GUI for managing
appsettings.jsonconfiguration files in any .NET solution.
✨ Features
- 📂 Auto-detect all
appsettings*.jsonfiles at runtime - 🌳 Tree view — expand, edit, add, delete inline with full array support
- 🔢 Array editing — expand arrays, append items, remove items by index
- ✏️ Raw JSON editor powered by Monaco (VS Code engine) with syntax highlighting, bracket matching, and
Ctrl+Sto save - 💬 Comment preservation —
//and/* */comments survive every save - ⇄ Move / Copy configuration keys between environment files
- ⊞ Side-by-side diff comparing any two environment files
- 🔄 Hot reload detection — banner notification when a file changes externally
- 💾 Never auto-saves — all changes require an explicit save action
- 🔒 Sensitive value masking (
password,secret,token,apikey) - 🌙 Dark / Light mode toggle
- 🔐 Development-only by default — optional access token or ASP.NET Core Authorization policy
🚀 Quick Start
1. Install
dotnet add package Codekali.Net.Config.UI
2. Register services
// Program.cs
builder.Services.AddConfigUI();
3. Activate middleware
app.UseConfigUI();
4. Open your browser
https://localhost:5001/config-ui
⚙️ Configuration
builder.Services.AddConfigUI(options =>
{
options.PathPrefix = "/config-ui";
options.AccessToken = "your-secret-token"; // simple token auth
options.AuthorizationPolicy = "ConfigUIAccess"; // or ASP.NET Core policy
options.AllowedEnvironments = ["Development","Staging"];
options.MaskSensitiveValues = true;
options.ReadOnly = false;
options.EnableAutoToken = false; // auto-generate token on first run
options.EnableHotReloadDetection = true;
options.ConfigDirectory = null; // defaults to CWD
});
Authorization policy example
builder.Services.AddAuthorization(o =>
o.AddPolicy("ConfigUIAccess", p => p.RequireRole("Admin")));
app.UseConfigUI(options => options.AuthorizationPolicy = "ConfigUIAccess");
Auto token generation
builder.Services.AddConfigUI(options => options.EnableAutoToken = true);
// Token is generated on first run and written to Properties/launchSettings.json
// as CONFIGUI_ACCESS_TOKEN. Subsequent runs load it from the environment variable.
IOptions reload guidance
⚠️ Changes written by the Config UI take effect at runtime only when consuming code uses
IOptionsSnapshot<T>(per-request) orIOptionsMonitor<T>(singleton-safe) rather thanIOptions<T>which snapshots at startup.
Access token is checked via:
- Header:
X-Config-Token: your-secret-token - Query string:
?token=your-secret-token
🔐 Security
The middleware returns 404 when accessed outside an allowed environment — it does not leak its existence. For production usage:
- Set
AllowedEnvironmentsexplicitly - Always set an
AccessToken - Consider putting the path behind a VPN or internal network
📁 Project Structure
src/Codekali.Net.Config.UI/
├── Middleware/ ConfigUIMiddleware.cs
├── Services/ AppSettingsService, BackupService, EnvironmentSwapService
│ ConfigFileRepository, JsonHelper
├── Interfaces/ IAppSettingsService, IBackupService,
│ IEnvironmentSwapService, IConfigFileRepository
├── Models/ ConfigEntry, AppSettingsFile, SwapRequest,
│ OperationResult, ConfigUIOptions, DiffResult
├── Extensions/ ServiceCollectionExtensions (AddConfigUI / UseConfigUI)
└── UI/wwwroot/ index.html (embedded single-page UI)
samples/SampleWebApp/ Reference project
tests/ xUnit + Moq + FluentAssertions
🛠 Development
# Build
dotnet build
# Run tests
dotnet test
# Run sample app
cd samples/SampleWebApp
dotnet run
# → open https://localhost:5001/config-ui
📦 NuGet Targets
| Target | Notes |
|---|---|
net8.0 |
Full ASP.NET Core FrameworkRef |
netstandard2.1 |
Works with any compatible host |
Codekali.Net.Config.UI — github.com/Codekali
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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 was computed. 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 was computed. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.AspNetCore.Authorization (>= 2.2.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
- NUglify (>= 1.21.0)
- System.Text.Json (>= 10.0.5)
-
net8.0
- Newtonsoft.Json (>= 13.0.3)
- NUglify (>= 1.21.0)
- System.Text.Json (>= 10.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v1.1.5 — Full appsettings management suite.
- Monaco Editor integration (VS Code engine) for Raw JSON editing
- JSON comment preservation across all tree view and raw editor operations
- Array support: expand, append items, remove items, update by index
- Null value editing, multi-line value textarea, Ctrl+Enter to save
- ASP.NET Core Identity Authorization policy support
- Hot reload detection with dismissible banner
- Fixed sensitive key masking ($schema, AllowedOrigins no longer masked)
- Auto-generated access token persisted to launchSettings.json (opt-in)
- CSS and JS minification on Release builds