Skip to content

Custom software

Desktop application development for Windows, macOS and Linux

Desktop apps that print, work offline and update themselves, with one codebase for Windows, macOS and Linux. For counter and retail operations.

Free first conversation · Reply within 1 business day

Facts behind this service

  • Bottle POS (Quilt Software / PosNation): Electron 35 and React 19 for 3,000+ retailers

  • 60 versions in 11 weeks through a parallel Windows, macOS and Linux pipeline

  • Silent ESC/POS thermal printing, customer display and offline detection

  • Zero-touch updates: self-hosted release server, channels and staged rollouts

Recognize this situation?

  • The web-based register stops selling when the internet goes down, and the line in the store grows.

  • The thermal printer only works through a browser plugin, and every browser update breaks printing.

  • Updating the app takes remote access machine by machine, and every store runs a different version.

  • The team knows web, and nobody wants to maintain three codebases for Windows, macOS and Linux.

What we deliver

  • App for Windows, macOS and Linux

    App for Windows, macOS and Linux

    One codebase in Electron and React produces the installers for all three systems, so one team maintains the app on every machine.

  • Hardware integration

    Hardware integration

    Silent ESC/POS thermal printing with no browser plugin and no dialog box, customer display, printer discovery and a print test tool.

  • Offline operation

    Offline operation

    Detection of a dropped connection, local storage and sync when the internet comes back, with the conflict rules defined in the spec.

  • Automatic updates

    Automatic updates

    A release server, distribution channels and staged rollouts, to update every machine with no technician visit and no action from the user.

  • Bridge to existing systems

    Bridge to existing systems

    Bridges between the desktop app and your web system or API, with role-based access control, to reuse what already works without a rewrite.

  • Build and test pipeline

    Build and test pipeline

    Parallel builds for all three systems, automated tests and CI gates, to ship new versions often and without surprises.

See also: mobile app development and legacy modernization.

Results and experience

  • Quilt Software / PosNation

    Scope:
    Desktop app architecture

    Bottle POS: desktop app in Electron 35 and React 19 for a cloud POS in liquor retail, with zero-touch updates recorded in 5 ADRs and bridges to the legacy web POS.

    • 3,000+retailers and $2.7B+ in annual sales
    • 60versions in 11 weeks, for Windows, macOS and Linux
    • 61IPC handlers: silent thermal printing, customer display and offline detection
    • 1,455Jest tests within 3 weeks, up from 540

    Read the case study

  • Mahout ERP Cloud

    Scope:
    POS module

    Related experience, in POS: multi-tenant ERP SaaS with a POS module, multi-warehouse inventory and Brazilian e-invoicing (NF-e).

    • POS, orders, multi-warehouse inventory and finance modules
    • 275REST resources (~1,400 endpoints)
    • 3,400+PHPUnit tests
    • 300+trial companies and 10+ paying customers

    Read the case study

Facing a similar challenge? Tell us the problem and the timeline.

Request a first call

Free first conversation · Reply within 1 business day

Who it is for and who it is not

Desktop application development is the building of software installed on Windows, macOS and Linux for jobs the browser does not handle well: printer and display integration, offline operation and all-day use at the counter. Hire it when the operation depends on local hardware, must keep running offline or needs control over updates on every machine.

A good fit for

  • Retail chains that need a POS with a thermal printer, a customer display and offline operation.
  • Operations and IT teams that maintain internal tools with access to files, devices or local networks.
  • Software companies that want to bring an existing web system to the desktop without rewriting it.
  • Companies that must distribute and update the same app on hundreds or thousands of machines.

Not a fit for

  • Systems that run well in the browser and use no local hardware: a web app costs less to maintain.
  • Games, video editing and software that needs native graphics performance: Electron is not the right tool.
  • Drivers and embedded device software: we work at the application layer.
  • Native apps in .NET or Qt: our production experience on the desktop is with Electron and React.

How it works and timelines

  1. Discovery

    Discovery

    We map the operation, the hardware, the existing systems and the fleet of machines. You receive the recommendation between desktop and web, the architecture, the update strategy, the plan and the estimate.

  2. Specification and ADRs

    Specification and ADRs

    Decisions on updates, offline operation and hardware access recorded in ADRs, with acceptance criteria per flow. You approve the decisions before the code.

  3. Proof of concept

    Proof of concept

    The biggest risk first: the packaged app talking to the real hardware and to your system. You receive test installers to validate in the store or at the office.

  4. Production

    Production

    Remaining flows, automatic updates, the pipeline for all three systems and automated tests. You receive the installers, the release server and the operations documentation.

  5. Rollout and evolution

    Rollout and evolution

    Staged distribution through channels, tracking of the versions in the field and new features, under a monthly retainer or handed over to your team.

Typical ways to engage this service
ScopeTypical timelineEngagement model
DiscoveryOperation, hardware, architecture, update strategy and estimate1–2 weeksFixed-scope project
Proof of conceptPackaged app, integrated with the hardware and your system2–4 weeksFixed-scope project
ProductionFull app, automatic updates and the pipeline for all three systems6–12 weeksFixed scope or time & materials with a cap
Ongoing evolutionNew versions, new devices and rollout through channelsOngoingMonthly fractional retainer

