Self-initiated · Product Design


Custard's Diary ——
Designing a zero friction
photo diary that updates itself

A solo-built product that turns daily iPhone photos into an automatically updated, shareable web calendar. Every design and technical decision was driven by one goal: zero friction from capture to sharing.
MY ROLE
TOOLS
STATUS
SCALE
Live · actively used
Hundreds of photos, growing daily
Lovable, Supabase, iOS Shortcuts
Solo designer + builder
The problem
I've lived with my cat Custard for 5 years now. Almost everyday, I took a few picture of him and it turns in to a huge album that contains thousands of photos. And sometimes, I wondered what did Custard look like a few years a ago today?

iOS Photos is built for browsing thousands of images. It isn't built for answering the question: "What was Custard doing on any specific day?
THE REAL GAP

I had hundreds of meaningful photos trapped in an app designed for everything — which meant it was genuinely optimized for nothing. Native Photos is a storage tool. What I needed was a diary: something that preserves chronology, surfaces memories by date, and stays shareable without re-sending files each time.

Core Insight

The key insight was distinguishing two different behaviors: capturing (which I was already doing every day) and retrieving + sharing (which required too much effort to be sustainable). The product needed to collapse the second behavior to near zero.

PRODUCT GOALS
What I was optimizing for
Three product goals shaped every design and technical decision:
01
Zero behavioral friction on capture

The product only works if it's consistently maintained. That means the upload experience can't rely on any action from me — it has to happen automatically.


02
Time-indexed browsing, not keyword search

I want to navigate by date — "show me February" — not search by tag or scroll through a feed. The mental model is a diary, not a gallery.


03
Always-shareable with a single link

One persistent URL, always up to date. No re-exporting, no attachment. Anyone can check in at any time.



DESIGN STRATEGY
Key Design Decisions

Calendar grid, not timeline,  not a pure feed

Considered: chronological timeline scroll · Instagram-style feed · traditional photo grid

WHY CALENDAR →

A linear timeline is space-inefficient. You scroll through empty stretches of time just to reach the next photo. A pure feed loses date awareness entirely: you can’t tell at a glance what month or day you’re looking at.

The calendar preserves time structure while remaining scannable. I kept the Instagram-style gallery within each dat, so you get the browsing experience of a feed once you drill in, but the navigation clarity of a calendar at the top level. Best of both formats.

FORMATTIME AWARENESSSPACE EFFICIENCYBROWSING UX
Timeline scrollHighLow — lots of empty spaceLinear, heavy scrolling
Instagram feedLow — dates buriedHighFamiliar, browsable
Calendar + gallery within date CHOSENHigh — month at a glanceHigh — variable card densityCalendar to navigate, feed to browse

② Variable card size based on photo density

Considered: uniform grid · size by importance · random masonry

WHY DENSITY-BASED SIZING →

Days with 8 photos get a larger card; days with 1 get a smaller one. This isn’t just a visual preference, it’s an information design decision. The size signals activity level before you read a single number. You can scan the calendar and immediately see “this was a busy week” vs. “quiet few days” without counting anything.

Days without photos stay visible as empty cells rather than disappearing — preserving the calendar’s time continuity while remaining visually quiet.

Auto-upload as core product behavior, not a feature

Considered: manual upload to web · iCloud share shortcut · batch export monthly

WHY AUTOMATION IS THE KEY UX DECISION →

A diary only works if it’s actually maintained. The hardest design problem I solved wasn’t on screen — it was removing the behavioral requirement entirely.

I built an iOS Shortcut that: filters photos from a dedicated album, converts them to web-optimized JPG, uploads to Supabase Storage, and organizes by date — automatically, every day. The user (me) never has to think about uploading. The product maintains itself.

Core Insight

The most important UX decision I made wasn't a screen design, it was the data pipeline. Designing for zero behavioral friction meant designing the invisible infrastructure, not just the interface.

SYSTEM DESIGN
How the system work
The product is a two-layer system: a passive data pipeline that runs in the background, and a calendar interface that surfaces the result.
The iOS Shortcut is triggered daily and handles format conversion (HEIC → JPG) and folder organization automatically. Supabase manages both storage and the database, keeping the architecture simple and the cost at zero for personal scale.
OUTCOME
What it delivers
1000+
Photos organized and accessible

Growing daily since launch

0
Manual steps to maintain

Shortcut runs automatically

1
Link to share, always up to date

No re-exporting needed


Currently, the product has a few users including me and my parents since launch. No maintenance reminders, no backlog of unuploaded photos. The pipeline design decision is the reason this works: every other format I considered would have required occasional manual work, which I know from experience I wouldn't sustain.

WHAT I LEARNED
Shipping a product end-to-end


This project pushed me past interface design into systems thinking — how data moves, how authentication works, how different components of a product interact. Building something I actually use every day made the UX stakes real in a way that design exercises don't.
The most transferable insight:

"Great UX isn't only about beautiful screens — it's about designing the invisible infrastructure that makes behavior effortless. The hardest and most important design decision I made here wasn't visible in any mockup."


Working with Lovable also shaped how I think about the design–engineering boundary. Describing the product in precise enough terms for the AI to implement it correctly forced me to think more rigorously about interaction states, data models, and edge cases than a typical design handoff would. This project pushed me past interface design into systems thinking: how data moves, how authentication works, how different components of a product interact. Building something I actually use every day made the UX stakes real in a way that design exercises don't.