This is the first entry in a log of what I build and run on my own. It covers one evening — from 5:22 pm on October 18, 2026 to 0:50 am the next day — spent reworking six websites that live in a single repository (a monorepo).
The evening in numbers
Measured from the git history.
| Item | Value |
|---|---|
| Commits | 46 |
| Time span | 10/18 17:22 – 10/19 00:50 |
| Files changed | 479 |
| Lines added / removed | +20,089 / −1,394 |
| Sites | 6 (4 my own, 2 for clients) |
The four I run myself are site30cut (this site), Calcmoa, Word Counter & Text Tools and Korea Public Holidays. The other two belong to a café client and a mobile car-detailing client.
1. One page means one place to be found
The first problem was simple. With everything on a single home page, every search query could only ever land on that one URL. So each site got topic pages — about, process, pricing, FAQ, contact — in four languages (Korean, English, Japanese, Traditional Chinese). The sitemap lastmod dates and the RSS feeds were widened at the same time, because Naver reads RSS while Google mostly reads the sitemap.
I also wrote a read-only script that queries Search Console and GA4. It picks out pages that get impressions but rank low or get no clicks, so I know what to improve next. The numbers will come in a later entry, once there is enough data.
2. Don’t build the same menu six times
The slide-out menu I first built for the car-detailing client — grouped accordions, menu search with synonyms and Korean initial-consonant matching, ESC and a focus trap — worked well, so it moved into a shared package. Now each site only lists its groups and synonyms in one nav.config.ts, and all six behave the same way.
Form hints got the same treatment. The calculators, text tools and leave planner each had their own messages for empty, out-of-range or malformed numbers; they now share one form-kit, with the same behaviour and wording as before.
3. Animated diagrams instead of paragraphs
Long explanations get skipped. So the build process became a five-step timeline, loan results became a principal-and-interest donut, and long weekends became calendar strips. The original text is still there, folded under “more details”. Animations only run while on screen, and visitors who turn on “reduce motion” see a still frame.
4. Emoji out, icons in
The emoji scattered through menus and diagrams looked different on every device and, frankly, looked auto-generated. They were replaced with 115 Lucide icons (ISC licence) through one shared Icon component used by all six sites.
5. Small things that are easy to miss
- PWA, step one: a web manifest and icons for all six sites. No service worker on purpose — installability doesn’t need one, and a cache holding on to an old page was the bigger risk.
- Image credits: client photos were swapped for free stock photos without brand logos or licence plates, and each site’s about page now lists the source and photographer.
- Horizontal overflow on mobile: an entrance animation’s starting offset pushed a 390px screen out to 426px;
overflow-x: clipfixed it.
What’s next
Whether the new pages actually show up in search will be clear from Search Console in a few days, and this log will continue with those numbers. If you’re curious how these sites are made, see the process and portfolio pages.