Rask.Bootstrap
0.20.1-alpha.0.150
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
<PackageReference Include="Rask.Bootstrap" Version="0.20.1-alpha.0.150" />
<PackageVersion Include="Rask.Bootstrap" Version="0.20.1-alpha.0.150" />
<PackageReference Include="Rask.Bootstrap" />
paket add Rask.Bootstrap --version 0.20.1-alpha.0.150
#r "nuget: Rask.Bootstrap, 0.20.1-alpha.0.150"
#:package Rask.Bootstrap@0.20.1-alpha.0.150
#addin nuget:?package=Rask.Bootstrap&version=0.20.1-alpha.0.150&prerelease
#tool nuget:?package=Rask.Bootstrap&version=0.20.1-alpha.0.150&prerelease
<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.
</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 --version≥10.0); thewasm-toolsworkload (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
IToasterfor 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 Bootstrap —
Rask.Bootstrapadds typed Bootstrap 5.3 components (BsButton/BsCard/BsModal/…), layout primitives (BsContainer, theBsRow/BsColresponsive grid, andBsStack),IFormControl<T>-bound inputs including the zero-JSBsSelect/BsMultiSelectcomboboxes (full keyboard/listbox a11y, opt-inFiltersearch,OptionGroupgrouping,OptionDisabledper-option disable, and a multiselectSelectAllheader), a typedBsIcon, typed utility classes, and aBsDataGrid<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.
Links
- 📖 Documentation · Getting started · Configuration · Observability · Accessibility
- 🚀 Live demo
- 💻 Source & README
- 🤖 AI assistant guide
Licensed under MIT.
| Product | Versions 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. |
-
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 |