N

Getting started

The RATH stack for .NET — Razor, Alpine.js, Tailwind, HTMX. Editable components, server-rendered, hot reload under 500ms. No Node toolchain.

Noundry Studio is built around the RATH stack: Razor for the views, Alpine.js for client state, Tailwind for styling, HTMX for server roundtrips. Together they give you React-Vite-class iteration speed and a shadcn-quality component story, all server-rendered.

Three pieces ship together:

  1. ndui — a dotnet global tool that installs editable Razor source into your project from the Noundry registry and tracks what's there.
  2. The Studio Starter — an opinionated .NET 10 Razor Pages app, pre-wired with HTMX (server roundtrips), Alpine (client state), Tailbreeze (Tailwind without Node), and a working products feature. The same template scaffolded by ndui init.
  3. The registry at registry.noundry.com — 53 component manifests, each with the right install side-effects (PackageReference, @addTagHelper directive, optional Razor partials).

Used in production at remotedevelopers.com, leadkumo.com, yieldhq.com, burnnote.org, nugx.org, insurancera.com, tryengrave.com, pryvc.com, slimwin.com, and pdffrom.com.

#The 60-second path

bash
dotnet tool install -g Noundry.Studio.CLI
ndui init my-app
cd my-app
ndui add button card datatable dialog toast
dotnet run

Open https://localhost:5001 — you get a working dashboard, product catalog (), create/edit flow ( + form components, submitting via HTMX), and a global toast surface () that picks up server-side AddToast() calls automatically.

#Why this stack

PropertyRATH (Studio)
Iteration speeddotnet watch recompiles a Razor view in ~300ms; HTMX swap in <100ms
Build stepsOne: dotnet build. No Node, no bundler, no WASM, no SignalR circuit
Server roundtripsHTMX (hx-get, hx-post, hx-target, hx-swap, hx-trigger)
Client stateAlpine (x-data, x-show, x-on:click, x-persist)
StylingTailwind v4 compiled by an MSBuild task (Tailbreeze)
ComponentsRazor TagHelpers from Noundry.UI — installed as editable source via ndui add

#What ndui add actually does

ndui add is a facade for most components — it ships zero files to your project:

  1. Adds to your .csproj (idempotent).
  2. Adds @addTagHelper *, Noundry.UI to Pages/_ViewImports.cshtml (idempotent).
  3. Records the component in ndstudio.json.
  4. Prints the tag usage shape so you can drop it into your page.
bash
$ ndui add datatable
✓ datatable@2.0.0 added (1 NuGet, 1 _ViewImports directive)
Usage: <noundry-data-table items="@Model.Products" per-page="10" show-search="true">
          <noundry-data-table-column key="Name" sortable="true" />
       </noundry-data-table>

For the 9 components with no Noundry.UI equivalent (avatar, empty-state, sidebar, topbar, theme-toggle, user-nav, notifications-popover, data-list, icon), Studio ships a small Razor partial you can edit — documented per-component at /docs/components.

#The starter, in one paragraph

ndui init my-app extracts a .NET 10 Razor Pages project that boots with: HTMX 2 + Alpine 3 + Tailwind v4 (via Tailbreeze, no Node), Tuxedo over SQLite for data, a working /products feature with create/edit/delete (form submits via hx-post, table refreshes via hx-target swap, toasts surface via hx-swap-oob from _ToastContainer), a TempData-buffered toast bridge (AddToast() server-side → window.toast.* client-side, automatically), Engine-ready Dockerfile for one-command ndng up deploys.

#Part of the broader Noundry toolset

Studio composes naturally with other Noundry libraries:

  • Noundry.UI — 73 Razor TagHelpers (the components Studio installs)
  • Noundry.TagHelpers — asp-if, validation, form-group, display, editor
  • Noundry.RazorHelpers — RenderFragment, HtmlBuilder, TableBuilder
  • Noundry.Tailbreeze — Tailwind v4 without Node
  • Noundry.Tuxedo — Dapper-style data access (SQL Server, PostgreSQL, MySQL, SQLite)
  • Noundry.Sod — Zero-dep schema validation
  • Engine (ndng) — Docker-first deploy, ~50 MB chiseled .NET 10 images
  • Spinup — Multi-cloud Terraform CLI (AWS, Azure, GCP, DigitalOcean)

#Learn more