Now Available

Modern C# Development Platform

Build faster, deploy smarter, and scale effortlessly with Noundry's comprehensive suite of C# libraries, tools, and CLI utilities.

Stay up to date

Add your email to get the latest updates, new libraries, and tips.

Terminal
New

Introducing Noundry Studio

studio.noundry.com

A new .NET CLI that scaffolds 53 owned Razor UI components straight into your project — no Node.js, full source control, three built-in themes. Build a .NET 10 UI in minutes, not weeks.

Try Studio
THE NOUNDRY ETHOS

Modern C#. Modern Tooling. No Compromises.

Noundry seeks a clean break from the past. We deeply respect the .NET ecosystem and C# as a language, but we're paving the way for a fresh perspective—one free from the Windows-only perception that has long been associated with the dotnet brand.

We embrace modern designs, patterns, and practices in a pragmatic but opinionated way. Noundry removes the foot guns and stigma that come baked into default dotnet templates, enabling a new generation of developers to build world-class, cloud-agnostic solutions with modern UI patterns—without carrying the baggage of legacy assumptions.

C# is a modern, powerful language. It deserves modern tooling to match.

Noundry Building Blocks

Modular, reusable components that form the building blocks of your applications. Mix and match to create exactly what you need.

Core ORM

Noundry.Tuxedo

Modern ORM combining Dapper and Contrib functionality

Noundry.Tuxedo.Bowtie

Code and CLI based database schema synchronization

Noundry.Tuxedo.Exceptions

Strongly-typed database exception translation across SQL Server, PostgreSQL, MySQL, and SQLite

Noundry.Tuxedo.Auditor

Automatic CRUD audit logging with database-specific JSON storage

dotnet add package Noundry.Tuxedo
dotnet add package Noundry.Tuxedo.Bowtie
dotnet add package Noundry.Tuxedo.Exceptions
dotnet add package Noundry.Tuxedo.Auditor

Data & Integration

Noundry.Connector

Enterprise API Client library built on Refit with automatic authentication and full CRUD operations

Noundry.Slurp

High-performance CSV to database ingestion with smart schema inference

Noundry.Streams

High-performance event stream ingestion and relay with 50K+ msg/sec throughput

Noundry.Tuxedo.Cufflink

Fake data generation with automatic FK/PK relationship detection

dotnet add package Noundry.Connector
dotnet add package Noundry.Slurp
dotnet add package Noundry.Streams
dotnet add package Noundry.Tuxedo.Cufflink

Web & UI

.NET CLI to scaffold 53 owned Razor UI components into your project — no Node.js required

Noundry.UI

Complete UI component library with Alpine.js integration

Noundry.TagHelpers

Razor TagHelpers optimized for Tailwind CSS

Noundry.RazorHelpers

Fluent HTML builder for minimal APIs with TableBuilder and SelectBuilder

Noundry.Tailbreeze

Zero-config Tailwind CSS integration for ASP.NET Core, no Node.js required

dotnet tool install -g Noundry.Studio
dotnet add package Noundry.UI
dotnet add package Noundry.TagHelpers
dotnet add package Noundry.RazorHelpers
dotnet add package Noundry.Tailbreeze

Utilities

Noundry.Guardian

Lightweight guard clauses for defensive programming

Noundry.Assertive

Fluent assertion library for readable, expressive tests

Noundry.Sod

Zod inspired JSON schema validator for C#

Noundry.DotEnvX

Enhanced .env file support with encryption, validation, and environment-specific configurations

dotnet add package Noundry.Guardian
dotnet add package Noundry.Assertive
dotnet add package Noundry.Sod
dotnet add package Noundry.DotEnvX

Platform & AI

Noundry.Authnz

OAuth 2.0 authentication library for ASP.NET Core with multi-provider support

Noundry.Sanquhar

Modern .NET 8-10 mailing library with Razor templates and multi-provider support

Noundry.AIGW

Unified AI Gateway with multi-provider support (OpenAI, Anthropic, Google, Nebius)

Noundry.Jobs

Job scheduling library with database, file, HTTP/API, and email operations

