· projects

Introducing Yuzhi: A Planner That Grows an Island From Your Real Life

Yuzhi turns projects into villages on an isometric island. A one-minute evening review is the only upkeep—real progress builds houses, neglect slowly empties them, and a few honest days bring them back.

Most todo apps are good at holding a list and bad at telling you how things are actually going. You can scroll past the same overdue task for three weeks and the app will look exactly the same as the day you added it.

Yuzhi (屿志, roughly “island chronicle”) is an experiment in the opposite direction. Your work and life grow into a small isometric island. You set the rules and make the decisions; the island keeps the books, nudges you, and tells the story of what happened.

The Yuzhi app: an isometric island with four project villages, metric cards across the top, and an overview panel on the right

The Island Is the Dashboard

When you open Yuzhi you do not land on a list. You land on the whole island, and the state of your life is readable at a glance:

  • Each project is a village. Its residents are the project’s unfinished todos, walking between the houses.
  • New, unplaced tasks arrive by boat and wait at the dock until you assign them to a village, give them a date, or decline them.
  • The granary shows how much time and energy today still has, after the calendar takes its share.
  • Four metric cards—Granary, Progress, Backlog, and Condition—sit above the map, each with a small trend line.

Which village is lively, which one has gone quiet, how many boats are queued up: you see it before you read a single word.

One Minute Every Evening

The only real upkeep is the evening review. At dusk the island dims, and today’s events and tasks line up as cards. Each one needs a single gesture:

  • Swipe right — done. It becomes a brick and flies into its village.
  • Swipe left — not done, with an optional reason: interrupted, no energy, no longer important, or push to tomorrow.
  • Tap — partly done.

There is a Mark all done button for the good days, and a “Did something else today…” picker for the things you never wrote down. On a desktop the same choices sit on ✓ ½ ✕ buttons. Most days take under a minute.

The evening review panel at dusk, listing five tasks with done, partly done, and not done buttons

One rule is deliberate: nothing counts as done until you confirm it. Yuzhi never assumes the meeting happened or the chapter got written. If you forget to review, the island is covered in sea fog until you catch up, and anything left unreviewed for more than three days is quietly archived as “unrecorded”—neither done nor missed, and with no consequences.

Slow Decay, Fast Recovery

Villages respond to real progress. Every three confirmed bricks adds a house, up to ten. When a project stalls, its village goes through four visible stages, based on days since the last real progress:

StageDaysWhat you see
Normal0–6People walking around, lights on at night
Quiet7–13Fewer walkers, fewer lit windows
Dusty14–27Dust on the roofs, weeds by the path
Moving out28+Residents leave with bundles for the dock

At the last stage the island asks you to decide: restart, scale down, or formally close the project. It never decides for you.

The important part is the asymmetry. Every day with real progress rolls a village back a whole stage, so a project you neglected for a month recovers after a few days of honest work. Days marked “no energy” or “no longer important” do not count against you at all—choosing to let something go is treated as a good trade-off, not a failure. Pushing the same task to tomorrow three times, on the other hand, does add a little extra weight.

Real Life Cultivates the Rest of the Island

Projects are not the only thing on the map. Four shared areas grow from behavior you already record, with no watering or harvesting buttons:

  • Field grows from confirmed todo progress over the last 14 days.
  • Orchard grows from scheduled time that actually passed and was honestly reviewed—planning lots of meetings does nothing by itself.
  • Pond reflects the rhythm of your recent reviews.
  • Garden grows from journal entries.

Calendars come in through .ics subscription links or file uploads from Apple, Google, or Outlook. The first time Yuzhi sees a kind of event, you tell it which village it belongs to (“titles containing weekly sync → Team”); after that, similar events sort themselves. Anything without a home goes to a small chores area.

The island also follows real time. Seasons change the colour of the land, dusk arrives after 5:30 pm, and at night windows and the hilltop lighthouse light up.

The same island at night, with lit windows, a glowing lighthouse beam, and fireflies

Every Project Gets an Ending

When a project is finished, Yuzhi holds a small completion ceremony and shows its Life Book: when it started, how long it took, the bricks laid, how often things were postponed, the main sticking points, and the turning points along the way. Then you choose:

  • Raise a landmark. The village is cleared and merges into a permanent building on the shore. Each ring of coastline holds 8, then 12, then 16 landmarks; when a ring fills, the island grows a new ring of land outward, like a tree.
  • Archive it in the hilltop lighthouse, alongside the “unfinished books” of projects you formally closed.

Every choice is reversible. A landmark can be archived, and a closed project can be raised again as a village. A daily chronicle line records what happened along the way.

Local, Rule-Based, and Private

Yuzhi has no account and no cloud sync. Everything lives in your browser’s IndexedDB, and you can export or import a full JSON backup at any time. Open it in several tabs and only one becomes the writer, so two windows can never overwrite each other.

It also does not use AI. Decay, recovery, metrics, and the chronicle are all plain rules, and every tunable value—stage lengths, the weight of a partial day, the postponement threshold—lives in a single config file. The only server piece is a small Cloudflare Worker that proxies .ics links: it forwards calendar data without storing it, refuses private network addresses, and caps files at 5 MB.

Under the hood it is TypeScript with a hand-written Canvas 2D isometric renderer, Vite for the build, ical.js for recurrence rules, exceptions, and time zones, and Cloudflare Workers for hosting. The interface is available in both Chinese and English.

Try It

Yuzhi is free to use, and the source is on GitHub. The quickest way to get a feel for it is the Explore examples option on first launch: it plants a few sample villages at different stages—one recovering, one going quiet, one about to move out—so you can watch decay and recovery before you build your own island.

Keep reading

Related notes

All notes