About

Hi, I'm Peter Zhang.

I build small, focused Mac & iOS productivity apps under the Obelisk Club brand. Everything I ship is local-first, one-time-purchase, and built in Swift for the Apple ecosystem.

What I work on

Currently 3 apps live across iOS, iPadOS, watchOS, and macOS. 10 more in various stages from "ready next quarter" to "scoped but not started." All share four principles:

  • Local-first. Your data stays on your device. No accounts, no cloud round-trips, no telemetry SDKs.
  • One-time pricing. No subscriptions. Free tier with optional one-time Pro unlock.
  • Focused scope. Each app does one thing. Feature creep gets spun out into a new app, not bloated into existing ones.
  • Native, modern macOS / iOS. Built in Swift, leveraging Apple frameworks (Vision, VideoToolbox, HealthKit, WatchKit, sips). No Electron.

Currently shipped

SnapPro

Professional Recording

ViewOne

Smart Burst Detection

PhotoBridge

Multi-Destination Backup

SipNote

Snap to Record

QuickPix

One-Click Compression

QuickVid Compress

Smart Compression

IDKit

On-device, private — no photo leaves your iPhone

LoopSnap

One chip per chat app

Photo Archive: iCloud to Mac

Automatic iCloud download

ScoreFlow

Auto page-turn

ShotKit

Beautiful Backgrounds

Lumio

Fast Everyday Capture

NearBeam

True Peer-to-Peer

TextRift

Instant line-level comparison of two texts

Snipnook

Fully local and offline. No accounts, no sync, no tracking.

Hexnut

Precision picker: saturation/brightness field, hue rail, RGB, and hex entry

Statnook

Live CPU, memory, disk, network, and battery in your menu bar

Urlescent

Encode and decode URLs the moment you type

Codalith

Generate QR codes for links, Wi‑Fi, contacts, email, SMS, phone, location, and calendar events

Clikt

Tap anywhere to count — built for counting without looking

Luxmo

Instant reflected light & exposure metering

Dahdit

Instant two-way Morse translation, fully offline

Braceful

Format, minify & validate JSON offline

Metaless

Remove GPS location, camera, date and software metadata in a tap

Vincula

Instant two-way conversion as you type

Subnetic

Instant IPv4 / CIDR calculation as you type

Pixform

Convert HEIC, JPEG, PNG, WEBP, GIF, TIFF and BMP to JPEG or PNG

Chrona: Age Calculator

Exact age in years, months and days — instantly

Lexitally

Live word, character, sentence, and paragraph counts as you type

Dimework

Zero-based envelope budgeting with monthly rollover

Magnes

Live µT reading with analog gauge and color zones

SeoSnap

Full SEO audit in seconds

CertSeal

Instant certificate grade and expiry check

Amortiq

Instant live calculation — results as you type

Tinesplit

Instant split — result appears as you type

ZoneFlip

Instant time conversion across all pinned zones

Shiftreel

Convert MOV, MP4, and audio-only M4A fully on-device

ZeroFold

Zero-based budgeting — give every dollar a job each month

Thinkloom

Keyboard-first outline editor: Tab, Return, arrow keys — build maps at typing speed

Cellary

Offline drink-window calculator for 14 grape varieties

RateSlate

Live day, hourly, weekly, monthly & annual rate conversion

Quovoice

One-tap quote-to-invoice conversion

Manulog

All manuals organized by room — no more lost PDFs

Jotlight

Search-as-you-type: filter your whole library live, press Return to create

Tablecast

Convert CSV to JSON, PDF, TXT, or XLSX

Unitto

Type "5 km to mi" and get an instant answer

Frettle

Instant capture — keyboard ready the moment you tap

PairPals: Kids Memory Match

Flip-and-match memory game made for ages 2–6

Plentu

Fast one-tap daily entry capture

Velum

Three focused writing sessions per day: 3 × morning, 6 × afternoon, 9 × night

Ownwords

Write your own affirmations in seconds

PollenSnap

Log symptoms in under 3 seconds

AutoUpkeep

Log any service in under 5 taps

Spinery

Local-first — all books stored on your device, no cloud required

Trickpad

Tally mode for any card game with unlimited players

Hueper

Live camera color scan — hex/RGB/HSB update in real time, no tap needed

Pastebin Deck

Instant fuzzy search triggered by a global hotkey

Huemetric

Fresh, procedurally-generated plates every screening — nothing to memorize

Chrovis

Instant color harmony for 5 classic schemes

Palettine

Instant 5-color harmony from any seed color

Palettro

5 color harmony modes including Triadic and Monochromatic

TintKit

Instant HEX, RGB & HSL from any color source

Contrasta

WCAG 2.x contrast ratio with AA/AAA/UI component badges

LoopTally

Volume-button counting — count without looking at your phone

Cronwright

Visual builder for Standard, Quartz, and AWS EventBridge cron dialects

