Rask.Query 0.20.1-alpha.0.228

This is a prerelease version of Rask.Query.
dotnet add package Rask.Query --version 0.20.1-alpha.0.228
                    
NuGet\Install-Package Rask.Query -Version 0.20.1-alpha.0.228
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rask.Query" Version="0.20.1-alpha.0.228" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rask.Query" Version="0.20.1-alpha.0.228" />
                    
Directory.Packages.props
<PackageReference Include="Rask.Query" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rask.Query --version 0.20.1-alpha.0.228
                    
#r "nuget: Rask.Query, 0.20.1-alpha.0.228"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rask.Query@0.20.1-alpha.0.228
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rask.Query&version=0.20.1-alpha.0.228&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Rask.Query&version=0.20.1-alpha.0.228&prerelease
                    
Install as a Cake Tool

<div align="center">

<img alt="Rask" src="https://raw.githubusercontent.com/pal-tamas/rask/main/assets/rask-logo.svg" width="280">

The .NET One Person Framework — build, run, and ship a whole product solo, in C#, on one server.

License: MIT .NET

</div>

Write components as plain C# classes. Return a tree of HTML from Render(): state is a field, and an event handler is a delegate. The same component code runs server-rendered with live WebSocket updates or fully client-side on WebAssembly.

[Route("/counter")]
public sealed partial class Counter : Component
{
    private int _count;

    protected override Component? Render() =>
        Button.OnClick(() => _count++)[$"Current count: {_count}"];
}

Install

Prerequisites: none. The installer below adds whatever is missing — the .NET 10 SDK, the wasm-tools workload the WASM templates need, Node for the SPA templates — all under $HOME, no sudo. Already have the .NET 10 SDK? dotnet tool install -g Rask.Cli is the whole story.

curl -sSL https://rask.sh/rask.sh | sh   # the rask CLI — scaffold, migrate, run, deploy
rask new MyApp                            # batteries included; or: --template wasm, or --wasm
rask dev                                  # run with hot reload — the first migration is already applied
rask deploy --host you@box --domain app.example.com       # build + run on one box, over SSH

Or add to an existing project. Pick a host:

dotnet add package Rask                   # batteries included — the host plus every battery, all on
dotnet add package Rask.Server            # the lean host on its own: server-rendered over WebSockets
dotnet add package Rask.Wasm              # client-side WebAssembly
dotnet add package Rask.Wasm.Hosting      # host a published WASM bundle on ASP.NET
dotnet add package Rask.Spa.Hosting       # host a built TypeScript SPA on ASP.NET
dotnet add package Rask.Meta.Hosting      # host Nuxt/Next/SvelteKit/Start/SolidStart/Analog beside your C# (needs Node)
dotnet add package Rask.External           # a .tsx/.vue/.svelte/Lit component as a Rask component (needs Node)
dotnet add package Rask.Blazor             # a real Blazor component (MudBlazor, an RCL) as a Rask component

Tailwind is not on that list because it is not a package: the compiler ships inside Rask / Rask.Server / Rask.Wasm, so any of them puts it in your build. Add a Styles/app.css holding @import "tailwindcss";, link /css/app.css from your shell, and dotnet build compiles it — no npm, no config file, nothing to switch on.

With Rask, that is the whole of Program.cs — every battery is on, and the file says only what this app does without:

var app = RaskApp.Create(args);

app.Configure(c => c.Jobs.Off());   // this app has no background work

app.Run<App>();

Reference Rask.Server instead when you want the host with no database: it carries no EF Core and no SQLite native bundles.

Then the batteries you want — each is opt-in, and every one is a AddRaskX<AppDbContext>() call plus a modelBuilder.AddRaskX() schema line:

