Flaem: desktop app
.NET 6, Avalonia 11 and MVVM, a native program instead of Electron.
C# with Avalonia is our pick for native desktop apps on Windows, macOS and Linux, and .NET for libraries, emulators and plugins for Unity-based games.
The projects on this page on the screens from the portfolio and the case studies, each with a short description and the way to the full one.
.NET 6, Avalonia 11 and MVVM, a native program instead of Electron.
A native Avalonia client: servers, channels, roles, voice calls and live messages.
A technology has to fit the place the code will run and the team that will take it over. The final choice is made in the quote, together with you.
Avalonia gives one codebase for Windows, macOS and Linux, and Skia draws the controls the same way on every system. The Flaem and Plazer desktop apps stand on it.
An admin keeps the Flaem panel open next to a console and a game. With no browser engine inside, the program starts fast and has its own taskbar icon, system shortcuts and access to files on disk.
The logic lives in a .NET library that knows nothing about the interface, and MVVM with CommunityToolkit ties the view to it. xUnit tests check the core without opening a window.
nCatalogue for SCP: Secret Laboratory collects player stats, links accounts with Discord and adds admin commands on Discord. The game is written in C#, so a plugin with LabAPI and Harmony goes straight into its code.
We check chip8-sharp against test ROMs, and gameboy-sharp has a UI-free core. Such a core runs in the program, in a test and in someone else's project that plugs it in.
vantage controls Docker in a homelab and checks services over HTTP and TCP. CancellationToken in .NET tells a check timeout apart from closing the program, so the dashboard does not report false outages.
We write websites and browser panels in TypeScript with prerendering. Blazor in WebAssembly downloads the .NET runtime on the first visit, and a site has to show its content at once.
Flaem and Plazer have separate phone apps in Kotlin and Swift. Widgets, notifications and gestures then work exactly the way the system expects.
When the program should be the same interface as a website, we build it in Rust and Tauri from web code. That is how studio was made; we pick Avalonia when the interface should be native.
A self-contained .NET release carries the whole runtime inside. The Flaem agents in client machines are in Go, as small single binaries.
Plazer's encryption has to run in the browser, on phones and on the desktop as the same code. That is why it is in Rust, and the C# client calls it instead of writing the cryptography again.
We write Discord bots and diagnostic scripts in Python, because they are ready sooner and can be fixed without a build. We write a bot in C# when it is part of a game plugin and shares its code.
Each need on a row of its own, with what each of the two columns gives you on it side by side.
How many lines we have written in C#, and what part of everything we have written that is. We count the lines added in the commits of our repositories, language by language.
From the dependency files of our repositories. With each, one sentence on what we use it for.
The interface on Windows, macOS and Linux.
The MVVM pattern without boilerplate.
Logic tests in a separate project.
SCP: Secret Laboratory plugins and their bots.
11 merged changes in 7 repositories. The maintainers of these projects reviewed our code and merged it into theirs.
Each has its own page with projects on real screens and a comparison with the alternatives.
Answers about C# and .NET, our projects and the numbers on this page.
Write-ups of the projects on this page and an overview of every technology.
Describe what you want to build. We reply within an hour and tell you plainly whether this technology is a good choice.