dotnet add package Noundry.Authnz
dotnet add package Noundry.Sanquhar
dotnet add package Noundry.AIGW
dotnet add package Noundry.Jobs

CLI Tools

Bowtie.CLI

Database schema synchronization CLI tool

Cufflink.CLI

Fake data generation CLI with automatic relationship detection

Slurp.Tool

CSV to database ingestion CLI tool

Jobs.Tool (njobs)

Cross-platform CLI for scheduled jobs via Task Scheduler or crontab

Engine.Cli (ndng)

Docker-first .NET deployment with one command

AuthnzNet.CLI (ndaz)

OAuth 2.0 + OIDC server in three commands

Spinup

Quick project scaffolding and environment setup

dotnet tool install -g Noundry.Tuxedo.Bowtie.CLI
dotnet tool install -g Noundry.Tuxedo.Cufflink.CLI
dotnet tool install -g Noundry.Slurp.Tool
dotnet tool install -g Noundry.Jobs.Tool
dotnet tool install -g Noundry.Engine.Cli
dotnet tool install -g Noundry.AuthnzNet.CLI
dotnet tool install -g Noundry.Spinup
UserService.cs
using Noundry.Guardian;

public class UserService
{
 public User CreateUser(string email, int age)
 {
 // Guard against null or whitespace
 Guard.Against.NullOrWhiteSpace(email);

 // Guard against invalid email format
 Guard.Against.InvalidFormat(email,
 @"^[^@\s]+@[^@\s]+\.[^@\s]+$");

 // Guard against invalid age range
 Guard.Against.OutOfRange(age, 18, 120);

 return new User { Email = email, Age = age };
 }

 public Product GetProduct(int id, Product product)
 {
 // Guard against negative ID
 Guard.Against.Negative(id);

 // Guard against null product
 Guard.Against.Null(product);

 return product;
 }
}

Noundry.Guardian

Guard Clauses for Validation

Lightweight guard clauses for defensive programming. Validate method parameters with clean, expressive syntax using the correct Guard.Against pattern.

  • 25+ guard methods for comprehensive validation
  • Null checks, range validation, string format verification
  • Zero allocations and performance optimized
  • CallerArgumentExpression for automatic parameter names

Noundry.RazorHelpers

Fluent HTML Builder for Minimal APIs

Render Razor components as HTML strings or IResult responses in ASP.NET Core minimal APIs. Build tables, selects, and dynamic content with a fluent, type-safe API.

  • 80+ HTML elements with fluent builder API
  • TableBuilder and SelectBuilder for typed collections
  • Razor component rendering to HTML string or IResult
  • .NET 9 and .NET 10 support
Program.cs
using Noundry.RazorHelpers;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorResults();
var app = builder.Build();

// Render a table from a collection
app.MapGet("/users", (List<User> users) =>
{
 var html = HtmlBuilder.Table(users)
 .Column("Name", u => u.Name)
 .Column("Email", u => u.Email)
 .WithCss("table-auto w-full")
 .Build();

 return Results.Content(html, "text/html");
});

// Render a Razor component as IResult
app.MapGet("/dashboard", async (RazorResults razor) =>
 await razor.RenderAsync<Dashboard>(
 new { Title = "Home" }));

Noundry Libraries in Action

See how Noundry libraries simplify common development tasks with clean, production-ready code.

Program.cs
// Program.cs
using Noundry.DotEnvX.Core.Extensions;

var builder = WebApplication.CreateBuilder(args);

// Load .env with encryption & validation
builder.Configuration.AddDotEnvX(options =>
{
 options.Path = ".env";
 options.EnvironmentSpecific = true;
 options.Required = new[] { 
 "DATABASE_URL", 
 "JWT_SECRET"
 };
 options.PrivateKey = 
 Environment.GetEnvironmentVariable("DOTENV_PRIVATE_KEY");
});

// Use configuration values
var jwtSecret = builder.Configuration["JWT_SECRET"];

Noundry.DotEnvX

Environment Variable Management

