๋ค์ด๊ฐ๋ฉฐ [1ํธ]์์ page-flip ์ฝ์ด๋ฅผ ์๊ฒ ๊ฐ์ธ๋ ๊ตฌ์กฐ๋ก PoC๋ฅผ ๋๋ด๊ณ ์ ์ ๊ตฌํ์ ์์ํ๋ค. ํ์ง๋ง ์ง์ง ์์์ ์ค๊ธฐ๊ธฐ QA๋ถํฐ์๋ค. 1ํธ์์ ์นญ์ฐฌํ๋ 1์ค ํจ์น๊ฐ ๊ทธ๋๋ก ์ ๋ณด๊ฐ ๋์ด ๋์์ค๋ ๋ฑ, ์์ธกํ์ง ๋ชปํ ๋ฒ๊ทธ ๋ ๋ฐฉ์ ์ ๋๋ก ๋ง์๋ค. ๐ TL

๋ค์ด๊ฐ๋ฉฐ ๐ "๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ ๊ฐ์ ธ๋ค ๋ถ์ด๋ฉด ๋๋ฑ ์๋๊ฐ?" ์ฒ์์ ๊ฐ๋ณ๊ฒ ์๊ฐํ๋ค. ํ์ง๋ง ํ๋ก๋์ ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ๊ธฐ ์ ์ '์ง์ง ์ฐ๋ฆฌ ์คํ์ ๊ฒฌ๋๋ผ ์ ์์๊น?'๋ผ๋ ์๋ฌธ์ด ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ์๋ค. ๊ทธ๋ ๊ฒ ์์ ์คํ์ดํฌ(Spike) ๋ผ์ฐํธ ํ๋ ํ๋๊ณ ์์ํ PoC.

๐ TL;DR ์ ์ฅ์ ํ์ง ์ค์บ ์ค์ .github/workflows ๋ ์์ง๋ง typecheckยทlint ๋ฅผ ์ค์ ๋ก ๊ฒ์ฆํ๋ ์ก์ด ์๋ ๊ฑธ ๋ฐ๊ฒฌํ๊ณ , CI ๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ๋ก์ปฌ์์ ESLint ๋ฅผ ๋จผ์ ๋๋ ค๋ณด๋ ์ค๋ ์ ๋ณตํด ์๋ ์๋ฐ 3๊ฑด์ด ํ์ด๋์๋ค. ๐ ์์ธ

๐ TL;DR PR์ด๋ push๋ฅผ ํ ์ํฌํ๋ก์ฐ์ ์ฐ๊ฒจ๋ฃ์ผ๋ฉด ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์ด์ค์ผ๋ก ์ฌ๋ผ๊ฐ๊ฑฐ๋ ๊ฒ์ฆ์ด ๋น ์ง๋ ๊ตฌ๋ฉ์ด ์๊ธด๋ค. ์ญํ ๋ณ๋ก ๋ ๊ฐ๋ก ์ชผ๊ฐ๊ณ path filter๊น์ง ์ด์ง ์น์ด์ฃผ๋ฉด ๋จธ๋ฆฌ๋ ํธํ๊ณ CI ์คํ ์๊ฐ๋ ์ค์ด๋ ๋ค. ๐ ์์ธ ๋ฐฐ๊ฒฝ / ๋๊ธฐ ํ ํ

CLAUDE.md๋ ๋ช ๋ น์ด๊ฐ ์๋๋ผ ๊ณ์ฝ์๋ค.

๐ TL;DR structuredClone()์ ๋ค์ดํฐ๋ธ ๊น์ ๋ณต์ฌ API๋ค. Date, Map, Set, ์ํ ์ฐธ์กฐ๊น์ง ์ฒ๋ฆฌํ๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ ์๋ค. JSON.parse(JSON.stringify())์ ํจ์ ํํ ๊ฒช๋ ์๋๋ฆฌ์ค๊ฐ ์๋ค. API์์ ๋ฐ์์จ

๐ TL;DR ํ์ ์ "๊ฐ์ด ๋ช ๊ฐ ๋ค์ด๊ฐ๋ ์์"๋ก ํ์ฐํ๋ฉด ์ข์ ์ค๊ณ์ธ์ง ์ซ์๋ก ํ๋จํ ์ ์๊ณ , ํฉํ์ (Discriminated Union)์ ๋จผ์ ๋ ์ฌ๋ฆฌ๋ ์ต๊ด์ด "๋ถ๊ฐ๋ฅํ ์ํ๋ฅผ ์์ ๋ชป ๋ง๋ค๊ฒ" ํด์ค๋ค. '๋ญ๊ฐ ์ด์ํ๋ฐ ์ค๋ช ์ด ์ ๋๋' ํ์ ์ ๋ํ์ฌ "

๋ชจ๋ฐ์ผ ํ์คํฌ๋ฆฐ, ์๋ก์ด ์ ๋ต