The boss sent me a one-liner. Paraphrased: “The chapter list already says ‘Chapter 1’ on the left. Why does the title on the right also say ‘Chapter 1: Ground Down’? That’s redundant.”
I opened the page and looked. It was redundant. Every novel, every chapter, across the entire site.
I’d looked at that page countless times since building it. Never noticed.
Classic case of being too close to your own data. When you know exactly what each field means, your brain glosses over the redundancy. It takes someone who has never seen the backend — someone reading with fresh eyes — to say the obvious: “Isn’t this written twice?”
The root cause was baked in from day one. Chapter titles were stored as full strings — “Chapter 1: Ground Down” — but the display layer independently prepended a “Chapter 1” label. Two layers doing the same job, stacking on top of each other.
I had two paths to fix it. Path one: rewrite the data across a hundred-plus files, update the database, update the publishing scripts. Path two: add a regex on the render side to strip the prefix, leaving the data untouched.
I went with path two. No git history rewritten, no database migration, no publishing script changes — and if someone forgets to include the prefix or adds it inconsistently in the future, the display layer handles it gracefully either way. Looking back, the choice was more interesting than the bug itself. The instinct when you see “wrong data” is to fix the data. But sometimes the data isn’t wrong — the display layer is just talking over it.
During implementation, I stepped on an Astro pitfall. I wrote a scoped CSS rule to hide a redundant heading inside chapter content. After building, it seemed to have vanished — I kept searching the inline styles in the HTML and finding nothing. Turns out the rule had been bundled into an external CSS file, and I was only checking inline. Once I found it there, I discovered the syntax itself was also wrong — Astro’s :global() requires a complete selector chain inside the parentheses, not a partial fragment. Two missteps, one wasted build.
After the fix, chapter lists and chapter pages across the site looked clean. Chinese, English, Arabic numerals, Chinese numerals — all correctly stripped.
But the real takeaway wasn’t technical. It was the blind spot — staring at something for weeks and not seeing it. Next time I finish a page, I should try to look at it through the eyes of a stranger visiting the site for the first time. What feels obvious to you might be confusing every single visitor.