Enhanced .env file support with AES-256 encryption, validation, and environment-specific configurations. Secure your secrets while maintaining developer productivity.

  • AES-256 encryption for secrets
  • Environment-specific files (.env.development, .env.production)
  • Required variable validation

Noundry.Sod

Schema Validation Library

Zod-inspired schema validation for C# with fluent API, type-safe validation, and comprehensive error messages. Build complex validation schemas with ease.

  • Fluent, chainable API
  • Type-safe validation with IntelliSense
  • Comprehensive validators (strings, numbers, objects, unions)
  • Transforms, refinements, and coercion
UserValidator.cs
var userSchema = Sod.Object<User>()
 .Field(u => u.Username,
 Sod.String().Min(3).Max(20))
 .Field(u => u.Email,
 Sod.String().Email())
 .Field(u => u.Age,
 Sod.Number().Min(18).Max(100))
 .Field(u => u.Website,
 Sod.String().Url().Optional());

// Validate data
var result = userSchema.Parse(userData);
if (result.Success) {
 var user = result.Data;
}

Noundry.Jobs

Job Scheduling & Automation

Comprehensive job scheduling solution with a library for database, file, HTTP/API, and email operations, plus a CLI tool (njobs) for creating and managing scheduled jobs across Windows, Linux, and macOS.

  • Database operations (SQL Server, PostgreSQL, MySQL, SQLite)
  • File operations with async support
  • HTTP/API client with authentication
  • Email support via SMTP (MailKit)
  • CLI for managing scheduled jobs (cron/Task Scheduler)
  • Cross-platform C# script execution (.csx, .linq)
cleanup.csx
#!/usr/bin/env dotnet-script
#r "nuget: Noundry.Jobs, 1.0.0"

using Noundry.Jobs.Database;
using Noundry.Jobs.Email;

// Database cleanup
var db = new JobsDb(connectionString,
 DatabaseType.SqlServer);

var deleted = await db.ExecuteAsync(
 "DELETE FROM Logs WHERE CreatedAt < @Date",
 new { Date = DateTime.UtcNow.AddDays(-30) });

// Send notification
using var email = new JobsEmail()
 .Configure("smtp.gmail.com", 587, user, pass)
 .UseStartTls();

await email.SendAsync("admin@example.com",
 "admin@example.com",
 $"Cleanup: {deleted} records deleted",
 "Job completed successfully");

// Schedule with njobs CLI:
// njobs create DailyCleanup cleanup.csx "0 2 * * *"

Noundry.UI

Razor UI Component Library

Complete UI component library with Alpine.js integration and Tailwind CSS for C# Razor Pages and MVC. Server-side rendering with client-side interactivity.

  • Complete component library for Razor Pages & MVC
  • Alpine.js integration for interactivity
  • Tailwind CSS styling
  • Server-side rendering with SEO benefits
  • 73+ components including interactive charts (bar, line, area, pie, donut, radar)
Index.cshtml
@page
@model IndexModel

<noundry-card
 title="Welcome to Noundry"
 class="max-w-sm">
 <p>Beautiful Razor components with Alpine.js interactivity.</p>
</noundry-card>

<div class="flex gap-4 mt-6">
 <noundry-button
 bg-color="blue"
 x-on:click="alert('Clicked!')">
 Primary Button
 </noundry-button>

 <noundry-button
 bg-color="gray">
 Secondary Button
 </noundry-button>
</div>

TagHelpers for Beautiful Forms

Build complex forms with simple, declarative syntax. TagHelpers handle styling, validation, and accessibility automatically.

Contact.cshtml
<noundry-card title="Contact Us">
 <form method="post">
 <noundry-text-input
 asp-for="FirstName"
 label="First Name"
 placeholder="Enter your first name"
 required="true" />

 <noundry-text-input
 asp-for="Email"
 type="email"
 label="Email Address"
 icon="envelope" />

 <noundry-textarea
 asp-for="Message"
 label="Message"
 rows="5" />

 <noundry-button type="submit" variant="primary" size="lg">
 Send Message
 </noundry-button>
 </form>
</noundry-card>

Noundry Tools & Packages

