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
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
自动翻页谱架
Auto page-turn
ShotKit
Beautiful Backgrounds
Lumio
Fast Everyday Capture
Beamora
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
Branchpad
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
Vowscript
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
Kitloom
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 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
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
HueBlend
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
ReelGrab
Simmerly
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)
Innerlogue
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
UUID Forge
Instant v4 UUID generation
Enverra
Zero-based envelope budgeting — give every dollar a job
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
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
HashForge
SoundGauge
Live dB(A) sound level meter, updates in real time
Shelfling
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
Stowline
Smart templates that scale quantities to your trip length
Passphrasely
Random passwords with full character-class control
Papershift
Convert PDF pages to PNG or JPEG images
Pageon
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
Tallymood
One-tap logging — a five-level mood grid for the whole year, at a glance
Relo Ready
Countdown timeline auto-organized into 6 move-day phases
Castral
Instant one-tap rolling for all standard dice: d4, d6, d8, d10, d12, d20, d100
Warrantide
Mullion
CardSweep
Scan any business card in seconds with Apple Vision OCR
BreakPoint Number
Instant break-even calculation on every keystroke
TintScout
Sipdash
One-tap logging with quick presets
Cineproof
Live grid preview — drag sliders, see results instantly
Spirio
Three built-in patterns: Box Breathing, 4-7-8, Physiological Sigh
Linkloupe
Instant local link previews via direct Open Graph fetch
ScreenshotTextRedactor
Twinsift
On-device Vision-based near-duplicate detection
IPGlance
Every local address at a glance — Wi-Fi, cellular, hotspot, VPN
SubnetMaskCalculator
Instant IPv4 & IPv6 subnet calculator
Amortio
Instant monthly payment, total interest, and total cost
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.
Visaframe
Live face-alignment guide with a green in-spec indicator
NetLoom
Instant IPv4 & IPv6 address and CIDR block breakdown
Cinesheet
Live frame grid — drop a video and watch frames appear one by one
Tidyloop
Auto-rotating chore chart
Seamreel: Screenshot Stitcher
Auto-sort by overlap — drop screenshots in any order
TurnSlip
Instant offline queue management
Framecal
Calendar grid — every day filled with photo thumbnails
Isolux
Tactile colour wheel — drag to pick any hue
VerticalHorizontalReframe
GradeArc
5 curve methods including bell curve normalization
Segflow: Lesson Timer
Lesson plans with named, ordered time segments
SplitScreenComparison
Kanjika
JwtDecoder
WingTally Life
Fully offline species search across 350+ North American birds
LivePhotoLooping
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
DipDrop Counter
One-tap rep counter with haptic feedback
MeditationBreathingDisplay
Bookmarque
Furl
Visual curl command builder
DreamBoardMaker
EmotionalCheckIn
One-tap check-in from the Home Screen or Lock Screen widget
Estimly
One-screen quote builder with live totals
ExifDateBatch
Batch offset by days, hours, and minutes — see every timestamp shift live
GlucoNote
Hourglow
One-click start and stop
Duemark
One-screen invoice editor with live totals
Spokewell
Twelve bridge statements ringing the one belief you are reaching for
Lullcut
Automatic silence detection from the audio waveform, entirely on your Mac
ManifestationPlanner
Markwise
Solve any two of cost, price, markup, margin and profit
MedRhythm
Nexum
Native macOS SwiftUI app — zero Electron or web views
Odometrix
Snap-to-log odometer capture via on-device text recognition
Palette Loom
Pgvista
Pillfold
Build a daily supplement and vitamin checklist
Ipsumly
Exact character-count mode — ask for 160 characters, get 160
Planaura
PlantSip
Overdue, Today, and Upcoming — sorted by what needs water first
PostureReminderTimer
RecipeStepDisplay
Regexly
ScoreNight
Built for Apple TV — swipe the remote to score, no phone required
Shadeframe
One-click dark mode for any website via a Safari toolbar toggle
Nightledger
One-tap sleep timer, no wearable required
Spirave
Box, Equal, and 4-7-8 breathing patterns — tap once and begin
Stridekeep
Live step ring with today's steps, distance, and floors climbed
StitchTally
One giant tap target for split-second counting
Flareline
One-screen quick log — record a symptom in seconds
TallyTable
TuneStrum
Voxen
Live word-by-word highlighting as text is read aloud
Nowscript
On-device phrasing check that keeps every intention in the present tense
Skysill
Full-bleed ambient display that rotates through your saved cities
IpLookout
Goalsize
Target-size compression: set a byte budget and Goalsize hits it
Focalign
Tap to mark a focal point, then scrub through aspect ratio presets with an instant live crop preview
ClipShape
Real-time safe-zone overlay per platform
Dualscope
Frame-accurate synchronized playback
VideoFrameScrubber
Clustereo
On-device visual similarity clustering (Vision) — not just file hashes
Burstsift
CiteWeave
Instant DOI lookup with title, authors, journal, and year
Clipright
Zero re-encode container-level rotation — full quality, original codec, seconds not minutes
Renewio
Track leases, subscriptions, insurance, warranties, and vendor contracts
EnvScope
Secret detection — API keys, tokens, and passwords are flagged and masked automatically
HumanitarianAidSector
FocalPeak: Sharp Frame Finder
Live sharpness waveform while you scrub
Branchsmith
Instant, valid branch names from any task description
NationLedger
Live search across IRS-registered nonprofits
Flossary
Offline DMC ↔ Anchor color cross-reference
EducationCharitiesWorldwide
Lantern Registry
Live search across ProPublica's IRS nonprofit registry
SnapGrep
Instant full-text search across your entire screenshot library
VolunteerOpportunitiesNear
Chalktick
Full-screen projection-ready countdown
Duplifind
Exact & near-duplicate detection — content hashing plus metadata matching
MicrofinancePlatformsWorldwide
Duploop
Exact duplicate detection via cryptographic file hashing
Kinetrace
Live motion heatmap timeline as your video is analyzed
Cruxscale
Instant conversion across YDS, French, UIAA, British, Ewbank, Saxon, V-Scale, and Fontainebleau
DeliverableTracker
Facetile: Avatar Cropper
Face-aware auto-cropping powered by on-device Vision
Freqscope
Precision tone generator — 20 Hz to 2000 Hz, four waveforms
Hashreel
Perceptual video matching finds re-encoded, resized, and trimmed duplicates — not just exact file matches
Homewheel
Longbox Ledger
Track every comic issue you own — series, number, condition, price, and notes
PhotoGpsMap
RampCraft
Interactive Bezier speed-curve editor with draggable keyframes
ReelTessera
Drop a video — instant live preview
Scenecatch
Automatic scene-cut detection powered by on-device Vision
FrameFlux
Turn any video into smooth slow motion
VideoTimestampScrub
Hotkey mark — drop a pin like a lap timer while scrubbing
Cropless
Non-destructive batch fitting — every photo stays fully visible, never cropped
Focalsweep
On-device blur detection, no account or cloud needed
Scrubwave
Multi-factor activity heatmap — combines motion, audio level, face presence, and scene cuts into one timeline
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.