← All projects

Native coffee journal

Naerim · 내림

Remember what made this cup worth making again.

A native coffee journal for recording brews, keeping recipes, and comparing the conditions behind each cup. I built and released the app for iPhone and iPad, with Korean, English, and Japanese localization.

My role
Independent planning, design, development, and release
Core stack
  • Swift
  • SwiftUI
  • SwiftData
  • WidgetKit

How it fits together

Engineering details reflect source reviewed on September 17, 2026. App Store releases may contain an earlier subset.

  1. 01SwiftUI · editable value drafts
  2. 02Session coordinator · repositories
  3. 03SwiftData · JSON checkpoints

The interface edits value types. Repositories own persistence, while a shared coordinator manages an active or unsaved brew across app windows.

Decisions behind the interface

01

Keep the past independent of the catalog

A brew captures its recipe and equipment values as a historical snapshot. Editing or deleting catalog entries does not redefine the conditions of an earlier cup.

02

Recover unfinished work

A monotonic clock tracks elapsed time and atomic JSON checkpoints support relaunch recovery. Saving a result and removing its checkpoint are reconciled so a retry can recognize an already stored brew.

03

Validate before replacing the draft

Recipe scaling checks overflow, non-finite values, and rounding residuals before producing a replacement. A failed adjustment preserves the original draft. This case is available as a standalone Swift package.

Naerim · 내림

How I used AI

I used Codex for bounded development tasks. For the brew-entry refinement, I requested a simpler flow based on individually selected measurements. The implementation preserved missing values, target versus actual water amounts, and the separation between new drafts and previous results.

I define product behavior, choose which changes to accept, and own release decisions. Builds, XCTest results, UI checks, and source snapshots document what was verified. Brewing and comparison use native Swift data and calculation logic.

Code and verification

The public recipe-validation package has 14 passing tests, including 324 deterministic ratio-and-target combinations, and a successful GitHub Actions run. The full app’s separate, dated verification is documented in its technical overview.

More work