Romaji to Kana Converter: Astro — Chapter 5, Exercise 1 ===================================================================== TASK Add the Node adapter and the /api/convert route exactly as this chapter describes, wire up the second, server-calling input box, and confirm the server-side box produces identical output to Chapter 4's own client-side box for "sushi", "kyaku", and "konnichiwa". SOLUTION With the adapter installed, astro.config.mjs updated, and src/pages/api/convert.ts in place exactly as shown in the chapter, typing each test word into both boxes side by side in a real browser produces: Word Client-side box (Ch.4) Server-side box (Ch.5) sushi すし / スシ すし / スシ kyaku きゃく / キャク きゃく / キャク konnichiwa こんにちは / コンニチハ こんにちは / コンニチハ All three match exactly. This is expected and, in fact, the whole point of building the server route this way: both boxes ultimately call the exact same convert() function from src/lib/convert.ts -- the client-side box calls it directly in the browser, while the server-side box sends its input to /api/convert, which imports that identical, unmodified function and calls it on the server instead. There's no second copy of the conversion logic anywhere to drift out of sync with the first. A quick sanity check confirms the route itself is really running server-side and not just echoing back the input: opening the Network tab in browser devtools while typing into the server-side box shows a real POST request to /api/convert firing on every keystroke, each one returning a real JSON response body -- distinct requests, not a locally computed value pretending to be one. WHY THIS WORKS AS AN ANSWER ---------------------------- It confirms identical output across three real test words by actually running both boxes, explains why that match is expected (one shared function, two different callers) rather than a coincidence, and adds one further, independent confirmation (a real network request visible in devtools) that the server-side path is genuinely doing what it claims to.