← Carl Fan

Gensō Field Atlas

I defined the product and built the data pipeline and the app.

A searchable map that connects characters from the Touhou Project games to real places. Each connection says how strong its evidence is and keeps its source beside it.

The stack is a Python pipeline over versioned source datasets, an interface in Next.js, React and MapLibre, and hosting on Cloudflare Workers and D1.

One record

  1. 资料明确提到stated in a source本居宣长旧宅(铃屋)Motoori Norinaga’s former residence, known as Suzuya
  2. 编者归纳editor’s inference本居庵Motoori-an
Two of Kosuzu Motoori’s places, with their grades.1

Among Kosuzu Motoori’s places in the atlas, the former residence of the scholar Motoori Norinaga, known as Suzuya, is graded 资料明确提到: the connection is stated in a source2. Motoori-an is graded 编者归纳: it is the editor’s inference, and the record says so.

Every place has a stable ID and a version history: Suzuya is always p-8564309b94853. Correcting its label updates that record instead of quietly creating a second place.

What the public sees

Public pages and exports read from an explicit view of the fields meant for visitors. Working source material stays out of the client bundle, and one release step checks the audits, the build and the packaged output before anything is published.

The location rules are written down for visitors4. Distances are straight-line estimates, only for judging near and far. “Use my location” needs the browser’s permission, and the coordinates stay in the current session: they are not written into the URL or uploaded. A point picked on the map does go into the URL, and a shared link carries it. Place search is provided by Google Places; the search text goes to Google, and nearby ranking uses a map position coarsened to about a kilometre.