Build Mac App — Sell your Mac app without the months of plumbing

The template for paid macOS apps

Sell your Mac app without the months of plumbing.

The complete source for a paid macOS app and the site that sells it: licence keys, notarized releases, Sparkle updates, payments, email and a blog. Every part is tested, and the repository is built to be worked on by AI agents.

Get the templateOne email when it ships. Nothing else, ever.
Your App 1.0
Your App
Applications

Extracted from 3 paid Mac apps already shipped

Before your first sale

12 things between “it runs” and “it sells”.

Each one is time not spent on your app. All of them are already done, tested and wired together.

Before your first sale
  • Developer ID certificate, hardened runtime, entitlements
  • A universal build that launches on Apple silicon and Intel
  • notarytool, stapling, and a DMG Gatekeeper opens
  • Sparkle, an EdDSA key pair and a signed appcast
  • Licence keys: activation per Mac, weekly checks, offline grace
  • Payment webhooks, signature checks, refunds that revoke
  • Receipts, key recovery and refund emails that arrive once
  • SPF, DKIM and DMARC so they do not land in spam
  • A site with pricing, terms, privacy and a refund policy
  • A download link that follows your latest release
  • Canonical URLs, sitemap, OG images, llms.txt
  • A changelog that feeds the feed, the appcast and the release notes
Build Mac App: zsh
~/your-app % mac/scripts/release.sh 1.0.0 1

▸ Preflight
  ✓ notarytool  found
  ✓ Sparkle linked  declared in project.yml
  ✓ SUPublicEDKey  matches the key in the keychain
  ✓ row for 1.0.0  in the changelog

▸ Building, universal
  ✓ architectures  arm64 x86_64
  ✓ hardened runtime  enabled

▸ Launch smoke on the signed bundle

▸ Submitting to Apple
  ✓ ticket  stapled and validated
  ✓ Gatekeeper  a stranger's Mac will open this

▸ Done here. Two commands left, in this order

One command. It stops before anything irreversible: publishing is yours to run.

Everything a paid Mac app needs, already working together.

Spend your time on the app. The licensing, releases, updates, payments, email and site are done.

What's inside

Licence keys that never lock out a paying customer

  • Activation per Mac, rechecked weekly
  • A 14-day offline grace window
  • Your misconfiguration says “try again later”, never “invalid licence”
  • Lost-key recovery by email, on the site and in the app
  • Refunds revoke the key at the provider

Your codebase + Claude Code = features, not archaeology.

An agent opens the repository and finds a map, a doctor and rule books written from real failures. Then it has a skill for the job.

zsh
~/clip-stack % scripts/doctor.sh

── Your product
ok    rename              Clip Stack · clipstack.app
── Signing and release
ok    signing-identity    Developer ID Application
todo  sparkle-public-key  the updater stays off
      → generate_keys --account clip-stack, once
── Selling
ok    provider            polar
todo  on-sale             the site shows a waitlist

Every check reports the file, the line and the fix, so an agent acts instead of guessing.

Claude Code

> /

  • /new-appRename it into your product
  • /doctorWhat state is this in, what is next
  • /add-featureLogic, screen, tests, honest copy
  • /add-screenA window, sheet or pane
  • /add-settingA preference in Settings
  • /add-entitlementA permission, safely
  • /add-payment-providerAny provider, held to the suite
  • /switch-paymentsCreem ↔ Polar, keys kept
  • /add-emailA new email or broadcast
  • /add-blog-postSourced, answer-first posts
  • /go-liveFrom template to taking money
  • /releaseShip a notarized version
  • /upgrade-templatePull in template updates

13 skills ship in the repository, one for each job you will actually do.

What broke in real apps, and what now stops it.

From three paid Mac apps shipped on this foundation. Each failure is now caught by a check that runs on every change, so you inherit the lesson without paying for it.

  • A release shipped with the auto-updater compiled out, and nothing complained.

    The release preflight refuses to build unless Sparkle is really declared and the public key matches.

  • An ad-hoc signed Release build crashed before its first line of code: macOS refused the embedded updater.

    Every build is launched on Apple silicon and Intel before it is notarized, and the crash reason is printed.

  • A two-word product name broke every download: GitHub silently renamed the file.

    Release files are named the way GitHub stores them, and the site looks them up by that name.

  • A rotated API key would have told every paying customer their licence was invalid.

    Our own misconfiguration is always “try again later”; a suite holds every payment provider to it.

  • ⌘V did nothing in the licence-key field, because the app had no Edit menu.

    The menu is data, installed before any window, and read back out of the running app.

  • Fourteen buttons did nothing, including both on the first screen a customer sees.

    Screen actions are required at compile time, and a check fails on any that could be left empty.

  • A committed installer layout carried the developer's username and home folder.

    Layouts are built in a throwaway folder, and a check scans every committed file for home paths.

  • A website stuck returning visitors in a theme it no longer offered, with every check green.

    There is no theme switch; a test measures contrast and refuses theme overrides.

Dmytro Virych

Hey, it's Dmytro 👋

I make paid Mac apps and sell them myself: MacMemory, Goal Rings and Localdock.

Every one needed the same plumbing before it could take its first payment: signing and notarization, a Sparkle feed, licence keys, webhooks, receipts, a site with terms and a refund policy. And every one broke somewhere in that plumbing, the way the list above shows.

So I stopped rebuilding it. Build Mac App is that plumbing, pulled out into one repository, with a check written for each thing that broke, so it breaks for nobody else.

Build the app. The rest is done.

Questions before you buy? Write to hello@buildmac.app. The reply comes from me, within three business days.@dmytrovirych

One price.
Lifetime access.

One-time payment. No subscription. Repository access arrives the moment you buy.

$149

  • One-time payment
  • 14-day money-back guarantee
  • Template updates included
  • Unlimited apps you own, no royalties
  • 1 developer license

1 developer, $149, one-time payment.

One email when it ships. Nothing else, ever.

Secure checkout by Creem, powered by Stripe. Prices in USD, excluding VAT and may vary by location.

Frequently Asked
Questions

What do I get?
Access to the private GitHub repository: the Mac app, the site that sells it, the release pipeline, the payment and email integrations, the checks and the agent tooling — the whole of Build Mac App, as source you own a copy of. Updates arrive in the same repository.
Is Build Mac App a subscription?
No. You pay once, and every update to the template is included for as long as it is maintained.
How many apps can I build with it?
As many as you like, and you owe nothing further for them: no royalty, no revenue share, no attribution. The licence is for one developer; a colleague who works on the code needs their own.
What else do I need?
A Mac with Xcode; an Apple Developer Program membership (a yearly fee paid to Apple) to sign and notarize the app; an account with Creem or Polar to take payments; and somewhere to host the site — it deploys to Vercel as it is.
Does it work with AI coding agents?
It is built for them. The repository carries rule books written from real failures, a machine-readable map, a doctor that reports what is left to do, checks that name the file and the fix, and thirteen skills with hooks for Claude Code. Tools that read AGENTS.md get the same rules.
How do I get access after buying?
Checkout asks for your GitHub username, and GitHub sends you an invitation to the repository within a minute. If you leave the field empty or mistype it, the receipt links to a page where you can name the right account.
Is there a money-back guarantee?
Yes. 14 days from the day you buy, no questions asked. Email hello@buildmac.app. The refund removes your access to the repository.

Ship the app, not the plumbing.

Your next Mac app: signed, notarized, updating itself and taking payments.

Get the templateOne email when it ships. Nothing else, ever.