Timelines are typical ranges. Discovery defines the scope and the estimate of each project; the contract can be in USD or BRL.

Want to know which format fits your project?

Request a first call

Free first conversation · Reply within 1 business day

Technical details

How we use AI with governance, the decision comparison and the stack

AI with governance

On the desktop, AI speeds up the build under the same rules as any of our projects and only enters the product when there is a clear use case.

  • In the buildAI coding agents (Claude Code, Codex, Cursor, Copilot, OpenCode) implement handlers, screens and tests from approved specs.

  • What humans reviewThe architecture decisions recorded in ADRs and every merge go through senior human review.

  • Quality gatesAutomated tests, CI gates and pre-commit hooks block regressions before each version.

  • AI in the appAssistants and automations call the model through an API, with guardrails and a log of every call.

  • Local dataWhat stays on the machine only leaves it when the spec says so, and it is never used to train models.

Decision comparison

Web app, Electron desktop app or native desktop app: when to use each
CriterionWeb appElectron desktop appNative desktop app
When it makes senseUse in the browser, with no local hardwareLocal hardware, offline operation and a team with web experienceGraphics performance or deep integration with one operating system
Local hardwareLimited to the APIs the browser exposesPrinters, displays and files reached through Node.jsFull access to the operating system APIs
Working offlinePossible with service workers, within browser limitsLocal storage and sync inside the app itselfLocal storage and sync, implemented per platform
UpdatesImmediate: publish to the serverAuto-update with channels and staged rolloutsInstallers or the store of each system
Codebase and sizeOne web codebase; nothing to installOne web codebase for all three systems; bundles Chromium, so installers are largerUsually one codebase per system; smaller binaries

Stack and integrations

  • Electron
  • React
  • TypeScript
  • Node.js
  • ESC/POS
  • Windows
  • macOS
  • Linux
  • Laravel
  • Jest
  • Playwright
  • GitHub Actions
  • Docker
  • PostgreSQL
  • MySQL

Frequently asked questions about Desktop Apps

Should I build a desktop app or a web app for my internal tool?

Web is the default; desktop pays off in three cases: integration with local hardware, an operation that cannot stop without internet and the need to control the version on every machine. If none applies, a web app costs less to maintain. Combining both is common: the existing web interface inside a desktop shell that handles the hardware.

Does the same app run on Windows, macOS and Linux?

Yes: with Electron, a single codebase produces installers for all three systems. On Bottle POS, the desktop app of Quilt Software / PosNation, we shipped 60 versions in 11 weeks through a parallel pipeline for Windows, macOS and Linux. Windows and macOS expect signed installers; signing goes into the pipeline with your company certificates.

Can the app talk to thermal printers and customer displays?

Yes. On the desktop, the app talks straight to the hardware: silent ESC/POS thermal printing with no dialog box, customer display and printer discovery. On Bottle POS, communication between the interface and the system goes through 61 IPC handlers, and there is a thermal-printer test tool. Other devices are assessed in discovery, with the real equipment.

How are updates delivered to every machine?

Through automatic updates, with no action from the user: the app checks a release server, downloads the new version and applies it. Channels separate stable versions from test ones, and staged rollouts release the update to part of the machines before all of them. On Bottle POS, this zero-touch strategy was recorded in 5 ADRs and uses a self-hosted Laravel 12 release server.

Does the app work without an internet connection?

Yes, for what the project defines: the app detects the dropped connection, keeps operating on local data and syncs when the internet comes back. What works offline is decided in the spec, flow by flow, because operations such as card payments depend on external services. On Bottle POS, offline detection is part of the app.

Can you wrap our existing web system in a desktop app?

Yes: an Electron shell loads the existing web system and adds what the browser cannot do, such as silent printing, device access and controlled updates. On Bottle POS, JavaScript bridges connect the desktop shell to the legacy web POS, without rewriting the platform. Discovery checks authentication, sessions and the parts of the web system that need adjusting.

Electron or Tauri for a business desktop app?

Electron is the more predictable choice when the team knows web and the app must behave the same on all three systems, because it bundles its own Chromium and Node.js. Tauri uses the webview of each system and a Rust core, which yields smaller installers, with rendering differences across systems. Our production experience is with Electron.

About Master Timm

Master Timm

AI-focused IT consultancy

Get to know Master Timm

Senior engineering from discovery to delivery: whoever designs the architecture also writes and reviews the code.

  • 20+ years of software engineering experience
  • Projects for US and Brazilian companies, under B2B contracts
  • Specs, tests and documentation in the client's repository
  • Fixed scope, capped time & materials or retainer, in USD or BRL

Why Brazil

  • São Paulo is 1–2 hours ahead of US Eastern Time, so working hours overlap.
  • We work in English: calls, specs and documentation.
  • Remote B2B work for US companies since 2022.
  • Scope, ownership and confidentiality are set in the contract before work starts.

Master Timm · Updated on

Let's assess your desktop case

In the first conversation we look at the operation, the hardware and the current system, and tell you plainly whether the case calls for a desktop app, a web app or both combined.

Request a first call

Free first conversation · Reply within 1 business day