Product note

Why Walking Story saves locally first

The moment you want to keep rarely waits for a signal

Walking Story is built for walks — parks, city blocks, trails, school runs, evening loops around the neighborhood. Those moments come with wind, uneven footing, and phone reception that drops under bridges or between buildings. If saving a photo or voice memo waited for a perfect network handshake, the product would fight the experience it is meant to protect.

That is why we treat local-first capture as a hard rule, not a nice-to-have. Photos, voice clips, and text memos should land on the device first. Cloud sync, transcription, Drive upload, place-name lookup, and other remote work happen afterward in the background. The walker gets control back as soon as the local save succeeds.

Walking Story is still in development. The principles below describe how we are building the capture path and what you should expect from a local-first journaling app as features land. We would rather be honest about status than invent a finished product story.

What “local-first” means in practice

Local-first does not mean “offline forever” or “never sync.” It means the source of truth for a fresh capture is the phone (or tablet) in your hand. Sync is an enhancement that can lag, fail, or retry without erasing what you already saved.

A typical capture sequence

  1. You take a photo, record a short voice note, or type a memo during the walk.
  2. The app writes that item to local storage (for example Drift / on-device files) with a clear “saved locally” state — often with sync: false or an equivalent flag.
  3. The UI returns to a ready state immediately. No long “저장 중…” / “Saving…” spinner waiting on Firebase, Drive, geocoding, or speech-to-text.
  4. Background jobs attempt upload, transcription, or place naming with timeouts. Failures are logged and retried later; they must not freeze the capture screen.

GPS for attaching place metadata should use short timeouts (about two seconds) or a last-known fix. Locking the walker into a multi-second location hunt before they can finish saving is a bug, not a feature.

Why blocking save on the network feels broken

Many cloud-first apps assume every write is a remote write. That model works at a desk. On a walk it creates familiar failure modes:

  • False urgency. A spinner implies nothing is saved until the network answers — even when the bytes already exist on disk.
  • Lost moments. People cancel or abandon captures when a tunnel or subway station breaks the upload mid-flight.
  • Anxiety loops. “Did it save?” becomes more memorable than the place itself.
  • Battery and heat. Holding radios open for long uploads while you keep walking drains the device that is supposed to stay out of the way.

Local-first flips the emotional contract: once the phone confirms a local write, you can put it away. Sync can catch up when you sit down with Wi‑Fi.

What still happens in the cloud (when it should)

Local-first is compatible with sharing and backup. Walking Story’s longer-term surface includes personal stories and a public blog-style home for published walks — for example a handle-based index such as …/walkingstory/{userHandle} — not only one-off share links. Those surfaces need remote storage. The distinction is timing and dependency:

  • Capture UX must not await remote success.
  • Publish / share UX can require a network path, because publishing is inherently a remote act.
  • Background sync should be unawaited from the capture screen, with clear later status if something could not upload.

Until those publish flows are finished, treat cloud features as evolving. The invariant we refuse to compromise on during development is: capture stays usable when the network is flaky.

Design implications for walkers

Honest status

Local-first apps should show sync state without shame. “Saved on this device” and “waiting to sync” are useful truths. Hiding sync debt behind a forever-spinner trains people to distrust the product.

Small captures beat perfect posts

A walk accumulates many small artifacts — three photos, one voice memo, two short texts. Each should be cheap to commit. If every item required a multi-step cloud pipeline before the next shutter press, the journal becomes a desk product wearing a walk costume.

Privacy boundary

Keeping drafts local by default also gives you a clearer privacy story: what stays on the device until you choose to publish is easier to reason about than “everything already left for a server.” Product pages and legal docs will spell out the exact retention model as features mature.

How this fits Zetty Factory’s product style

WaveLog and PodWave are listening tools. iRing is a family planner. Walking Story is a capture-and-story tool for being outside. Different jobs, shared studio bias: ship focused surfaces, respect the context of use, and improve from real friction.

Local-first capture is the walking equivalent of “don’t make the radio wait for an account” or “don’t make the school week live in six chat threads.” The constraint is the same: remove fake dependencies between the human moment and the infrastructure.

What to expect while the app is in development

Features, platforms, and sync backends can still change. You may see placeholders, limited share flows, or incomplete cloud mirrors. What should not change is the priority order when you tap save on a walk:

  1. Persist locally and confirm quickly.
  2. Return control to the walker.
  3. Sync and enrich in the background with timeouts.
  4. Never freeze capture UI on remote failure.

If you are following Walking Story from the product page, treat this journal note as the design contract behind the “in development” badge — and as a reminder that good walk tools earn trust by getting out of the way when the light is good and the signal is not.