Rask.Bootstrap 0.20.1-alpha.0.150

This is a prerelease version of Rask.Bootstrap.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Rask.Bootstrap --version 0.20.1-alpha.0.150
                    
NuGet\Install-Package Rask.Bootstrap -Version 0.20.1-alpha.0.150
                    
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.Bootstrap" Version="0.20.1-alpha.0.150" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rask.Bootstrap" Version="0.20.1-alpha.0.150" />
                    
Directory.Packages.props
<PackageReference Include="Rask.Bootstrap" />
                    
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.Bootstrap --version 0.20.1-alpha.0.150
                    
#r "nuget: Rask.Bootstrap, 0.20.1-alpha.0.150"
                    
#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.Bootstrap@0.20.1-alpha.0.150
                    
#: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.Bootstrap&version=0.20.1-alpha.0.150&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Rask.Bootstrap&version=0.20.1-alpha.0.150&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(). No .razor, no JSX, no JavaScript to write — and the same component code runs server-rendered with live WebSocket updates or fully client-side on WebAssembly.

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

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

Install

Prerequisites: the .NET 10 SDK (dotnet --version10.0); the wasm-tools workload (dotnet workload install wasm-tools) for the WASM templates.

dotnet tool install -g Rask.Cli          # the rask CLI — scaffold, migrate, run, deploy
rask new MyApp                            # batteries included; or: --template wasm | wasm-hosted
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.Server            # 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.Tailwind          # Tailwind CSS on any host, no npm required

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.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.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.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.Bootstrap                     # typed Bootstrap 5.3 components
dotnet add package Rask.Validation.DataAnnotations    # or Rask.Validation.FluentValidation
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("card"), Counter.Start(3) and type-safe routes, so the IDE lists every step and a missing one is a compile error.
  • Scoped CSS & JS — sibling Component.css/Component.js, 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.
  • Optional typed BootstrapRask.Bootstrap adds typed Bootstrap 5.3 components (BsButton/BsCard/BsModal/…), layout primitives (BsContainer, the BsRow/BsCol responsive grid, and BsStack), IFormControl<T>-bound inputs including the zero-JS BsSelect/BsMultiSelect comboboxes (full keyboard/listbox a11y, opt-in Filter search, OptionGroup grouping, OptionDisabled per-option disable, and a multiselect SelectAll header), a typed BsIcon, typed utility classes, and a BsDataGrid<T> for list screens (typed columns, sorting, paging, footer totals, master-detail), with interactive components driven by the live runtime — no JavaScript. See docs/bootstrap.md.

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.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.20.1-alpha.0.182 55 8/31/2026
0.20.1-alpha.0.170 64 8/31/2026
0.20.1-alpha.0.169 55 8/31/2026
0.20.1-alpha.0.168 57 8/31/2026
0.20.1-alpha.0.165 165 8/28/2026
0.20.1-alpha.0.163 56 8/28/2026
0.20.1-alpha.0.162 66 8/28/2026
0.20.1-alpha.0.158 59 8/28/2026
0.20.1-alpha.0.156 56 8/27/2026
0.20.1-alpha.0.155 65 8/27/2026
0.20.1-alpha.0.153 64 8/27/2026
0.20.1-alpha.0.152 63 8/27/2026
0.20.1-alpha.0.151 55 8/27/2026
0.20.1-alpha.0.150 65 8/27/2026
0.20.1-alpha.0.149 57 8/27/2026
0.20.1-alpha.0.148 61 8/27/2026
0.20.1-alpha.0.147 69 8/27/2026
0.20.1-alpha.0.145 63 8/26/2026
0.20.1-alpha.0.144 70 8/26/2026
0.20.0 227 8/6/2026
Loading failed