Build Mac App — The template for selling paid macOS apps

The template for selling paid macOS apps

Build Mac App on Product Hunt

Creating a macOS app has never been so easy.

Build and sell a paid Mac app. Payments, licence keys, Apple's approval, auto-updates and the website are already done.

Get the templateOne-time purchase. Repository access arrives the moment you buy.
Your App 1.0
Your App
Applications

Extracted from 3 paid Mac apps already shipped

The whole thing, in one picture.

No jargon: this is what you are buying, and what happens after.

  1. 1You buy

    A finished Mac app, and its website

    Both already work on day one. You get the full source in a private GitHub repository.

  2. 2You build

    Your idea goes in

    Tell an AI agent what your app should do, in plain English. It writes the code, and the built-in checks catch the mistakes agents usually make.

  3. 3Your customer

    Buys, downloads, it just opens

    They pay on your website and get a licence key by email. Apple has already checked the app, so the Mac opens it without a warning.

  4. 4You get paid

    Money in, taxes handled

    Creem or Polar takes the card, handles sales tax and pays you. Every update you ship is offered inside your customers' copy of the app.

Steps 1, 3 and 4 are already built. Step 2, what your app actually does, is the only part that is yours.

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
  • Apple's signature on your app, so Macs trust itDeveloper ID certificate, hardened runtime, entitlements
  • One download for Apple-chip and Intel Macs alikeA universal build, launched on both before it ships
  • Apple's security check passed: no “damaged app” warningnotarytool, stapling, and a DMG Gatekeeper opens
  • Your app updates itself, and nobody can fake an updateSparkle, an EdDSA key pair and a signed appcast
  • Licence keys, so only paying customers can use itActivation per Mac, weekly checks, offline grace
  • A payment unlocks the app; a refund locks it againPayment webhooks, signature checks, refunds that revoke
  • Receipt and lost-key emails, sent exactly onceReceipts, key recovery and refund emails, idempotent
  • Those emails land in the inbox, not in spamSPF, DKIM and DMARC
  • A website with pricing and the legal pagesPricing, terms, privacy and a refund policy
  • A download button that always gives the newest versionA download link that follows your latest release
  • Google and AI assistants can find and understand your siteCanonical URLs, sitemap, OG images, llms.txt
  • Write “what’s new” once; it appears everywhereA 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 builds your app, signs it and gets Apple’s approval. It stops before anything irreversible: publishing is yours to run.

You bought it. Now what?

You get the source of a working Mac app and the website that sells it, in a private GitHub repository. You turn it into your app, mostly by telling an AI agent what you want. The payments, licence keys, emails and updates are already built.

  1. Accept the invitation

    Checkout asks for your GitHub username. GitHub emails you an invitation to the private repository within a minute; accept it and clone the repository to your Mac.

  2. See it running

    Install Xcode from the App Store, then two tools in Terminal. The finished app and the website that sells it open on your Mac before you change a line.

    Ask your agent: Help me run the website and the Mac app for the first time, and check my setup is right.

    This step in the guide
  3. Make it yours

    One command, or one sentence to your agent, renames the app, the site, the emails and the settings to your product. A check lists anything it missed.

    Ask your agent: Make this my product. It's called Clip Stack, the website is clipstack.app, I'm Jane Doe, and I want to sell it through Creem with a licence key. Then run doctor and tell me what's next.

    This step in the guide
  4. Build what your app does

    The part only you can do. Describe it to your agent one feature at a time; the repository's checks run after each change and name the file when something breaks.

    Ask your agent: Add a feature: [describe one thing the app should do].

    This step in the guide
  5. Connect the accounts

    Put the site online on Vercel, enrol in Apple's Developer Program so Macs trust your app, and connect a payment account. You test the whole purchase with a test card before any real money moves.

    This step in the guide
  6. Ship, and open for sale

    One command builds, signs and notarizes the app into a download other Macs open without a warning. Then one switch turns the waitlist into a buy button.

    Ask your agent: Ship version 1.0.0. Stop before publishing so I can check everything.

    This step in the guide

Already done for you

  • Checkout, sales tax and invoices, through a merchant of record
  • Licence keys, activation per Mac, and refunds that revoke them
  • Receipt, key-recovery and refund emails
  • Signing, notarization and a disk image macOS opens without a warning
  • Automatic updates for every version after the first
  • A sales site with pricing, FAQ, blog, terms, privacy and refund policy
  • No database or server of your own to run, to start

Yours to bring

  • What your app actually does
  • A Mac with Xcode, and an AI coding agent if you want one
  • An Apple Developer Program membership (a yearly fee paid to Apple)
  • A Creem or Polar account, and a domain for your site