dotnet add package Rask.Data              # base entity + EF interceptors (soft delete, concurrency, events)
dotnet add package Rask.Api               # host API controllers and minimal APIs, with a real 404 under /api
dotnet add package Rask.Api.Client        # typed clients generated from those endpoints — no URL at the call site
dotnet add package Rask.Wire              # reflection-free JSON primitives the generated codecs call
dotnet add package Rask.Cqrs              # source-generated CQRS/mediator (queries, commands, notifications)
dotnet add package Rask.Cqrs.Client       # dispatch a message to the server from a WASM client
dotnet add package Rask.Query             # cache, dedup and invalidate dispatched queries per session
dotnet add package Rask.Cqrs.Server       # host the endpoint those clients dispatch to
dotnet add package Rask.Auth             # accounts: register, sign in, sign out, confirm, reset
dotnet add package Rask.Auth.Client      # the same flows from a WebAssembly client
dotnet add package Rask.Jobs              # durable background jobs
dotnet add package Rask.Mail              # transactional email queue
dotnet add package Rask.Cache             # read-through cache
dotnet add package Rask.Outbox            # transactional outbox for domain events
dotnet add package Rask.Logging           # durable log store (its own SQLite file)
dotnet add package Rask.Dashboard         # the /_rask operator dashboard over every pillar
dotnet add package Rask.Ui                # the component kit those surfaces are drawn with
dotnet add package Rask.WebPush           # send Web Push notifications from the backend
dotnet add package Rask.Signaling         # host the WebRTC signaling relay ISignaling connects to

Database — SQLite, treated as a real production database:

dotnet add package Rask.SQLite                        # production pragmas (WAL, busy_timeout) via UseRaskSqlite
dotnet add package Rask.SQLite.EntityFrameworkCore    # the EF Core provider glue
dotnet add package Rask.SQLite.Litestream             # managed continuous replication
dotnet add package Rask.SQLite.Snapshots              # scheduled Online-Backup-API copies
dotnet add package Rask.SQLite.Browser                # a persistent SQLite database inside a WASM app

UI and testing:

dotnet add package Rask.Validation.FluentValidation   # AbstractValidator<T>; DataAnnotations is built in
dotnet add package Rask.Testing                       # render + drive components in unit tests

Why Rask

After 15+ years building full-stack .NET apps — WebForms, MVC, Angular and React over a C# API — I wanted the front end back in C# without .razor mixing markup and code. So Rask makes a component a plain C# class that returns a tree, runs the same code on Server or WASM, and treats the network as the bottleneck (a state change ships a minimal diff, not the page). It's a craft project built in the open, deep on Roslyn source generators and tree diffing.

  • One component model, two hosts — the same C# component runs Server (live diff over WS) or WASM.
  • Markup is a chain — a Roslyn generator emits Div.Class("panel"), Counter.Start(3) and type-safe routes, so the IDE lists every step and a missing one is a compile error.
  • Scoped CSS & TypeScript — sibling Component.css/Component.ts, compiled with no npm, content-addressed and cached.
  • Routing, lifecycle, forms, validation, auth — batteries included, no JavaScript required.
  • Toast messages — inject IToaster for transient messages that survive a client-side navigation.
  • Tiny live updates — a minimal edit-op diff ships instead of the whole page.
  • Slow-link aware — WASM boot shows download progress; a slow Server round-trip surfaces a pending bar.

Licensed under MIT.

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Rask.Query:

Package Downloads
Rask

The one reference a Rask application needs, server or browser. On net10.0 it brings the ASP.NET host plus every battery — database, mediator, background jobs, transactional email, cache, outbox, operator dashboard, durable logs, Web Push, and SQLite snapshots and continuous backup — with RaskApp.Create(args) as the entry point. On net10.0-browser it brings the WebAssembly host, the source-generated mediator, the query cache and remote dispatch. Everything referenced is wired and on; app.Configure(c => c.Jobs.Off()) is how an app does without one. Reference Rask.Server for a lean host with no database.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.20.1-alpha.0.228 34 9/4/2026
0.20.1-alpha.0.227 27 9/4/2026
0.20.1-alpha.0.226 35 9/4/2026
0.20.1-alpha.0.225 38 9/4/2026
0.20.1-alpha.0.224 38 9/4/2026
0.20.1-alpha.0.223 37 9/4/2026
0.20.1-alpha.0.221 35 9/4/2026
0.20.1-alpha.0.220 35 9/4/2026
0.20.1-alpha.0.217 30 9/4/2026
0.20.1-alpha.0.216 35 9/4/2026
0.20.1-alpha.0.215 37 9/3/2026
0.20.1-alpha.0.213 37 9/3/2026
0.20.1-alpha.0.212 40 9/3/2026
0.20.1-alpha.0.211 41 9/3/2026
0.20.1-alpha.0.210 41 9/3/2026
0.20.1-alpha.0.209 36 9/2/2026
0.20.1-alpha.0.208 36 9/2/2026
0.20.1-alpha.0.207 44 9/2/2026
0.20.1-alpha.0.206 41 9/2/2026
0.20.1-alpha.0.204 44 9/2/2026
Loading failed