Core ORM

dotnet add package Noundry.Tuxedo
dotnet add package Noundry.Tuxedo.Bowtie
dotnet add package Noundry.Tuxedo.Exceptions
dotnet add package Noundry.Tuxedo.Auditor

Data & Integration

dotnet add package Noundry.Connector
dotnet add package Noundry.Slurp
dotnet add package Noundry.Streams
dotnet add package Noundry.Tuxedo.Cufflink

Web & UI

dotnet add package Noundry.UI
dotnet add package Noundry.TagHelpers
dotnet add package Noundry.RazorHelpers
dotnet add package Noundry.Tailbreeze

Utilities

dotnet add package Noundry.Guardian
dotnet add package Noundry.Assertive
dotnet add package Noundry.Sod
dotnet add package Noundry.DotEnvX

Platform & AI

dotnet add package Noundry.Authnz
dotnet add package Noundry.Sanquhar
dotnet add package Noundry.AIGW
dotnet add package Noundry.Jobs

CLI Tools

dotnet tool install -g Noundry.Tuxedo.Bowtie.CLI
dotnet tool install -g Noundry.Tuxedo.Cufflink.CLI
dotnet tool install -g Noundry.Slurp.Tool
dotnet tool install -g Noundry.Jobs.Tool
dotnet tool install -g Noundry.Engine.Cli
dotnet tool install -g Noundry.AuthnzNet.CLI
dotnet tool install -g Noundry.Spinup

NoundryMCP - Model Context Protocol Server

Integrate Noundry platform directly into Claude Desktop, Codex, Cursor CLIs via MCP. Get instant access to templates, documentation, and code generation right from your AI assistant.

Template & Documentation Access

Browse and search all Noundry templates, libraries, and documentation directly from Claude. Get instant code examples and setup instructions.

Contextual Code Generation

Ask Claude to generate Noundry-specific code using platform templates. Create controllers, services, Razor pages, and more with context-aware suggestions.

Hosted Service - No Local Setup

NoundryMCP is a hosted service accessible locally via any coding CLI. No local installation or configuration required - just connect and start building.

Claude Desktop with NoundryMCP
You:
"How do I set up Tuxedo ORM with PostgreSQL?"
Claude:
✓ Noundry.Tuxedo
Install: dotnet add package Noundry.Tuxedo
Configure connection in Program.cs
✓ Noundry.Tuxedo.Bowtie
Database migrations with
dotnet bowtie migrate
✓ Example code
Repository pattern setup
with dependency injection
Code Generation with Claude
You:
"Generate a Product controller with CRUD operations using Noundry.Tuxedo"
Claude:
public class ProductController
{
 private readonly IDbConnection _db;

 [HttpGet]
 public async Task<IEnumerable<Product>>
 GetAll()
 {
 return await _db.GetAllAsync<Product>();
 }
}
Sponsored by Noundry — Free for all .NET developers

DotNetMCP - Expert .NET Knowledge for AI

Give every AI coding assistant deep .NET expertise via the Model Context Protocol. 50+ curated guides, anti-pattern detection, and migration planning for .NET 8–10.

50+ Expert .NET Guides

Curated documentation covering EF Core, minimal APIs, Blazor, authentication, performance, testing, and architecture patterns. Always up to date with the latest .NET releases.

24+ Anti-Pattern Detection

Catch N+1 queries, sync-over-async, captive dependencies, HttpClient leaks, service locator abuse, and 20+ more common .NET mistakes before they hit production.

Migration Planning with Risk Assessment

Generate step-by-step migration plans for upgrading from .NET 6/7/8 to .NET 9/10 with breaking change alerts, deprecated API replacements, and risk scores.

Any MCP-Compatible Agent
# One-line setup for Claude Code
$ claude mcp add dotnetmcp https://dotnetmcp.com/sse
You:
"Review this EF Core code for performance issues"
AI + DotNetMCP:
[dotnetmcp:detect_antipatterns]
Found: N+1 query in GetOrdersWithItems()
Found: Missing AsNoTracking() on read queries
Suggestion: Use .Include() with filtered projection
Suggestion: Add .AsNoTracking() to read-only paths
Guide: ef-core-performance-patterns
Free
No API key needed
.NET 10
Latest coverage
MCP
Works everywhere

