Expertise · Desktop applications
Applications that are installed on the computer. On macOS we have built two; for Windows and Linux this page is an offer, not a history.
We build native applications for macOS, with the logic core separate from the screen, so that the same logic also works on the phone. For Windows and Linux/Ubuntu we do not have anything delivered yet and we write that as such, with the conditions under which we would accept the work. The first question remains whether you really need an installed application.
An offer, with conditionsThe rule is mechanical and I apply it mechanically. On macOS we have two in-house implementations, built and runnable: a menu bar app with 25 Swift files, which reuses 15 files from the core of an iPhone project, and a second, simpler app, which is a WebKit wrapper over a web app. Both have a compiled binary on this machine. But the service, as it is named, covers three families of systems, and for two of them — Windows and Linux/Ubuntu — we searched seriously and found zero: no in-house .NET or Qt project, no `tauri.conf.json`, no Electron written by us, no `.desktop`, no deb, rpm or AppImage packaging. In addition, neither of the two macOS apps has ever been packaged in a distributable installer. With only one of three platforms covered and zero distributions, the page is written as an offer with conditions. When we deliver the first Windows or Linux application, the value changes, not the text.
The first question we ask you is not for which system, but whether you really need an installed application. It is worth installing when it needs something the browser does not give it: direct access to sensors or peripherals, a permanent presence in the system tray, working without internet, access to files on the disk without the person loading them every time, or running in the background when the window is closed. If none of these is required, a site that opens from a link is cheaper to build, update and maintain — and we tell you that, even if the work ends up smaller.
On macOS we have two built applications. The first is a menu bar application: 25 in-house Swift files, plus 15 core files taken directly from the iPhone project of the same product — the same files, not a copy. It is built with a script that calls the Swift compiler directly, target `arm64-apple-macosx14`, linking eleven system frameworks, including SwiftUI, AppKit, CoreMotion, Vision and UserNotifications. The resulting binary is 6,516,128 bytes. The second is much simpler and it is honest to say how much: three Swift files, a WebKit wrapper over a web application, with sandbox and hardened runtime enabled, compiled universally for Intel and Apple processors. They are two different things and we call them differently.
What we do not have, stated clearly. Windows: zero. We looked for .NET, WPF, WinForms, WinUI projects, `.xaml`, `.appxmanifest`, `.msi`, `.wxs` files — everything we found on disk belongs to a third-party C library, vendored in another project, which we did not write. Linux desktop: zero — no `.desktop` file, no deb or AppImage package built here. Electron or Tauri written by us: zero. And, just as important: neither of the two macOS applications has ever been packaged into an installer. They exist as locally built `.app` packages, ad-hoc signed, without a team identifier.
What nevertheless transfers from the experience so far, and this is the part that matters for a new project: the discipline of keeping the logic core separate from the interface. In the macOS project, the calculation and policy files do not import the interface, so they compile and run on the Mac as a normal programme, without the simulator; their logic suite runs in a few seconds. The same separation means that porting to another system is a matter of wrapper, not rewriting. That is what we rely on when we say we could do Windows or Linux — not on an experience we do not have.