Skip to main content

Case Study

PasteDrop: 8 Days From Idea to the Mac App Store

21 minutes of code. 8 days of ship. The pilot of a repeatable macOS/iOS pipeline.

PublishedApr 2026Solo Developer

Updated Apr 20, 2026

21-Minute Codebase8 Days Idea-to-LiveMac App StoreShipped Apr 2026
Get PasteDrop on the Mac App Store$4.99 · macOS 14+ · No tracking

The Hook

The entire PasteDrop codebase was written in a single 21-minute sitting. Three commits, start to finish. Eight days later, it was live on the Mac App Store. No pivots, no stalled weekends, no half-finished branch sitting on a second monitor. Idea on a Sunday, approval the following Sunday.

This is the story of how that happened, and why it's repeatable.

21 min

Codebase written

3

Commits total

8 days

Idea to live

$4.99

One-time, no tracking

What PasteDrop Does

PasteDrop app icon

PasteDrop

macOS 14+ menu-bar clipboard utility

PasteDrop lives in the menu bar, watches the clipboard, and offers one-click transformations based on what you just copied. Copy a URL, get encode, decode, and strip query params. Copy a hex color, get a rendered swatch plus RGB and HSL conversions. Copy JSON, get pretty-print and minify. Nothing leaves the device. No network calls, no telemetry, no data collection.

8 detected content types:

JSONURLhex coloremailcodenumberUUIDplain text

Each type gets its own set of transforms, plus 5 universal ones that apply to any string. Thirty plus transforms in total, all offline, all instant.

PasteDrop main menu-bar interface showing content-type-specific transforms
PasteDrop screenshot 2
PasteDrop screenshot 3
PasteDrop screenshot 4
PasteDrop screenshot 5

The 21 Minutes

Three commits, in order, from the live git history of the repo. Timestamps are the actual commit times.

2026-04-12 12:12·f75e3d9

feat: initial PasteDrop implementation

2026-04-12 12:14·d0859fb

chore: add XcodeGen project, update swiftlint config

2026-04-12 12:33·8d9dbec

feat: extract CoreLib module, add 80 tests, fix review issues

2026-04-12 → 2026-04-20

App Store Connect submission, asset prep, review.

2026-04-20

Approved and live on the Mac App Store.

Three commits. Twenty-one minutes. Then eight days of waiting for Apple.

This Wasn't a Lucky One-Off

A 21-minute codebase only lands clean when the groundwork is already in place. PasteDrop was the first app shipped through a deliberate system called ship-apps: a small, opinionated pipeline for going from an idea to an App Store listing without reinventing the boring parts every time.

The real product isn't PasteDrop. It's the pipeline. PasteDrop is the proof that the pipeline works.

The Five Ingredients

Everything below already existed before PasteDrop. That's the point. Each piece was built once, tuned on earlier experiments, and then composed for this release.

01

The scaffold skill

/ship-app

A Claude Code skill that copies a platform template, renames every AppTemplate reference, inits git, and verifies the build compiles. One command from zero to "it builds."

02

Platform templates

~/templates/macos-utility

Pre-wired Package.swift, CLAUDE.md, Sources/, entitlements, PrivacyInfo.xcprivacy. A macOS variant and an iOS variant, both ready to be copied into a new app.

03

XcodeGen contract

project.yml

Every app regenerates its Xcode project from a yaml file. No .xcodeproj merge conflicts, no drift between what’s in git and what’s on disk.

04

Standardized CLAUDE.md

Rules / Build / Conventions

A shared contract across every app: Swift 6 strict concurrency, App Sandbox, SwiftUI-first, SF Symbols, conventional commits. The 25-line spec that served as the entire design doc.

05

Shared ASC playbook

APP_STORE_CONNECT_GUIDE.md

One document at ~/ship-apps/ with launch order, screenshot specs, common settings, and the com.87n1 bundle prefix. Every app inherits the same launch runbook.

Composed together: scaffold skill + platform template + XcodeGen + standardized CLAUDE.md + shared ASC playbook = a repeatable idea-to-App-Store flow.

Technical Shape

The app itself is small on purpose. Every dependency, every line of Swift, every entry in the entitlements file was a conscious choice, not an accumulation of defaults.

762

Lines of Swift

80

Tests (Swift Testing)

3

Dependencies

8

Content types

30+

Transforms

0

Network calls

0

Data collected

Swift 6

Strict concurrency

App Sandbox
Hardened Runtime
Privacy Manifest
MenuBarExtra primary surface
CoreLib framework (no AppKit dep)

All three dependencies are sindresorhus libraries: KeyboardShortcuts, Defaults, and LaunchAtLogin-Modern. The CoreLib module is a pure-Swift framework with no AppKit dependency, which keeps the 80-test suite fast and lets future apps in the pipeline reuse the same content-detection logic without pulling in the menu-bar UI layer.

PasteDrop is shipped. The pipeline is still running, with more apps moving through the same five ingredients behind it.

Try It

PasteDrop app icon

PasteDrop

$4.99 one-time · macOS 14+ · Sandboxed, no tracking

View on Mac App Store

Tech Stack

Frontend

Swift 6SwiftUIMenuBarExtra / AppKit

Tooling

Swift TestingXcodeGenSwiftLintKeyboardShortcuts (sindresorhus)Defaults (sindresorhus)LaunchAtLogin-Modern (sindresorhus)/ship-app scaffold skill

AI

Claude Code

Infrastructure

App Sandbox + Hardened RuntimePrivacy ManifestApp Store Connect

Want to discuss the architecture?

Get in Touch
PasteDrop: 8 Days From Idea to the Mac App Store — Jeff Michael Johnson