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.
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.