Rowlens

Opens CSV and TSV files instantly, fully offline — nothing uploaded

GitScribe

Paste a diff (or share it from any Git client) and get a clean commit message instantly

Giftlyst

A dedicated gift list per person or occasion, with a live running budget total

Gladbox

One-screen capture — always-visible box, no add-entry flow to navigate to

Tankwell

One-tap water change logging with automatic countdown reset

Radix64

Live two-way text ↔ Base64 — no separate encode/decode mode

Hourledger

One-tap timer — start billing in under a second, no setup

Scannic

Auto edge detection via Apple Vision

Tonewell: Feelings Journal

One-tap capture — no mood picker required

Formcraft

Batch convert PNG, JPEG, HEIC, and TIFF instantly

Actinic

Full-stop & third-stop exposure wheel

RateCraft

Reverse-engineer your rate from income, overhead, tax, and margin

Wavrift

Convert M4A, WAV, and MP4 audio — fully on device

Tallyx

Zero-setup score tracking — open and play

Umbrio

Instant countdown timer — tap to start, stop anywhere on screen

Billpath

Sorted by due date — see what bills are coming first

Chromura

Instant CMYK + RYB mixing recipe from any color

Dailytone

One-tap mood entry — 5 levels, done in seconds

Statusly

Every official HTTP status code, organized by category

Feelings Log

ScreenRecorder

RecipeBox

PastTense

Distraction-free editor built for the scripting writing technique

Sortimals

Shape sorting puzzle for ages 2-6

Unixly

Auto-detects seconds vs milliseconds

Binafy

Instant text ↔ binary translation (UTF-8)

Cogniary

Guided thought record — situation, automatic thought, emotion, and reframe on one screen

Epochly

Live two-way timestamp ↔ date conversion — no convert button, no unit picker first

Huecoat: Wall Paint Preview

Tap-to-select wall detection with an adjustable tolerance slider

Quakescan

Live USGS earthquake data near your location

Uuidly

Instant v4 UUID generation

Enverra

Zero-based envelope budgeting — give every dollar a job

Waypaper

Arrange photos and worded goals freely on a vision board canvas

Waxshelf

Add records in seconds — cover photo, condition grade, shelf or crate location

TipBeam

One-screen bill, tip & split calculator

Spendjar

A category for every part of your spending, each with its own monthly budget

Yamlite

Instant offline YAML validation

Bandwise

Match a ring you own to find its size

PixScrub

One-tap metadata strip — GPS, camera, date, and software removed instantly

Glance Away

One-tap 20-20-20 eye break timer

Inktag

Live preview as you type

Fastura

Tap once — fast starts instantly, no setup

Peekmeta

Instant full EXIF metadata view

Pixveil

View full EXIF, GPS & IPTC metadata grouped by category

Cairnbar

Menu bar countdown — see time remaining without opening a window

LoanClarity

Instant monthly payment, total interest, and payoff date

Beat Sense

Full-screen tap zone — your entire screen is the button

Tempolo

Listen Mode — real-time BPM detection from any song via the microphone

Decibelly

Live dB SPL meter, updates in real time

Emotidex

Interactive feelings wheel based on Plutchik's model of emotion

GroceryListCategories

HashGenerator

SoundGauge

Live dB(A) sound level meter, updates in real time

HomeInventory

SortaSize

Tap-to-sort gameplay — no dragging for small fingers

Cephalog

One-tap migraine logging in under 10 seconds

Lacquerly

Camera and photo-library matching, not camera-only

Stowlist

Smart templates that scale quantities to your trip length

Keysmith

Random passwords with full character-class control

Pagequill

Convert PDF pages to PNG or JPEG images

Collator

Drag-and-drop page reordering

Practicia

One-tap timer — start practicing instantly, no setup

Wellstreak

One-tap habit logging, no account needed

Barm

One-tap feed logging with smart hydration ratio presets

Stretchcue: Stretching Timer

5 curated stretch routines, ready to go

Why a portfolio of small apps?

The orthodox indie-dev advice is to pick one app and grind on it for years. That doesn't match how I work — I get bored after 6-8 months of focused work on a single app. The portfolio model trades compound MRR for the compound interest of staying engaged across years instead of burning out at year 2.

For the long-form version of this argument: 13 Mac & iOS apps, 0 subscriptions.

Selected writing

I write occasionally about Apple-ecosystem tools, indie development, and the practical details of building local-first apps. Highlights:

Get in touch

Best way to reach me is email. I read every message and the next version of every app is built from these conversations.

obeliskclubclub@gmail.com

Press inquiries: subject "Press kit" gets a fast reply with screenshots, icons, and bio.

Indie dev peers comparing notes: subject "Portfolio model" gets a longer reply.

Stay in the loop

New apps and posts ship to the RSS feed. Email reaches me at obeliskclubclub@gmail.com.