Intro
Spectasia is a macOS image viewer. Nothing more, nothing less.
Why?
There are a million image viewers out there. But finding one that fits my workflow? Impossible. They’re either bloated, overpriced, or—worst of all—subscription-based. I’m not paying a monthly rent just to look at my photos.
So I decided to build it myself. With the current state of AI coding tools, a solo dev in his 40s can actually pull this off without burning out. The goal is simple: fast browsing, zero fluff.
The Implementation
The plan is straightforward: point it at a directory, generate thumbnails for preview, and use the Apple Vision Framework for extracting tags and face recognition. Auto-generating albums based on tags or faces is the cherry on top.
I briefly considered adding post-export script execution, but that smells like feature creep. Does anyone actually need that? I’m sticking to the MVP. Essentials first, fancy stuff later (or never).
Tooling & Regrets
OpenAI offered a free month recently, so I’m squeezing every drop out of Codex. I started with z.ai’s GLM 4.7, but Codex is just faster and produces better results right now. I actually paid for an annual plan for z.ai’s coding Pro service, and I’m regretting it big time. It’s been painfully slow lately. That’s money I’m not getting back.
Swift & Xcode: A Love-Hate Relationship
I haven’t touched Swift since version 4. Now we’re on 6.2? The language has evolved, and the frameworks have shifted beneath my feet. My strategy is pragmatic: let the AI generate the bulk of the boilerplate implementation, and I’ll refactor and fix it piece by piece.
Starting without fully understanding the Swift Package Manager structure was a mistake. Xcode still doesn’t automatically pick up new files; you have to manually spoon-feed it. It’s frustrating when you’re used to modern frameworks where a simple config file handles everything. Xcode’s reliance on complex project settings (and those unique UUIDs in the project file) makes collaboration and git merges a nightmare. It feels archaic compared to the text-based config files we use everywhere else.
Distractions
In true indie hacker fashion, I got sidetracked. My current target is SyncWatcher, but I’ve been obsessing over this image viewer for days. 😅
I need to wrap this up—polish the design, squash the bugs, and get back to the main project. AI helps me move fast, but it doesn’t replace the manual labor required to ship a polished product.
Future
The LLM integration in the latest Xcode looks promising. Here’s hoping it makes our lives easier in the future.
Github Stars are appreciated. It feeds the dopamine.
Note: I’m a solo developer based in Korea. To share my journey with a wider audience, I used AI to help translate my thoughts into English. If any phrasing feels a bit “too AI” or unnatural, please bear with me—I’m spending most of my energy on the code!