Skip to content

AmoreComputer/Pomodoro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Pomodoro

A simple macOS Pomodoro timer and a demo project showing how to set up any Mac app with Sparkle auto-updates and Amore licensing.

Download Pomodoro

Demo license key: 6E847-B1F9A-73BA7-A91F0-61A71-90113-7E033-073BE

What This Demonstrates

  • Over-the-air updates via Sparkle + Amore, so users get update prompts automatically
  • License key validation via the AmoreLicensing SDK
  • One-command releases with amore release to build, sign, notarize, and publish

Everything shown here via the CLI can also be done through the Amore app GUI.

Setup Guide

1. Sparkle (Auto-Updates)

Add Sparkle as an SPM dependency, then initialize the updater in your App struct:

import Sparkle

private let updaterController = SPUStandardUpdaterController(
    startingUpdater: true, updaterDelegate: nil, userDriverDelegate: nil
)

Add SUFeedURL, SUPublicEDKey, and SUEnableInstallerLauncherService to your Info.plist. If your app is sandboxed, you also need mach-lookup exceptions for Sparkle's XPC services in your entitlements:

<key>com.apple.security.temporary-exception.mach-lookup.global-name</key>
<array>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)-spks</string>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)-spki</string>
</array>

Run amore setup YourApp.app to register the app and generate Sparkle signing keys.

2. Licensing

Add AmoreKit as an SPM dependency. Initialize with your licensing public key:

import AmoreLicensing

let licensing = try AmoreLicensing(publicKey: "your-license-public-key")

The licensing.status property is @Observable. Switch on it to gate your UI:

switch licensing.status {
case .valid, .gracePeriod:
    TimerView()
default:
    LicenseView(licensing: licensing)
}

Create a product with the CLI:

amore products create -b com.example.App --name "My App" --device-limit 3

3. Releasing

amore release --scheme YourApp --release-notes "What's new"

This archives, code signs, creates a DMG, notarizes with Apple, signs for Sparkle, and uploads, all in one command.

Requirements

  • macOS 14.0+
  • Amore for the CLI

About

A simple macOS Pomodoro timer and a demo project showing how to set up any Mac app with Sparkle and Amore licensing.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages