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.

I'm a digital nomad: I work remotely long-term, so these apps get written from wherever I happen to be living at the time.

What I work on

135 apps are currently listed across iOS, iPadOS, watchOS, and macOS. The catalog changes as products move from development to release. 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.

Next up: Apple TV apps are in development. Nothing has shipped on tvOS yet — they'll arrive over time, under the same four rules.

Currently shipped

SnapPro

Professional Recording

ViewOne

Smart Burst Detection

PhotoBridge

Multi-Destination Backup

SipNote

Snap to Record

QuickPix

One-Click Compression

QuickVid

Smart Compression

IDKit

On-device, private — no photo leaves your iPhone

LoopSnap Motion Lab

One chip per chat app

Photo Archive: iCloud to Mac

Automatic iCloud download

ScoreFlow

Auto page-turn

ShotKit

Beautiful Backgrounds

Lumio

Fast Everyday Capture

Beamora

True Peer-to-Peer

TextRift

Instant line-level comparison of two texts

Glyphboard

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

Hexnut

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

Vytals

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, days — plus totals in days, weeks, hours, minutes

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

Compare two pages signal by signal — you vs any competitor

Amortiq

Instant live calculation — results as you type

Tine

Instant split — result appears as you type

ZoneShift

Instant time conversion across all pinned zones

Shiftreel

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

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

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

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

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

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 Time

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

Scannic

Auto edge detection via Apple Vision

Tonewell

One-tap capture — no mood picker required

Filewise

Batch convert PNG, JPEG, HEIC, and TIFF instantly

Actinic

Full-stop & third-stop exposure wheel

Wavrift

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

Umbrio

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

Billpath

Sorted by due date — see what bills are coming first

Simmerly

Recipe scanning

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)

Epochly

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

Quakescan

Live USGS earthquake data near your location

UUID Forge

Instant v4 UUID generation

Enverra

Zero-based envelope budgeting with automatic monthly rollover

VisionNest

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

Emotidex

Interactive feelings wheel based on Plutchik's model of emotion

HashForge

Common hash algorithms

SoundGauge

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

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

Keysmith

Random passwords with full character-class control

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

Castral

Instant one-tap rolling for all standard dice: d4, d6, d8, d10, d12, d20, d100

Warrantide

Track warranties with purchase date, expiration, price, and category

CardSweep

Scan any business card in seconds with Apple Vision OCR

BreakPoint Number

Instant break-even calculation on every keystroke

TintScout

Camera color matching

Spirio

Three built-in patterns: Box Breathing, 4-7-8, Physiological Sigh

SubnetMaskCalculator

Instant IPv4 & IPv6 subnet calculator

ConvertKit One

PDF → JPG & PNG — full-resolution page images

Vinculum

Live bidirectional converter — type a number or a roman numeral and watch the other update instantly

Chronoburn

Drag directly on your video to position, resize, and time the clock — no keyframe editor.

NetLoom

Instant IPv4 & IPv6 address and CIDR block breakdown

Tidyloop

Auto-rotating chore chart

Isolux

Tactile colour wheel — drag to pick any hue

VerticalHorizontalReframe

Motion-aware reframing

Kanjika

Global-hotkey lookup panel that opens over any app

JwtDecoder

Header and payload viewer

WingTally Life

Fully offline species search across 350+ North American birds

LivePhotoLooping

Live Photo to GIF

Chromaloom

Instant on-device palette extraction from photo or camera

Sixframe

Live 6-platform grid preview

Frameloom

Live multi-platform preview grid

Fillframe

One-tap conversion to 9:16, 1:1, and 16:9 platform presets

Bookmarque

Reading session log

Hourglow

One-click start and stop

PlanScope

Renders raw EXPLAIN ANALYZE output as a readable tree

RecipeStepDisplay

Your recipe on the TV, one clear step at a time

Syndara

One-screen quick log — record a symptom in seconds

TallyTable

Live cost that ticks up by the second while the meeting runs

Cruxscale

Instant conversion across YDS, French, UIAA, British, Ewbank, Saxon, V-Scale, and Fontainebleau

DeliverableTracker

Client deliverable pipeline

Homewheel

Wheel view — a circular year at a glance, instead of a flat list of due dates

Backnumber

Track every comic issue you own — series, number, condition, price, and notes

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.

Obelisk Club is a One-Person Company (OPC): design, code, support, and this website are all me. No VC, no team, no subscriptions.

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.