You will work in Terminal and with an agent such as Claude Code, Cursor or Codex. You don’t write the plumbing, but expect to read what the agent changes.

See the real thing, not a mockup.

Captured from the template as it ships: the app your customers install, the update it offers, and the emails they receive.

The app

The emails

Licence window, in the template's app
First launch: paste the key from the purchase email. Buy and lost-key links go to your site.

Try a real app built with it.

NotchClip is a clipboard manager in the notch, made from this template. Its store runs in test mode, so you can go through everything your customers will, without paying.

NotchClip

Everything you copy, one move from the notch

  1. Open the NotchClip site: a real sales page, made from the template.
  2. Buy it with the test card 4242 4242 4242 4242. Nothing is charged.
  3. Get the receipt and your licence key by email.
  4. Download the app, paste the key, and it activates.
Open the NotchClip demo

Test mode: no real card, no charge.

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

Customers who paid can use your app; people who did not, cannot. And a mistake on your side never locks out someone who paid.

  • 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

Wired to the services you’d choose anyway.

Bring your own accounts; the integration is done. Every one is optional — with nothing configured, the site still builds and runs.

  • CreemPayments

    Takes the card and handles sales tax as the legal seller; issues licence keys; handles refunds.

  • PolarPayments

    The same contract through Polar, switched with one constant.

  • ResendEmail

    Receipts, access and refund emails, plus the waitlist and launch broadcast.

  • DataFastAnalytics

    Visits and revenue attributed to the page that sold.

  • VercelHosting

    The Next.js site deploys as it is, with previews on every push.

  • GitHubReleases & CI

    Actions build, sign and notarize each release; Releases serve the DMG.

  • SparkleUpdates

    Your app finds and installs its own updates, signed so nobody can fake one.

  • Apple notarizationSigning

    Apple checks and approves each version, so Macs open it without a warning. One command.

  • Claude CodeAgents

    The AI agent you talk to. The project gives it a map and step-by-step recipes, so it changes things safely.

Your codebase + Claude Code = features, not archaeology.

You tell the agent what you want in plain English. It finds its way around because the project hands it a map, a health check that says what is left to do, and a written recipe for each common 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.

  • Updates

    The updater cannot ship missing

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

    What happened: A release shipped with the auto-updater compiled out, and nothing complained.

  • Signing

    Every build launches before it ships

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

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

  • Downloads

    Download links survive any product name

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

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

  • Payments

    Our mistakes never lock out a buyer

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

    What happened: A rotated API key would have told every paying customer their licence was invalid.

  • Menus

    Paste works from the first launch

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

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

  • Screens

    No button can do nothing

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

    What happened: Fourteen buttons did nothing, including both on the first screen a customer sees.

  • Privacy

    Nothing you ship names your machine

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

    What happened: A committed installer layout carried the developer's username and home folder.

  • Website

    No visitor gets stuck in a stale theme

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

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

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.

Build Mac App

Template for macOS apps

$49one-time$149

Early price for the first 50 buyers43 of 50 left at this price · code EARLYBIRD, applied at checkout
  • Full source in a private GitHub repository
  • One-time payment
  • 14-day money-back guarantee
  • Template updates included
  • Unlimited apps you own, no royalties
  • 1 developer license

1 developer, $49, one-time payment.

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

Frequently Asked
Questions

What do I get?
The source code of a finished, working Mac app and the website that sells it, in a private GitHub repository you are invited to. The checkout, licence keys, emails, signing, notarization and automatic updates are already built and wired together; you change the app into yours and connect your own Apple and payment accounts. Updates to Build Mac App arrive in the same repository.
I'm not a developer. Is this for me?
Yes, if you are happy to work with an AI coding agent and follow step-by-step instructions. You describe what your app should do and the agent writes the code; the project’s checks tell it when it broke something. What an agent does not remove: opening an Apple Developer account and a payment account, and reading what it changes before you ship. The step-by-step guide is public, so you can see whether the first stages feel doable before you buy, and there is a 14-day refund if they do not.
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.
Why Creem, and not Stripe directly?
Creem is a merchant of record: the legal seller of each order. It charges the card, calculates, collects and pays the sales tax and VAT owed wherever the buyer lives, and handles invoices and disputes, which Stripe on its own leaves to you. The cards are processed by Stripe underneath, and Creem is the name on the statement. Your app sells through Creem or Polar the same way, and a skill in the repository walks an agent through adding another provider if you prefer one.
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-time purchase. Repository access arrives the moment you buy.