All work

Web App

Blooms of Japan

A month-by-month guide to where and when flowers bloom in Japan: cherry and plum blossom, wisteria, hydrangea, autumn leaves and more, across 412 spots. It started as Find Hanami, a three-week mobile prototype, and grew into a production site with 459 indexable pages, its own build pipeline and live weather on every spot.

Blooms of Japan cover
RoleDesigner & Developer
StackHTML, CSS, JavaScript, Node.js
HostingVercel
ToolsClaude Code

The problem

Most travel content treats Japan's flowers as one event: cherry blossom, three weeks in spring. Planning around anything else means:

  • Bloom dates scattered across local tourism sites, many only in Japanese
  • No single place to see what is in bloom in a given month, or where
  • Spot pages that say when to go but not how to get there
  • Listicles that can't be filtered by month, flower or region

October calendar view with a map of Japan marking the 35 spots at their peak

What I built

  • A seasonal homepage whose illustration and copy follow the current season
  • A calendar that steps through the year month by month, with every peaking spot plotted on a map of Japan
  • 412 spot pages with peak window, access directions, photo gallery and a live five-day forecast
  • 26 flower pages and 12 month pages, so every way someone searches has its own landing page
  • A responsive layout that works as well on a phone as on a desktop

Engineering decisions

  • Plain HTML, CSS and JavaScript with no framework. The content is a dataset, not an app, so a static build keeps it fast and cheap to host
  • A Node.js build pipeline turns one spot list into every page, then pre-renders each one in headless Chrome so search engines get finished HTML
  • Real URLs (/spots, /flowers, /when) replaced the original hash routes, with old links redirected in the page so nothing broke
  • 52 permanent redirects for spots that were merged or renamed, keeping every previously shared link alive
  • Weather comes from the Open-Meteo API at view time, so forecasts are always current without a backend or API key

Spot page for Kawachi Wisteria Garden with best time to go and a live weather forecast

Built to be found

A travel guide only works if people find it from search, so SEO was part of the build, not an afterthought:

  • Every page has its own title, description, canonical URL and social image
  • schema.org structured data on every page
  • A generated sitemap of 459 URLs, referenced from robots.txt
  • Lighthouse SEO score of 100 on every page tested, with accessibility between 90 and 94

On mobile


From prototype to production

  • Find Hanami proved the idea in three weeks on a no-code builder
  • Blooms of Japan rebuilt it from scratch so I owned the code, the URLs and the hosting
  • The spot list grew to 412 locations, each with sourced photos

Content and licensing

  • Every photo comes from Wikimedia Commons under CC BY, BY-SA or CC0
  • Each spot credits its photographer and license under the image
  • Japanese names shown alongside English so visitors can match signs on the ground