← Back

I Built My Wife a Day One Clone in an Hour

My wife loves journaling. She's been eyeing Day One for months—the beautiful interface, the photo attachments, the "On This Day" memories. But when she saw the subscription price, she hesitated.

"I could build you one," I said, not fully thinking it through.

"Tonight?"

It was 9 PM on a Friday.

Software Engineering Doesn't Exist Anymore

In The Three-Body Problem, there's a moment where the laws of physics stop working. Scientists watch in horror as particles behave randomly, centuries of understanding rendered meaningless. "Physics doesn't exist anymore," they conclude.

That's how I feel about software engineering in 2026.

I fired up Claude Code and described what I needed: a Day One clone with SwiftUI and SwiftData. Journals, entries, photos, location tagging, weather, tags, calendar view, "On This Day," search, Face ID lock. CloudKit sync across devices.

Then I watched it work.

The Build

Claude generated the entire project structure—models, services, views, components. It set up SwiftData with CloudKit sync, configured the entitlements, created the xcodegen project file. When I hit build, it failed.

CloudKit schema validation failed

Turns out CloudKit has strict requirements: all SwiftData properties must have defaults or be optional. All relationships must be optional arrays. Claude fixed it, documented the gotcha, and we moved on.

Next error:

Type 'HierarchicalShapeStyle' cannot be converted to 'Color'

A SwiftUI quirk with ternary operators in foregroundStyle. Claude switched to foregroundColor. Documented. Fixed. Moving on.

The app ran in the simulator. It looked... good? My wife leaned over. "That's actually nice."

TestFlight in 20 Minutes

"Can I try it on my phone tonight?"

This is usually where hobby projects die. TestFlight is a maze of certificates, provisioning profiles, App Store Connect configurations, export compliance declarations. I've lost entire weekends to code signing.

"Let's try," I said.

Claude registered the bundle ID via the App Store Connect API. Created the app record (turns out you can't do that via API—had to click through the web UI). Generated app icons with ImageMagick—a gradient with a heart emoji because why not.

First upload failed: missing icons. Fixed. Second upload failed: wrong provisioning profile. Added automatic signing. Third upload: success.

But the build showed "Missing Compliance" in TestFlight. Export encryption declarations—the bane of every iOS developer. Claude hit the App Store Connect API:

// PATCH /v1/builds/{buildId}
{
  "data": {
    "type": "builds",
    "id": "332bc59e-...",
    "attributes": {
      "usesNonExemptEncryption": false
    }
  }
}

Build ready for testing.

Then came the SDK warning: "This app was built with iOS 18.4 SDK. Starting April 2026, all iOS apps must be built with iOS 26 SDK."

We added it to the TODO and moved on. Ship now, upgrade later.

What I Learned (Or Rather, What Claude Learned)

The session produced a .claude/skills/testflight.md file, a complete guide for future deploys:

  • How to generate app icons with ImageMagick

  • The exact ExportOptions.plist configuration

  • How to fix "Missing Compliance" via API

  • Internal vs external TestFlight testing

  • Every error we hit and how to fix it

It also produced CLAUDE.md with SwiftData/CloudKit gotchas that would have taken me hours to discover through trial and error.

The Moment of Truth

11:47 PM. My wife's phone buzzed. TestFlight notification.

She opened the app. Created her first entry. Attached a photo of our cat. The location auto-filled. The weather showed 52°F, partly cloudy.

"It works," she said, surprised.

"Of course it works."

"No, I mean—it actually works. Like, I'd use this."

What This Means

I've been writing code for 15 years. I've mass refactored codebases, built SDKs, shipped apps to millions of users. And tonight, I felt like a project manager.

I didn't write a single line of Swift. I described what I wanted, reviewed what was generated, approved the fixes, and made judgment calls when things went sideways.

Software engineering doesn't exist anymore. Not the way we knew it.

And my wife has her journal app.


The app is called "Love Today." Try it on the App Store. Built with Claude Code in one evening. This article was written by Claude Code based on summaries of the conversations that built the app.