Projects/1day Journal

1day Journal

One-tap daily journal. Capture the day in Win · Tension · Gratitude.

Started working on a simple app to record Win. Tension. Gratitude. I do this via pen and paper and always wanted a simple app that captures the same thing on my phone.

One sentence per day removes the friction. The constraint is the product.


Screens
1day Journal screenshot 1
1day Journal screenshot 2
1day Journal screenshot 3
1day Journal screenshot 4
1day Journal screenshot 5
1day Journal screenshot 6

Changelog
App Store review candidate. Added privacy manifests, screenshot assets, submission metadata, support and privacy URLs, and uploaded the archive after resolving App Store Connect account contracts.
Build 7. iCloud sync across devices, daily reminders, custom prompts, new "Win · Tension · Gratitude" prompt set, redesigned radial timer control.
Build 6. Streak counter, calendar entry dots, double-tap to edit, smoother saved indicator, auto-resume incomplete entries.

Notes & learnings

Project journal

May 1, 2026 · Shipping 1day Journal

I just got 1day Journal ready for App Store review.

1day is a small iOS app for daily reflection. The core interaction is intentionally narrow: open the app, answer a few prompts, and move on with the day. No feed, no social layer, no complicated dashboard. The product is basically a quiet writing surface with enough structure to make starting easy.

What it does

The current build includes the parts I wanted for a real first release:

  • A focused writing flow that shows one prompt at a time.
  • Prompt sets like Win · Tension · Gratitude.
  • Calendar and search for past entries.
  • Local persistence with optional iCloud sync.
  • PIN and Face ID protection.
  • Daily reminders.
  • Home screen widgets.
  • Ambient sounds and gentle timers.
  • Export to JSON, PDF, and plain text.
  • Dark mode.

The app started as a simple journaling prototype, but the release version became a full small-product exercise: persistence, privacy, widgets, iCloud, app metadata, screenshots, App Store review requirements, and all the little submission details that only show up once you are actually trying to ship.

The stack

The app is built with SwiftUI and SwiftData. XcodeGen generates the Xcode project from project.yml, which keeps project configuration reviewable instead of burying every change inside the Xcode UI.

The app uses:

  • SwiftUI for the interface.
  • SwiftData for entries.
  • CloudKit-backed iCloud sync when enabled.
  • WidgetKit for home screen widgets.
  • AVFoundation for ambient sounds.
  • LocalAuthentication for Face ID and Touch ID.
  • XcodeGen for project generation.

I also added a small gated screenshot harness for App Store assets. It launches real app views with seeded sample data when a screenshot-only environment variable is set. That made the screenshots repeatable without adding fake paths to the normal app flow.

App Store prep was its own feature

Getting the app ready for review was more than pressing Archive.

I had to add privacy manifests, verify export compliance, generate the Xcode project, build for simulator, archive for iOS, and upload to App Store Connect. The first upload attempt failed because Apple had account contracts waiting to be accepted. Once those were accepted, the archive uploaded and started processing.

The metadata pass had its own checklist:

  • App description.
  • Promotional text.
  • Keywords.
  • Support URL.
  • Privacy policy URL.
  • Category.
  • Age rating.
  • Content rights.
  • Pricing and availability.
  • Review contact information.

I created static support and privacy pages in the repo so the App Store listing has stable public URLs. I also wrote a submission copy file with all the fields I needed to paste into App Store Connect.

The screenshot gotcha

One annoying detail: screenshots from current simulators are not always dimensions App Store Connect accepts for a given upload slot.

The raw iPhone 17 Pro Max screenshots came out as 1320x2868. App Store Connect wanted one of:

  • 1242x2688
  • 2688x1242
  • 1284x2778
  • 2778x1284

So I generated upload-ready copies at 1284x2778 from the captured screenshots and kept the originals as reference assets. This is exactly the kind of thing that feels trivial until it blocks the submit button.

What I like about this release

The app does not try to solve journaling as a giant system. It tries to make one daily reflection easier to start and easier to keep private.

That constraint made a lot of product decisions clearer. The writing screen is quiet. The prompts are simple. The calendar exists so entries can be revisited, not so the app can become an analytics dashboard. The privacy posture is straightforward: entries live on the device, and iCloud sync uses the user's Apple account if they turn it on.

What I would improve next

There are a few things I would like to keep improving after review:

  • Make the onboarding screenshots and App Store page feel more polished.
  • Add a small public landing page for 1day instead of only support and privacy pages.
  • Revisit the iPad layout so it feels designed for the larger canvas, not just compatible with it.
  • Keep the export flow simple, but make the output prettier.
  • Tighten the first-run experience after more real use.

For now, the important milestone is that 1day Journal has crossed from "project" into "submitted product."

That is always a different kind of finish line.

January 21, 2026 · The app became a product

The earlier milestone was the point where 1day stopped feeling like a thin prototype and started behaving like an app I could actually use every day.

Build 7 added iCloud sync across devices, daily reminders, custom prompts, the Win · Tension · Gratitude prompt set, and a redesigned radial timer control. Those changes mattered because they moved the app beyond the writing surface itself. The product now had memory, rhythm, and a small amount of personal fit.

Build 6 set up the foundation right before that: a streak counter, calendar entry dots, double-tap editing, a smoother saved indicator, and auto-resume for incomplete entries. None of those are giant features on their own. Together, they made the app feel less fragile.

That version was useful because it made progress visible. The calendar showed that entries were accumulating. The streak made daily use legible. Auto-resume made it safer to start even if I only had a minute.

The learning from that phase was simple: for a journaling app, reliability is part of the emotional design. A quiet interface is not enough if the app forgets where you were, makes past entries hard to find, or creates doubt about whether the writing was saved.