Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

1,108 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

👾 Fusion Samples

FusionDocumentationChat @ VoxtBuild

Don't know what Fusion is? You should! Fusion is your #1 partner in crime if you're building a real-time app (an online app delivering some or all updates in real-time) or a high-load app. Moreover, it plays really well with Blazor and works on MAUI.

Curious to see Fusion in action? Explore [Voxt.ai] – a very new chat app built by the minds behind Fusion.

Voxt fuses real-time audio, live transcription, and AI assistance to let you communicate with utmost efficiency. With clients for WebAssembly, iOS, Android, and Windows, it boasts nearly 100% code sharing across these platforms. Beyond real-time updates, several of its features, like offline mode, are powered by Fusion.

Fusion allows you to build real-time UIs like this one — and it's nearly as easy as if there were no logic related to real-time updates at all:

What's Inside?

Console Samples

Demonstrates Fusion's core compute service pattern with automatic dependency tracking. The sample simulates a project build system that dynamically recomputes projects when their dependencies are invalidated, showcasing automatic caching and invalidation.

Showcases five progressive implementations of a shopping cart system—from in-memory to multi-host distributed—using Fusion's operations framework and command handlers. Demonstrates how to track product prices and cart totals with real-time updates.

Blazor Samples

A simple Blazor Server application demonstrating real-time UI updates using Fusion compute services. Includes a counter, weather forecast, and chat service with server-side rendering and WebSocket communication.

Extends HelloBlazorServer with hybrid rendering, supporting both server-side and WebAssembly interactive components with Fusion's compute services for real-time data binding.

A full-featured Blazor application with GitHub OAuth authentication, database persistence (SQLite), and Entity Framework Core integration. Demonstrates multiple compute services including chat, composition, image streaming, and real-time sum calculations.

blazor-samples.actuallab.net

A comprehensive todo application supporting both single-server and multi-tenant distributed architectures with PostgreSQL, SQL Server, or SQLite backends. Showcases Fusion's database entity resolvers, sharding, backend/API server separation patterns, and RPC streaming.

todoapp.actuallab.net

Standalone Sample Apps

A live audience Q&A app ("Slido-lite"): anyone can spin up a town hall (a room) and become its owner; participants post questions and upvote others', and the list re-sorts by votes in real time, with a trending panel highlighting the questions gaining votes right now. Everyone also signals their mood on a 5-emoji scale, rendered as a big generated SVG face plus a live distribution chart. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL.

It exists to compare real-time frameworks — the same app will be reimplemented on several stacks (plain .NET, SignalR, and more) to measure the code delta each one produces; the Fusion version comes first. Like Board Games, it lives in its own repository: github.com/ActualLab/Fusion.TownHall.

townhall.actuallab.net

A real-time multiplayer board game app: play Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors against others, with a live game lobby, in-game chat with user/game mentions, and online-presence tracking — all kept in sync automatically by Fusion, everywhere. It's built on .NET 10, Blazor (Server + WebAssembly), EF Core, and PostgreSQL, with GitHub / Microsoft sign-in.

Unlike the samples above, it lives in its own repository: github.com/alexyakunin/BoardGames.

boardgames.actuallab.net

RPC Samples

A minimal client-server chat application using Fusion's RPC framework with WebSocket transport. Demonstrates compute methods, command handlers, and real-time state synchronization between client and server.

Extends MiniRpc with multiple servers using consistent hashing-based routing to distribute chat conversations across servers based on chat ID, demonstrating horizontal scalability patterns.

Demonstrates a dynamic peer-to-peer mesh network where hosts are added and removed at runtime. Fusion's shard mapping automatically routes requests to appropriate hosts for distributed counter services.

Benchmarks

See Benchmarks.md for the most recent results.

Compares Fusion services against an identical non-Fusion DAL, measuring both local and remote access throughput.

Benchmarks ActualLab.Rpc against gRPC, SignalR, StreamJsonRpc, MagicOnion, and HTTP (REST), measuring both call and streaming throughput on different payload sizes.

Running Samples

Build & run locally with .NET 10 SDK:

# Run this command first
dotnet build
SampleCommand
HelloCartdotnet run -p src/HelloCart/HelloCart.csproj
HelloWorlddotnet run -p src/HelloWorld/HelloWorld.csproj
HelloBlazorServerdotnet run -p src/HelloBlazorServer/HelloBlazorServer.csproj + open http://localhost:5005/
HelloBlazorHybriddotnet run -p src/HelloBlazorHybrid/Server/Server.csproj + open http://localhost:5005/
Blazor Sampledotnet run -p src/Blazor/Server/Server.csproj + open http://localhost:5005/
TodoApp Sampledotnet run -p src/TodoApp/Host/Host.csproj + open http://localhost:5005/
MiniRpcdotnet run -p src/MiniRpc/MiniRpc.csproj
MultiServerRpcdotnet run -p src/MultiServerRpc/MultiServerRpc.csproj
MeshRpcdotnet run -p src/MeshRpc/MeshRpc.csproj
Benchmarkdotnet run -c:Release -p src/Benchmark/Benchmark.csproj
RpcBenchmarkdotnet run -c:Release -p src/RpcBenchmark/RpcBenchmark.csproj

Build & run with Docker + Docker Compose:

# Run this command first
docker-compose build
SampleCommand
HelloCartdocker-compose run --build sample_hello_cart
HelloWorlddocker-compose run --build sample_hello_world
HelloBlazorServerdocker-compose run --build --service-ports sample_hello_blazor_server + open http://localhost:5005/
HelloBlazorHybriddocker-compose run --build --service-ports sample_hello_blazor_hybrid + open http://localhost:5005/
Blazor Sampledocker-compose run --build --service-ports sample_blazor + open http://localhost:5005/
TodoApp Sampledocker-compose run --build --service-ports sample_todoapp + open http://localhost:5005/
MiniRpcdocker-compose run --build sample_mini_rpc
MultiServerRpcdocker-compose run --build sample_multi_server_rpc
MeshRpcdocker-compose run --build sample_mesh_rpc
Benchmarkdocker-compose run --build sample_benchmark
RpcBenchmarkdocker-compose run --build sample_rpc_benchmark

Useful Links

P.S. If you've already spent some time learning about Fusion, please help us to make it better by completing Fusion Feedback Form (1…3 min).

About

ActualLab.Fusion Samples are here. Skip SignalR and gRPC. Build real-time Blazor and MAUI apps while writing just 0.1% of the usual real-time update code. Handle 10× more API requests with the ActualLab.Rpc protocol—or 1000× more with Fusion’s transparent and perfectly coherent caching.

Resources

Stars

17 stars

Watchers

2 watching

Forks

Contributors

Languages