Building Gamelog
Gamelog is an iPhone app for keeping track of the games I play. It holds my ratings, notes, where and when I played, a wishlist, and patch notes for my Steam games. A small green ! on a cover tells me a game has been updated since I last played it.
I built it in about a day with Claude doing the programming. I know some Python and bash, but not Swift, so my job was deciding what the app should do, testing it, and saying when something felt wrong. Claude wrote the code, explained the parts I didn’t understand, and pushed back when my first idea wasn’t the best one.
Starting with a scope, not code
My first message listed everything I wanted: look up a game on Steam and pull its cover art, write notes, rate it out of 10, mark it as “want to play again” or “done for now,” share it with a friend, add non-Steam games by hand, and show patch notes with an update indicator I could mute. I finished by asking Claude to scope it out and come back with ideas before building anything.
That turned out to be the most useful thing I asked for. Before answering, Claude tested the Steam endpoints live, so its plan was based on what Steam actually returned rather than what it remembered. A few findings shaped the whole project:
- Search, cover art, and news are public. No key or account needed.
- Patch notes are inconsistent. Developers choose whether to tag a news post as patch notes. Some big releases weren’t tagged, so the app also has to recognize titles that look like updates.
- Steam doesn’t offer normal app sign-in. “Sign in through Steam” proves which account is yours, but it doesn’t grant access to your library. That needs a Steam Web API key, and Valve requires the key to stay secret.
Claude recommended starting without any Steam account link and designing the code so sign-in could be added later. I agreed. It’s the same instinct I’d want on a support case: understand what the system really does before committing to a fix.
The first version
The first working build could search Steam by name and fill in the cover automatically. It had half-star ratings, statuses like Playing, Finished, and Dropped, play sessions with a platform and date, notes, and a share option that sends a card image with a Steam link. Settings covered light and dark themes, cover sizes, and exporting your history as a JSON file.
From there, most changes came from using it. Dark mode should be dark gray, not pure black. Switching themes should fade instead of snapping. A new game shouldn’t get a made-up play date, and I should be able to enter just a year when I don’t remember the day. I wanted a wishlist, and a way to long-press and delete several games at once.
The icon took a few rounds. Claude drew a first version, I sketched something closer to what I pictured, and we went from a warm clay color to the cobalt blue it has now. The icon is drawn by a small Swift script, so recoloring it meant changing a few values in code rather than redrawing it. The app’s accent color changed to match.
Then came patch notes. Each Steam game’s page now ends with its recent update posts, cleaned up and shortened with a Show More button. The green ! appears when a game has an update newer than your last play. Wishlist and Dropped games never show it, and you can mute it per game or for everything.
The Steam problem
Importing my Steam library was the feature I cared about most, and the one I understood least. When Claude said it needed an API key, I asked the question I’d want answered for any future user: if someone downloads this from the App Store, do they have to set anything up? I didn’t want them doing anything more complicated than signing in to Steam.
The answer was a small server that sits between the app and Steam. The phone never holds the key. Instead:
- You sign in on Steam’s own website, so Gamelog never sees your password.
- Steam tells the server your public Steam ID, and the server gives your phone a sign-in token.
- When you import, the server asks Steam for your games and play time and passes the list back.
The server runs on Cloudflare Workers and has no database. It answers the request and keeps nothing.
Setting it up was the most hands-on part for me. Steam wanted a Steam Guard confirmation before issuing the key, and the prompt never appeared on my phone no matter which browser I tried. The simulator wouldn’t let me scroll to the Sign in button, so I scanned the QR code with my phone instead. Getting the app onto my actual iPhone meant learning where Xcode keeps signing settings and approving trust prompts on both devices. None of it was hard once explained, but I wouldn’t have known where to start alone.
Once it worked, I imported my whole Steam library on my phone. Each game came in with a status based on its play time, a PC play session dated from Steam’s last-played time, its cover, and its patch notes.
Where support experience helped
At one point I tapped + to import from Steam and couldn’t find it. The option lived in Settings. I knew where it was because I’d asked for it, and I still went to the wrong place. If I did that, other people would too, so Steam import became the first option under +.
That kind of observation is most of what I brought. I’ve spent years watching people use software in ways the builders didn’t expect. Describing a symptom clearly, attaching a screenshot, and saying what I expected versus what happened worked just as well with Claude as with a development team.
Claude’s updates read like good escalation notes, too. It said what it tested, what it didn’t, and what it suspected. After adding patch notes, it mentioned that a Settings switch didn’t respond to taps in the simulator, guessed it was a simulator quirk, and asked me to check it on my phone. I trust that kind of report more than a confident “all done.”
What’s next
The app was called Playlog until I checked the App Store and found the name taken. Gamelog was available. It now has a page on this site with a privacy policy and support FAQ, and I’ve enrolled in the Apple Developer Program. Next is TestFlight, so a few friends can try it, and then the App Store.
Update, September 27, 2026: Gamelog is now in beta on TestFlight. If you’d like to try it, email zachvivierdev@gmail.com. The Gamelog page has the details.
Update, October 3, 2026: The icon changed once more after this post. It’s now a chopped wooden log with a play-button hole in its side. Gamelog has also gained a scratchpad, where I can type or draw quick notes and save them to a game.
Gamelog started as something I wanted for myself. It also showed me that the gap between having an idea and having a working app is smaller than I thought, as long as I stay clear about what I want and keep testing what I get.