Spinup - Secure VM Provisioning

Multi-cloud VM provisioning CLI with automatic security hardening. Deploy hardened VMs to AWS, Azure, GCP, and DigitalOcean with a single command.

Security by Default

Every VM is automatically hardened with UFW firewall, fail2ban, SSH hardening, kernel security settings, and automatic updates. Your IP is whitelisted for SSH access.

Multi-Cloud Support

Same CLI for AWS, Azure, GCP, and DigitalOcean. Provision VMs, networks, and load balancers with consistent workflows across all clouds.

Zero Config Required

Interactive wizard or full CLI mode. No YAML files to write. Just install, configure cloud credentials, and deploy.

Spinup CLI
# Install Spinup
$ dotnet tool install --global Noundry.Spinup
# Provision a secure VM
$ spinup provision --cloud aws --region us-east-1 \
--resource vm --name prod-server -y
Detecting your public IP for SSH whitelist...
Detected IP: 203.0.113.45
Your IP will be whitelisted for SSH access.
[✓] Automatic Updates: Enabled
[✓] SSH Hardening: Enabled
[✓] UFW Firewall: Enabled
[✓] Fail2ban: Enabled
[✓] Kernel Hardening: Enabled
✅ VM provisioned successfully!
🌐 IP: 54.123.45.67

SSH Key Auth Only

Password authentication disabled. Root login blocked.

UFW Firewall

Default deny. Your IP whitelisted for SSH.

Fail2ban Protection

Auto-ban IPs after failed login attempts.

Tailbreeze - Tailwind CSS for .NET

Zero-config Tailwind CSS integration for ASP.NET Core. Auto-installs the standalone CLI, hot reload in development, optimized builds in production. No Node.js required.

Zero Configuration

Just add the NuGet package and call AddTailbreeze(). The CLI is auto-downloaded, config files auto-generated, and hot reload just works.

Hot Reload in Development

Automatically watches your .cshtml and .razor files for changes. CSS rebuilds instantly when you add Tailwind classes.

Tailwind v3 & v4 Support

Full support for Tailwind v4 (stable) and v3.4.17 (LTS). Version pinning, dynamic fetching via GitHub API, and CDN fallback.

Program.cs
# Install package
$ dotnet add package Noundry.Tailbreeze
// Program.cs
builder.Services.AddTailbreeze(options =>
{
options.TailwindVersion = "4";
options.InputCssPath = "Styles/app.css";
options.EnableHotReload = builder.Environment.IsDevelopment();
});
app.UseStaticFiles();
app.UseTailbreeze();
<!-- Layout: use the TagHelper -->
<tailwind-link />
// Tailbreeze handles the rest:
// - CLI download & caching
// - Hot reload in development
// - Minification in production
No Node.js

Uses standalone Tailwind CLI

.NET 8-10

Full framework support

MSBuild

Build-time compilation

Resilient

Polly retry policies

Comprehensive Documentation

Everything you need to master Noundry, from quick start guides to advanced architectural patterns.

Getting Started

  • Installation Guide
  • Quick Start Tutorial
  • Choosing Components
  • First Application
Start Learning

Component Guides

  • Core Libraries API
  • Web Development
  • Data Access Patterns
  • Testing Strategies
Browse Components

Advanced Topics

  • Architecture Patterns
  • Performance Optimization
  • Custom Extensions
Explore Advanced

Complete Web Application Example

var builder = WebApplication.CreateBuilder(args);

// Add Noundry services
builder.Services.AddRazorPages();
builder.Configuration.AddDotEnvX();
builder.Services.AddTuxedoSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));
builder.Services.AddNoundryOAuth(builder.Configuration);
builder.Services.AddNoundryUI();

var app = builder.Build();

// Configure pipeline
app.UseNoundryOAuth();
app.UseAuthentication();
app.MapRazorPages();
app.Run();