A tear-off calendar that stays with you
// Build Note
Anew is a daily tear-off calendar for iPhone. Every morning, today arrives as a fresh page with the date, sunrise and sunset, the moon phase, and two small auspices: one favorable and one to avoid. The page is yours to mark.
Timeline
2 months, including my first App Store review
Stack
SwiftUI · Metal · WidgetKit · Claude Code · Codex
Status
Live, with Puff printing next year’s stack
Where it started
I grew up with tear-off calendars and Japanese stationery in Taiwan. Every morning you tore off yesterday's page and saw the new date. The torn pages were yours to use however you wanted. My mom wrapped my bento in them, and my dad taught me math formulas on the back. They were useful without telling you what they were for.
Those rituals gave me a stable beginning, a small signal that we were entering a different mode. For people who've left home to build a life elsewhere, objects like that bring a lot back.
Life is full of repeated transitions and too many small choices. I wanted a daily ritual that steadies you without turning into a performance metric, one that can be small, flexible, occasionally skipped, and never punishes you for missing a day.
Something quieter than a productivity app and more alive than a static date widget.

What it became
Anew’s page borrows from that world. It combines Japanese and Taiwanese calendar details with sunrise and sunset, the moon phase, and small diagrams of the solar system and of the Sun, Earth, and Moon.
A setting switches between Japanese and Taiwanese styles: in Japanese, the page shows the traditional month name and the day’s 六曜 ろくよう label; in Taiwanese, it shows the lunar date in the same place.
Two small auspices sit in the spirit of the almanacs I remember, and each stays sealed until local sunrise. The rest of the page is yours to mark with a mood seal, one line, or a sticker cut from your own photo. Then tear it off, flip it over, or leave it where it is.
Torn pages go to a back room run by Puff, the app’s mascot.
The judgment calls
Most of these started with an easy answer on the table.
#1
Choosing feel over the default
The page curl is the heart of the app, so tearing off a page had to feel like a ritual. When I asked Claude how to build a page flip, it suggested Apple’s built-in curl. It worked, but it felt stiff: the shadow was too heavy, the paper texture disappeared, and I had no control over the transition from the flip to the tear.
So I moved to custom Metal rendering and built the gesture from scratch with the agents: the timing, the curl physics, the tear, and the page falling away. It was a long run of trial and error. They’d get the curl angle right, then break the tear or add the wrong kind of page transform.
More than once, when we were stuck on a bug, they suggested going back to Apple’s curl. I kept going. A curl is a gesture, something you have to feel, and the agents couldn’t feel it for me. I tested it by hand, again and again, until it felt right. There was no shortcut through that part.
#2
Giving the app a voice
The favorable and avoid lines are the voice of the app, so I didn’t want them to sound generic. I set up rules so the lines could loosely follow the day’s 六曜 ろくよう, but wanted the writing to feel like an almanac mixed with modern wisdom.
I wrote the first examples myself, then had Claude and Codex generate more in that voice. I went through them one line at a time and decided what stayed. Most of what I rejected was too abstract, too literal, or too repetitive.
#3
Real data, drawn calmly
The solar system diagram on each page is based on real planetary positions, but I didn’t want a scientific chart. I knew how it should look: equal orbit spacing, clean circles, minimal dots, a calm composition.
What I needed help with was where the data would come from. Claude laid out the options: use third-party data or calculate the positions myself. I chose to calculate.
The diagram uses calculated positions within a deliberately simplified layout. It all runs on the device, with no astronomy service and no third-party packages.
#4
Binding the year
Most calendar apps let you scroll forever. A physical calendar doesn’t. It’s bound by year. You own the stack you were handed, and next year’s pages haven’t dried yet.
So I bound Anew by year too.
You can flip through the whole stack. Future pages show the fixed almanac facts, but each day’s auspices stay sealed until local sunrise, when they print onto the page.
Flip to the end of the year, and you’ll find Puff printing the next stack.
#5
Taking things out
The easy move was to keep what had been built or suggested. More than once, I didn’t.
① The agents' default
When I described a daily ritual, the agents heard calendar, journal, and ritual, and went straight to familiar productivity features: a to-do list, a full journaling flow, a habit tracker.
What I wanted to build wasn’t a task list, and I didn’t want it to ask you to improve yourself. So I kept steering the agents back.
Some of that was on me too. A casual conversation could quietly grow into a feature I didn’t need. At one point, I had built full-page journaling, with entries saved into separate books. I later removed it to keep anew focused.
② Missed days and torn pages
A real calendar piles up untorn pages when you’re away. Copied literally, that could make coming back feel like a punishment, the opposite of what I wanted. I prototyped three versions.
Early versions had a Keep or Discard setting, plus a choice after time away: tear the missed pages yourself or have the app clear them.
Then came “marking is keeping.” A blank day would fall away, while a marked day would turn over into the journal. It was tidy, but it meant I was deciding that a blank day was worth less.
A physical calendar was never that strict. You could leave a page up, mark what was true that day, and flip it over or tear it off.
So I went with the simplest option, the one that leaves the decision to the person holding the page: mark it or leave it blank, tear it or flip it. Nothing is lost by accident. If you tear off a page and regret it, Puff keeps it in a back room for 30 days, and you can restore it.
anew gives each day a page. What happens to it is yours.
Process
Trying tools and workflows as I go
I worked with Claude and Codex throughout, switching between them as the build progressed. I started with design files to lock the layout and visuals because I knew exactly what I wanted.
Over the build, I tried different ways of moving between design and code. Two I remember best:
Early on:
Design in Figma → Pencil and Codex for screen variations → Claude turns the final layouts into SwiftUI
Later:
Design in Paper → Claude Code reads and writes directly on the canvas over MCP
Different problems in the same app pushed me toward different workflows. Exploring which approach suits which kind of work has become one of my favorite parts of building.
