# Rask > Rask is the full-stack .NET web framework: UI, data, auth, background jobs, realtime and deploy in one C# codebase, for a team of one or fifty. Rask is the full-stack .NET web framework, built on ASP.NET Core and EF Core, for a team of one or fifty. One C# codebase carries the whole product: EF Core data with aggregates, source-generated CQRS and a cached query layer, authentication, background jobs, email, an outbox, cache, file storage, realtime subscriptions, multi-tenancy and full-text search, on SQLite by default or PostgreSQL / SQL Server. The `rask` CLI scaffolds, migrates and deploys it (`rask new`, `rask db`, `rask deploy`), and the `/_rask` console shows it running. The UI is plain C# classes written as a markup chain (`Div.Class("panel")[Span["hi"]]`), server-rendered and kept live over a WebSocket, or run in the browser on WebAssembly. Install the CLI with `curl -sSL https://rask.sh/rask.sh | sh`. Each link below is the Markdown source of one guide; the same guide as a web page is at that address without `.md`, ending in a slash. Every guide except the Optional ones, in one file: https://rask.sh/llms-full.txt ## Start here - [Installing Rask](https://rask.sh/docs/guides/installation.md): Install the rask CLI with one curl or PowerShell command. It adds the .NET SDK, dotnet-ef, wasm-tools and Node.js LTS under your home directory, no sudo. - [Getting started](https://rask.sh/docs/guides/getting-started.md): Scaffold and run your first app, then write a C# component, handle events and add a route. Components render on the server over WebSocket or in WebAssembly. - [Cheat sheet](https://rask.sh/docs/guides/cheatsheet.md): One dense page of every rask CLI command and flag, a CRUD slice in one place, and the idioms for data, CQRS, jobs, mail, cache, outbox, auth and routing. - [Recipes](https://rask.sh/docs/guides/recipes.md): Task-first answers for an existing app: add a CRUD feature, relate entities, require login, run background work, send email, cache queries, deploy and test. - [Best practices](https://rask.sh/docs/guides/best-practices.md): Patterns that keep a C# component app correct, secure and fast: keys and encoding, state and callbacks, forms, routing, JS interop, accessibility and testing. - [Migrating from Blazor](https://rask.sh/docs/guides/migration-from-blazor.md): Map Blazor concepts to plain C# components: .razor to Render(), [Parameter] to properties, cascading values to Context, lifecycle, routing and forms. - [Philosophy: the One Person Framework](https://rask.sh/docs/guides/one-person-framework.md): The philosophy behind Rask: one C# codebase on one server, SQLite-first data, built-in batteries and a one-command deploy, for one developer or a team. - [Roadmap](https://rask.sh/docs/guides/roadmap.md): What is shipped and what is next for the full-stack .NET web framework: UI hosts, CLI, CQRS, data, jobs, mail, cache, outbox and SQLite, plus known gaps. ## Tutorial - [Ch 0 · Overview](https://rask.sh/docs/guides/00-overview.md): Build Shop, a database-backed .NET app, chapter by chapter: EF Core and SQLite CRUD, auth, jobs, email, cache, outbox events, Web Push and deploy. - [Ch 1 · Scaffold](https://rask.sh/docs/guides/01-scaffold.md): Create the Shop project with rask new, run it, and tour what the server template generates: an ASP.NET Core app with SQLite, auth and batteries wired. - [Ch 2 · First feature](https://rask.sh/docs/guides/02-first-feature.md): Build a database-backed Products catalog: declare the aggregate, write its list, create and edit pages, bind Rask.Ui forms, then add the migration. - [Ch 3 · Orders & auth](https://rask.sh/docs/guides/03-orders-and-auth.md): Add an Orders feature on the same DbContext and SQLite database, then lock down catalog edits with [Authorize] pages and the Authorize component in C#. - [Ch 4 · Background jobs](https://rask.sh/docs/guides/04-background-jobs.md): Move order processing off the request thread with a durable background job stored in SQLite: write a job and handler, enqueue it, and let it retry on failure. - [Ch 5 · Email](https://rask.sh/docs/guides/05-email.md): Email customers an order receipt whose body is a C# component. Mail is queued in SQLite and sent over SMTP by a background worker, triggered from a job. - [Ch 6 · Cache](https://rask.sh/docs/guides/06-cache.md): Cache the product list in a typed, SQLite-backed cache: write an accessor around Cache.Remember, read through it, and forget it when the catalog changes. - [Ch 7 · Outbox & events](https://rask.sh/docs/guides/07-outbox-events.md): Raise a domain event when an order is placed; each handler runs in memory, or durably through a transactional outbox that survives a crash. C# and EF Core. - [Ch 8 · Production SQLite](https://rask.sh/docs/guides/08-production-sqlite.md): Make one SQLite file production-safe for a .NET app: WAL, busy-timeout and foreign-key pragmas, scheduled snapshots and off-box backup with Litestream. - [Ch 9 · Push](https://rask.sh/docs/guides/09-web-push.md): Send Web Push from your own ASP.NET Core server with VAPID keys: the scaffolded wiring, subscribing a browser, and pushing from an outbox handler. - [Ch 10 · Watching it run](https://rask.sh/docs/guides/10-ops.md): Build an /ops page that reads each pillar's SQLite table to show outbox, job, mail and cache state, make it live, check pragmas, and meet the dashboard. - [Ch 11 · Deploy](https://rask.sh/docs/guides/11-deploy.md): Ship the app to one Linux server with rask deploy: a Docker image built over SSH, automatic Let's Encrypt HTTPS via Caddy, health-checked swaps, CI deploys. ## Data - [Rask.Data](https://rask.sh/docs/guides/data.md): Declare DDD aggregates, entities and value objects in C# with EF Core: query read faces, map value collections to JSON, partition tables by tenant. - [Data access](https://rask.sh/docs/guides/data-access.md): Wire EF Core and SQLite into a server app: register the DbContext with a factory for long-lived sessions, load data in the lifecycle, seed and test it. - [Rask.Query](https://rask.sh/docs/guides/query.md): Wrap the CQRS dispatcher in a TanStack Query-style cache for C# components: request dedup, staleness, background refetch, keys, invalidation and commands. - [CQRS](https://rask.sh/docs/guides/cqrs.md): A source-generated CQRS mediator for .NET: dispatch queries, commands and events through IDispatcher with no reflection, plus pipeline behaviors. - [Production SQLite](https://rask.sh/docs/guides/sqlite.md): Run SQLite as a production database with ADO.NET or EF Core: WAL pragmas, BEGIN IMMEDIATE retries, STRICT tables, FTS5 full-text search and Litestream backup. - [Multi-tenancy](https://rask.sh/docs/guides/multi-tenancy.md): Serve many customers from one C# app and one database: a table opts in to a tenant id, every query is filtered to the current tenant, and writes are stamped. - [Full-text search](https://rask.sh/docs/guides/full-text-search.md): Add ranked full-text search to a C# app on its own database, SQLite FTS5 or PostgreSQL: declare the searched columns, query from EF Core, highlight the matches. - [Outbox](https://rask.sh/docs/guides/outbox.md): Run event handlers crash-safely with a transactional outbox on your app's database: a durable handler commits with the data and runs at-least-once, no broker. ## Auth - [Authentication](https://rask.sh/docs/guides/authentication.md): Add passkeys and accounts to a C# app: WebAuthn verified on the BCL, sign-in pages you own, a session row per device, PBKDF2 or bcrypt, throttling. - [Auth — cookie](https://rask.sh/docs/guides/authentication-cookie.md): Wire cookie-based login and sessions by hand, for the server-rendered WebSocket host and for a WebAssembly SPA backed by your own ASP.NET Core API. - [Auth — providers](https://rask.sh/docs/guides/authentication-providers.md): Sign in through Keycloak, Auth0, AWS Cognito or Duende IdentityServer over OpenID Connect, with Rask still owning the session cookie. - [Auth — hardening](https://rask.sh/docs/guides/authentication-hardening.md): Harden authentication for production: session trust model, CSRF protection, reverse proxy forwarded headers, Content-Security-Policy and a security checklist. ## Backend services - [Background jobs](https://rask.sh/docs/guides/jobs.md): Run .NET background jobs off the request thread, stored in your app's database with no Redis or broker: enqueued, delayed and recurring, retried with backoff. - [Transactional email](https://rask.sh/docs/guides/mail.md): Send transactional email from .NET off the request thread: messages queue in your database, bodies are C# components, and a worker delivers over SMTP. - [Cache](https://rask.sh/docs/guides/cache.md): A cache stored in your app's own database instead of Redis: it implements IDistributedCache and adds Cache.Remember(key, load).For(10.Minutes). - [File storage](https://rask.sh/docs/guides/file-storage.md): Keep user uploads in .NET on disk, S3, R2 or Azure Blob with a row in your database: sniffed content types, size limits, public and signed temporary URLs. - [Excel export](https://rask.sh/docs/guides/xlsx.md): Write an Excel .xlsx workbook from .NET with nothing but System.IO.Compression: bold frozen headings, filters, fitted columns, folded rows and a SUBTOTAL row. - [PDF](https://rask.sh/docs/guides/pdf.md): Print a page of your .NET app to PDF as its signed-in user sees it: rendered on the server, drawn by a pinned headless Chrome, headings on every page. - [HTTP APIs](https://rask.sh/docs/guides/api-endpoints.md): Host ASP.NET Core controllers and minimal APIs, and get a typed HTTP client generated from them, with validation from [Required] and AbstractValidator rules. - [HTTP & files](https://rask.sh/docs/guides/http-and-files.md): Fetch JSON with a dependency-injected HttpClient, accept uploads through a typed file picker, and send downloads to the browser, on server and WASM hosts. ## Realtime - [Subscriptions](https://rask.sh/docs/guides/subscriptions.md): Keep C# pages current: Live() refetches a query when anyone writes, and QueryClient.Subscribe pushes real events to every subscribed component. - [Web Push (server)](https://rask.sh/docs/guides/webpush.md): Send Web Push notifications from an ASP.NET Core backend to subscribed browsers with your own VAPID keys, aes128gcm encryption and zero external dependencies. - [IWebRtc](https://rask.sh/docs/guides/webrtc.md): Connect two browsers peer-to-peer from C# with IWebRtc: WebRTC data channels with batched messages plus camera, microphone and screen streams. - [ISignaling](https://rask.sh/docs/guides/signaling.md): Relay WebRTC offers, answers and ICE candidates between browsers with ISignaling and a WebSocket relay on any ASP.NET host. Authentication is on by default. ## Frontend - [Building components](https://rask.sh/docs/guides/building-components.md): Learn how C# markup chains work: required steps come first, bound versus controlled form controls, callbacks, your own components, and lists of components. - [Elements & the DSL](https://rask.sh/docs/guides/elements.md): Reference for HTML in C#: Text, Raw and Doctype primitives, a typed entry for every HTML and SVG element, universal attributes and the children indexer. - [Routing](https://rask.sh/docs/guides/routing.md): Declare routes with [Route] and navigate with source-generated, type-safe URLs. Covers route and query parameters, nested layouts, Go.To and Go.With. - [Composition](https://rask.sh/docs/guides/composition.md): How C# components compose: children and fragments through the indexer, static vs stateless vs stateful components, and hosting components built at runtime. - [Composition — callbacks & context](https://rask.sh/docs/guides/composition-callbacks-context.md): Send events from a child component to its parent with Callback properties that re-render the owner, and pass values down with context, not prop drilling. - [Composition — lists & more](https://rask.sh/docs/guides/composition-lists.md): Render windowed lists with Virtualize, keep list identity with keys, and add toast messages, drag-and-drop and error boundaries to C# web components. - [Lifecycle](https://rask.sh/docs/guides/lifecycle.md): The lifecycle hooks a component can override, their order and sync vs async rules, plus disposal, cancellation tied to component lifetime and hosted services. - [Live pages](https://rask.sh/docs/guides/render-modes.md): Server-rendered HTML with no hydration, a live session per page over a WebSocket or an automatic HTTP fallback, async data, status codes and redirects. - [Forms & validation](https://rask.sh/docs/guides/forms.md): Bind inputs two-way with typed Bind expressions, build forms on an EditContext, track touched and modified fields, and show accessible validation messages. - [Forms — validation](https://rask.sh/docs/guides/forms-validation.md): Validate a form with inline rules on a field or the form, sync or async, or with DataAnnotations. A database unique-constraint error shows under its field. - [Forms — advanced](https://rask.sh/docs/guides/forms-advanced.md): Bind and validate nested models and collections, build radio and checkbox groups, keep form state across a redeploy, and write your own form controls in C#. - [Validation](https://rask.sh/docs/guides/validation.md): Built-in .NET validation: inline rules in a form, and DataAnnotations or FluentValidation rules that run again on the server before a request is handled. - [JavaScript interop](https://rask.sh/docs/guides/js-interop.md): Ship component-scoped CSS and TypeScript with C# components, call the script's exports as typed C# methods, and see how the assets are compiled and cached. - [JS interop — runtime](https://rask.sh/docs/guides/js-interop-runtime.md): Call JavaScript from C# with an injected IJSRuntime, use typed browser APIs and element refs, and wrap a third-party JavaScript library with TypeScript types. - [Single-page app front ends](https://rask.sh/docs/guides/spa.md): Serve a React, Vue, Svelte or Angular single-page app from an ASP.NET Core host: dotnet build runs the npm build, publish ships the bundle, one call serves it. - [Islands](https://rask.sh/docs/guides/islands.md): Use React, Vue, Svelte, Lit or Angular components in a C# app, from your own files or straight from npm, with typed props, callbacks and hot reload. - [Blazor components](https://rask.sh/docs/guides/blazor-components.md): Render real Blazor components from Razor Class Libraries, MudBlazor or Radzen inside a C# page: in the first response, with parameters, events and @bind. - [Tailwind CSS](https://rask.sh/docs/guides/tailwind.md): Compile Tailwind CSS with dotnet build: no package.json, node_modules or PostCSS. The build scans your C# for classes, with knobs and fixes. - [UI kit](https://rask.sh/docs/guides/ui-kit.md): Flux UI's components as typed C# components, no npm or Tailwind config: accessible menus, modals, a sortable paged table, a sidebar layout, dark mode. - [Accessibility](https://rask.sh/docs/guides/accessibility.md): Set ARIA attributes, roles, tab order and language on any element, trap focus in overlays, and catch missing image alt text with a compile-time analyzer. - [Localization](https://rask.sh/docs/guides/localization.md): Ship an app in several languages: how the visitor's culture is chosen, translating text with placeholders and plurals, right-to-left layouts and WASM ICU. ## Deploy & operate - [The rask CLI](https://rask.sh/docs/guides/cli.md): Reference for the rask .NET tool: rask new to scaffold projects, rask dev for hot reload, rask db for EF Core migrations and backups, rask deploy over SSH. - [Deployment](https://rask.sh/docs/guides/deployment.md): Ship a .NET app to a single VPS with rask deploy: host setup, Docker builds over SSH, automatic HTTPS, GitHub Actions and backups, plus Dockerfiles. - [Scaling](https://rask.sh/docs/guides/scaling.md): How far one server goes: measured live sessions per GiB, what survives a restart, the single SQLite writer as the real wall, and running more instances. - [Secrets](https://rask.sh/docs/guides/secrets.md): Keep secrets out of source control: put them in .env.production, deploy with rask deploy --env-file, read them via IConfiguration, and know the limits. - [Configuration](https://rask.sh/docs/guides/configuration.md): Configure every Rask package from appsettings.json: the Rask section each one reads, overriding it with environment variables or code, and startup validation. - [Dashboard](https://rask.sh/docs/guides/dashboard.md): The operator dashboard a server app ships with, over your own database: outbox, job and mail queues, dead letters, cache, live logs, backups and SQLite status. - [Logging](https://rask.sh/docs/guides/logging.md): Store application logs in a SQLite file through a standard ILoggerProvider, with batched background writes, retention by age and row count, and scopes. - [Observability](https://rask.sh/docs/guides/observability.md): Monitor a .NET web app in production with structured logging, Meter metrics, ActivitySource tracing and health checks, ready to export via OpenTelemetry. ## Browser & devices - [Web APIs from MDN](https://rask.sh/docs/guides/web-apis.md): Every web API the browser ships, generated from MDN into C#: Navigator, Window, Document, localStorage by MDN's names, one round trip per await. - [Browser APIs](https://rask.sh/docs/guides/browser-apis.md): Call browser Web APIs from C#: MDN's own surface generated into Rask.Web, plus a few typed wrappers. A map of the whole surface on server and WASM hosts. - [Browser APIs — sharing model](https://rask.sh/docs/guides/browser-apis-sharing.md): Which typed browser APIs run on server and WASM hosts, declarative Web Share and gesture triggers on the server, and subscriptions that push updates into C#. - [Browser APIs — reference & demos](https://rask.sh/docs/guides/browser-apis-reference.md): Runnable demos for the browser APIs, C# source beside the live result: storage, environment, location, sensors, observers, media, crypto and files. - [Mobile & PWA](https://rask.sh/docs/guides/pwa.md): Turn a C# WebAssembly app into an installable Progressive Web App: web app manifest, offline service worker, background sync, push notifications, device APIs. ## Browser API reference - [Capability matrix](https://rask.sh/docs/guides/browser-capabilities.md): See which browser and device APIs work from C# on the Server host and on WebAssembly, which need a click-gesture component, and which are WASM-only. - [IBackgroundSync](https://rask.sh/docs/guides/background-sync.md): Register one-off and periodic Background Sync from C# and get the woken tag in a callback. WASM-only; needs a service worker and runs while a tab is open. - [IIndexedDb](https://rask.sh/docs/guides/indexeddb.md): Store strings and byte arrays in IndexedDB from C# through an async key/value store. Works on Server and WebAssembly; bytes are kept as a real Uint8Array. - [IWebAuthn](https://rask.sh/docs/guides/webauthn.md): Register and sign in users with passkeys from C# through IWebAuthn, a typed Web Authentication API (WebAuthn) wrapper for Server and WebAssembly hosts. ## Advanced - [Testing](https://rask.sh/docs/guides/testing.md): Render C# components to HTML in a unit test, with no browser or server. Dispatch click and input handlers, fake IJSRuntime and uploads, and check validation. - [DevTools](https://rask.sh/docs/guides/devtools.md): Inspect a running C# web app from inside the page: wire traffic, the component tree with props, what rendered and why, interaction timings and errors. - [Building form controls](https://rask.sh/docs/guides/building-form-controls.md): Build your own C# form control by implementing IFormControl. Get two-way binding, per-field validation and a controlled mode, shown with a full example. - [AOT compilation](https://rask.sh/docs/guides/aot.md): Publish a .NET WebAssembly app AOT-compiled with one MSBuild property. Covers mixed mode, custom IParsable registration, JSON source generation and limits. - [Prerendering](https://rask.sh/docs/guides/prerendering.md): Render each route of a .NET WebAssembly app to HTML at publish time, so crawlers see content, not a spinner. Also writes sitemap.xml and robots.txt. - [Code analysis](https://rask.sh/docs/guides/code-analysis.md): How Rask builds with .NET analyzers and warnings as errors, the public API gate, and the SOLID and Clean Code standard every change is reviewed against. - [Public API style](https://rask.sh/docs/guides/api-style.md): The naming rules every public API in the framework follows: short nouns, BCL verbs, no Async suffix, an ambient token, no bare bool, and the RS0016/RS0017 gate. - [Diagnostics](https://rask.sh/docs/guides/diagnostics.md): Every RASK compile-time diagnostic from the source generators and analyzers: what triggers it, its severity, how to fix it, and which ship an IDE quick-fix. ## UI components (Rask.Ui) Flux UI's components in C#, one web page each, with live examples and a reference of every step: - [Introduction](https://rask.sh/ui/): Rask.Ui is Flux UI's component catalogue as typed C# components for ASP.NET Core and WebAssembly: one package, one stylesheet import, no npm. - [Theming](https://rask.sh/ui/theming/): Re-skin Rask.Ui from your own Tailwind theme: point the zinc base and the three accent tokens at other colours, and keep or replace the Inter font. - [Dark mode](https://rask.sh/ui/dark-mode/): Rask.Ui's dark mode is a dark class on html, set before the first paint from the reader's choice or their system, and switched with no C# handler. - [Header](https://rask.sh/ui/header/): Flux UI's header layout in C#: a full-width bar with the brand, a navbar and the account over the main, and a sidebar that takes the links on a phone. - [Sidebar](https://rask.sh/ui/sidebar/): Flux UI's sidebar layout in C#: navigation down the side that slides over the page on a phone and narrows to a rail of icons, with no script. - [Accordion](https://rask.sh/ui/accordion/): Flux UI's accordion in C#: items on native details that open with no handler, one at a time when exclusive, animated, and opened by find-in-page. - [Autocomplete](https://rask.sh/ui/autocomplete/): Flux UI's autocomplete in C#: an input that suggests what to type, writes the picked text into itself, and asks the server once typing has paused. - [Avatar](https://rask.sh/ui/avatar/): Flux UI's avatar in C#: a picture, or initials or an icon when there is none, in five sizes and seventeen hues, with a badge, and stacked in groups. - [Badge](https://rask.sh/ui/badge/): Flux UI's badge as a C# component: a status, category or count in any Tailwind colour and three sizes, pressable, removable and set into a line of text. - [Brand](https://rask.sh/ui/brand/): Flux UI's brand in C#: the product's mark and name linking home, at the head of a header or a sidebar, from an image or a mark you draw. - [Button](https://rask.sh/ui/button/): Flux UI's button in C#: six variants, three sizes, any Tailwind colour, icons, a spinner while its handler runs, links that stay in the app, and button groups. - [Breadcrumbs](https://rask.sh/ui/breadcrumbs/): Flux UI's breadcrumbs in C#: the trail to the page being shown, with chevrons or slashes, icons for words, and the folded steps in a dropdown. - [Calendar](https://rask.sh/ui/calendar/): Flux UI's calendar in C#: a day, several days or a range from a month grid, with limits, unavailable days, week numbers, inputs and the keyboard. - [Callout](https://rask.sh/ui/callout/): Flux UI's callout in C#: an icon, a heading, text and actions to draw attention to a message, in four variants or any colour, inline or dismissible. - [Card](https://rask.sh/ui/card/): Flux UI's card in C#: a header, body and footer with the spacing, dividers and corners between them, in five surfaces, four sizes and six body treatments. - [Carousel](https://rask.sh/ui/carousel/): Flux UI's carousel in C#: slides that scroll and snap in the browser, with arrows, indicators, autoplay and controls elsewhere, and nothing sent to the server. - [Chart](https://rask.sh/ui/chart/): Flux UI's chart in C#: line, area, bar and pie charts drawn as SVG in the render, with axes, a tooltip, a cursor, a live summary and a legend. - [Checkbox](https://rask.sh/ui/checkbox/): Flux UI's checkbox in C#: one bound to a bool, a group bound to a collection with a check-all, drawn as cards, pills or buttons. - [Color picker](https://rask.sh/ui/color-picker/): Flux UI's color picker in C#: swatches, a saturation area, hue and alpha sliders, hex, rgb or hsl typed in, a button trigger, a dropper and copy. - [Command palette](https://rask.sh/ui/command/): Flux UI's command palette in C#: a searchable list of commands that narrows as you type, walks with the arrows, and opens as a modal from a shortcut. - [Context menu](https://rask.sh/ui/context/): Flux UI's context menu in C#: the menu a dropdown opens, at the pointer on a right-click, with the same rows, submenus and keyboard. - [Composer](https://rask.sh/ui/composer/): Flux UI's composer in C#: a message box with buttons around it for a chat or a prompt, sent on Cmd+Enter or Enter, growing a line at a time. - [Date picker](https://rask.sh/ui/date-picker/): Flux UI's date picker in C#: a day or a range from a calendar popup or typed in parts, with presets, limits, a clear button and a sheet on a phone. - [Dropdown](https://rask.sh/ui/dropdown/): Flux UI's dropdown in C#: a menu of actions or links under a button, with submenus, checkbox and radio rows, groups, shortcuts and Flux's keyboard. - [Rich text editor](https://rask.sh/ui/editor/): Flux UI's rich text editor in C#: Tiptap under a toolbar you name or compose, bound to HTML, with Markdown shortcuts and buttons of your own. - [Field](https://rask.sh/ui/field/): Flux UI's field in C#: a label, a control, help text and the message the form holds for it, with badges, split rows and fieldsets. - [File upload](https://rask.sh/ui/file-upload/): Flux UI's file upload in C#: a dropzone that takes files clicked, dropped or reached by keyboard, file items, progress, and an uploader of your own. - [Filters](https://rask.sh/ui/filters/): List filters kept in the page's address: a Filters button opening a flyout of fields that apply as chosen, and a badge for each filter in force. - [Flag](https://rask.sh/ui/flag/): Flux UI's flag in C#: a country's flag from its two-letter region code, 3:2 or round, in five widths, each a small file the page fetches when it shows it. - [Heading](https://rask.sh/ui/heading/): Flux UI's heading in C#: four sizes, an outline level kept apart from the size, and the line of text that sits under a heading. - [Icon](https://rask.sh/ui/icon/): Every Heroicon as a C# component: Ui.Icon in outline, solid, mini and micro, sized and coloured with a Tailwind class, and taken by every Rask.Ui component. - [Input](https://rask.sh/ui/input/): Flux UI's input in C#: every input type, icons, a keyboard hint, clear, copy and reveal buttons, masks, and prefixes and buttons joined to it. - [Kanban](https://rask.sh/ui/kanban/): Flux UI's kanban in C#: cards in columns, one per stage, with counts, actions and a footer, and cards that open as buttons. The page owns the lists. - [Modal](https://rask.sh/ui/modal/): Flux UI's modal in C#: a real dialog its trigger opens with no handler, as a confirmation, a flyout from any edge, or opened by a C# field. - [Navbar](https://rask.sh/ui/navbar/): Flux UI's navbar in C#: a header's links in a row, the current one underlined in the accent, with icons, badges and an item that opens a menu. - [Navlist](https://rask.sh/ui/navlist/): Flux UI's navlist in C#: a sidebar's links in a column, with icons, badges, and groups that fold away with no script, the current page found from the route. - [OTP input](https://rask.sh/ui/otp-input/): Flux UI's OTP input in C#: a cell per character bound as one string, pasted codes, letters or digits, private cells, groups and separators. - [Pagination](https://rask.sh/ui/pagination/): Flux UI's pagination in C#: a summary, Previous and Next and the pages numbered where there is room, as buttons or links that keep the page in the URL. - [Phone](https://rask.sh/ui/phone/): Flux UI's phone field in C#: an international number with a searchable list of flags, formatted as it is typed and bound as E.164. - [Pillbox](https://rask.sh/ui/pillbox/): Flux UI's pillbox in C#: several answers shown as pills to take off again, with search, an input among the pills, a create row and options from the server. - [Popover](https://rask.sh/ui/popover/): Flux UI's popover in C#: a panel of extra content beside a button (filters, a form, a profile card) opened by a press or by the pointer. - [Profile](https://rask.sh/ui/profile/): Flux UI's profile in C#: the signed-in person as a button, an avatar or initials, a name and a chevron, that opens the account menu. - [Progress](https://rask.sh/ui/progress/): Flux UI's progress bar in C#: a value out of any maximum, in the accent or any Tailwind colour, announced as a progressbar and moving to each new value. - [Radio](https://rask.sh/ui/radio/): Flux UI's radio in C#: a group bound to one value of any type, drawn as a list, a segmented control, cards, pills or buttons. - [Select](https://rask.sh/ui/select/): Flux UI's select in C#: the browser's own, a listbox with icons and avatars, search, several picks, a combobox and options found on the server. - [Separator](https://rask.sh/ui/separator/): Flux UI's separator in C#: a line between sections or between items in a row, across or down, subtle, or with a word such as "or" in the middle. - [Skeleton](https://rask.sh/ui/skeleton/): Flux UI's skeleton in C#: blocks and lines in the shape of what is loading, so the layout does not jump, still or animated together with a shimmer or a pulse. - [Slider](https://rask.sh/ui/slider/): Flux UI's slider in C#: a value or a range between two thumbs, steps, big steps on Shift, and ticks, dots or labels under the track. - [Switch](https://rask.sh/ui/switch/): Flux UI's switch in C#: a setting turned on or off at once, bound to a bool, with a label and a description, after its words or before them. - [Table](https://rask.sh/ui/table/): Flux UI's table in C#: sortable headings, a pager, sticky headings and columns, rows that dim while a slow page loads, and widths that hold from page to page. - [Tabs](https://rask.sh/ui/tabs/): Flux UI's tabs in C#: a row, segmented control or pills over panels, switched in the browser, with the selected tab a value the page can bind. - [Text & link](https://rask.sh/ui/text/): Flux UI's text and link in C#: body copy in three inks, four sizes or any Tailwind hue, and a link that stays in the app for a route or leaves it for a URL. - [Textarea](https://rask.sh/ui/textarea/): Flux UI's textarea in C#: several lines of text with a label, a set number of rows or a height that grows with what is typed, and a resize handle. - [Timeline](https://rask.sh/ui/timeline/): Flux UI's timeline in C#: events or steps in order, down the page or across it, with status, coloured or bare indicators, blocks and spacing. - [Time picker](https://rask.sh/ui/time-picker/): Flux UI's time picker in C#: one time or several from a list or typed in parts, 12- or 24-hour, with intervals, limits and unavailable times. - [Toast](https://rask.sh/ui/toast/): Flux UI's toast in C#: raised from any handler with Toast.Success("Saved"), with a heading, an action or a link, in any corner, one at a time or stacked. - [Toggle](https://rask.sh/ui/toggle/): Flux UI's toggle in C#: a setting turned on or off from a compact button whose icon fills in, with a tooltip, a label and a spinner while it saves. - [Tooltip](https://rask.sh/ui/tooltip/): Flux UI's tooltip in C#: a line of help on hover and keyboard focus that names an icon button, on any side, or opened by a tap where it must reach a phone. ## Optional - [Development workflow](https://rask.sh/docs/guides/development-workflow.md): How changes to the framework are built, tested and shipped: warnings-as-errors builds, CI gates on every push, MinVer tags and NuGet releases. - [Repo administration](https://rask.sh/docs/guides/repo-administration.md): The GitHub settings behind the repository: branch protection on main, required code owner review, why no status checks are required, and workflow secrets. - [Building with AI assistants](https://rask.sh/docs/guides/ai-agents.md): Point an AI coding assistant at llms.txt and the published guides so it scaffolds and extends C# apps following the framework's conventions and diagnostics. - [Live-rendering internals](https://rask.sh/docs/guides/live-rendering.md): How one C# component tree stays live after first paint: a shared render and diff pipeline, sent over a WebSocket on ASP.NET Core or JSImport on WebAssembly. - [Live rendering — walk & codec](https://rask.sh/docs/guides/live-rendering-codec.md): How a render emits HTML and a frame stream together, how FrameDiffer turns two renders into minimal edit ops, the JSON wire format, and LIS-based keyed moves. - [Live rendering — cache & dispatch](https://rask.sh/docs/guides/live-rendering-runtime.md): Inside a live session: the two-buffer diff baseline, head and query-only navigations, handler ordering on WebSocket and WASM, and slow-connection indicators.