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