
π¦οΈ λ μ¨ μλ΄ μ½ν
μΈ
- νλ‘μ νΈ μκ°: μ€μκ° λ μ¨ λ°μ΄ν°μ λ€κ΅μ΄ μμ± μλ΄ κΈ°λ₯μ ν΅ν΄ λ§μΆ€ν μ보λ₯Ό μ 곡νλ μλΉμ€
- μμΈ: κΈ°ν λ¨κ³λΆν° νλ‘ νΈμλ κ°λ°μ λ¨λ
μΌλ‘ λ΄λΉνμμΌλ©°, UI/UX μ€κ³λΆν° κΈ°λ₯ κ°λ° λ° μ±λ₯ μ΅μ νκΉμ§ μννμμ΅λλ€.
- Tech:ReactTypeScriptJavaScriptLocalStorageκΈ°μμ² APIi18n(λ€κ΅μ΄μ§μ)TTS
- μ§ν κΈ°κ°: 2023-01-16 ~ 2023-10-20
- μμ: ν¨μ²λ‘λ΄
λ©μΈ νλ©΄ μλ¨ λ μ¨ μ μ©λ‘λ΄ λκΈ° νλ©΄ μ€ λ μ¨ νμλ‘λ΄ λκΈ° νλ©΄ μ€ λ μ¨ νμ (μλ¬Έ)λ‘λ΄ λκΈ° νλ©΄ μ€ λ μ¨ νμ (μ€λ¬Έ)
π νλ‘μ νΈ κ°μ
- λ‘λ΄μ΄ μ€μΉλ 건물 μμΉλ₯Ό κΈ°μ€μΌλ‘ μ€λ, λ΄μΌ, μ£Όκ° μ보μ λκΈ°μ§ μ 보λ₯Ό μλ΄νλ μ½ν
μΈ μ
λλ€.
- κΈ°μμ² μ보 λ°μ΄ν°λ₯Ό νλ©΄μ νμνκ³ , κ°μ λ°μ΄ν°λ‘ μμ± μλ΄ λ¬Έκ΅¬λ₯Ό μ‘°λ¦½ν΄ ν¨κ» μ 곡ν©λλ€.
- κ³ κ°μ¬ 건물λ§λ€ μ보 격μμ λκΈ°μ§ μΈ‘μ μκ° λ€λ₯΄λ―λ‘, νμ₯ κΈ°μ€ λ μ¨κ° λμ€λλ‘ μμΉ μ 보λ₯Ό μ€μ ν©λλ€.
- λκΈ° νλ©΄, λ©μΈ νλ©΄, λ μ¨ μ μ© νλ©΄ λ± μ¬λ¬ μμΉμμ λ
ΈμΆλλ―λ‘, λ°°μΉλ³λ‘ νμ λ²μλ₯Ό λ¬λ¦¬νλ©΄μλ λ°μ΄ν° μ²λ¦¬λ νλλ‘ μ μ§λλλ‘ κ΅¬μ±νμ΅λλ€.
- κΈ°ν λ¨κ³λΆν° μ°Έμ¬ν΄ νλ‘ νΈμλλ₯Ό λ¨λ
μΌλ‘ λ΄λΉνμΌλ©°, UI/UX μ€κ³λΆν° κΈ°λ₯ κ°λ°κ³Ό μ±λ₯ μ΅μ νκΉμ§ μννμ΅λλ€.
- ν
μ€νΈμ μμ± μλ΄λ κ΅μ ν(i18n)λ₯Ό μν΄ λ€κ΅μ΄λ₯Ό μ§μνμ¬, λ€μν μΈμ΄ νκ²½μμλ μ μ°νκ² λμν©λλ€.
π§βπ» μ£Όμ κΈ°μ¬
- κ±΄λ¬Όλ³ μ보 격μμ λκΈ°μ§ μΈ‘μ μλ₯Ό μ§μ ν΄, λ‘λ΄μ΄ μ€μΉλ νμ₯ κΈ°μ€μ λ μ¨λ₯Ό μ 곡νλλ‘ κ΅¬μ±νμ΅λλ€.
- κΈ°μμ² API λ°μ΄ν°λ₯Ό μ€λ, λ΄μΌ, μ£Όκ° μΈ μμμΌλ‘ ꡬλΆν΄ λ λλ§νμ΅λλ€.
- UI μ»΄ν¬λνΈλ₯Ό κΈ°λ₯ λ¨μλ‘ λΆλ¦¬νκ³ μμ νμ΄μ§μμ μ‘°ν©νλλ‘ μ€κ³ν΄, μ¬λ¬ νλ©΄μ λ°°μΉνλ©΄μλ μ¬μ¬μ©μ±κ³Ό νμ₯μ±μ ν보νμ΅λλ€.
- νλ©΄ μ§μ
λ§λ€ λ°μνλ API νΈμΆμ λ―Έλ€μ¨μ΄ μΊμ±μΌλ‘ μ ννκ³ κ°±μ μ£ΌκΈ°λ₯Ό 12μκ°μΌλ‘ μ€μ ν΄,
λ‘λ΄ 1λλΉ ν루 30νμμ 2νλ‘ μ€μμ΅λλ€.
- μλ΅μ΄ λΉμ μμΌ λ λ§μ§λ§ μ μ λ°μ΄ν°λ₯Ό localStorageμμ λΆλ¬μ λ체 νμνλλ‘ μ²λ¦¬νμ΅λλ€.
- κ°κ³΅μ΄ λλ λ°μ΄ν°λ₯Ό μ¬μ¬μ©νλλ‘ λ°κΏ νκ· λ‘λ© μκ°μ 1,600msμμ 700msλ‘ μ€μμ΅λλ€.
- λ μ¨ λ°μ΄ν°λ₯Ό μ‘°ν©ν΄ TTS μμ± μλ΄ λ¬Έκ΅¬λ₯Ό μμ±νκ³ , μ
μ£Όμ¬ λͺ
μΉμ ν¬ν¨ν λ§μΆ€ μλ΄λ₯Ό μ 곡νμ΅λλ€.
- i18n λ€κ΅μ΄: ko-KR, en-US, zh-CN UI ν
μ€νΈμ μμ± μλ΄λ₯Ό μ 곡νμ΅λλ€.
- κΈ°μμ² API μλ΅ κ·κ²©κ³Ό νλ μλ―Έλ₯Ό λ΄λΆ λ¬Έμλ‘ μ 리ν΄, μ΄ν λ€λ₯Έ κ°λ°μκ° μλ΅ κ΅¬μ‘°λ₯Ό λ€μ νμ
νμ§ μμλ λλλ‘ νμ΅λλ€.
π§ κΈ°μ μ ν λ° μ€κ³ κ³ λ―Ό
μ¬λ¬ νλ©΄μμ μ¬μ¬μ©λλ ꡬ쑰
- λ μ¨ μ½ν
μΈ λ λκΈ° νλ©΄, λ©μΈ νλ©΄, λ μ¨ μ μ© νλ©΄ λ± μ¬λ¬ μμΉμμ λ
ΈμΆλμ΅λλ€.
κ°μ λ°μ΄ν°λ₯Ό μ°μ§λ§ λ°°μΉλ§λ€ νμ λ²μμ λμμ΄ λ¬λκ³ , νλ©΄λ³λ‘ λ°λ‘ λ§λ€λ©΄ μ€λ³΅μ΄ κ³μ λμ΄λλ ꡬ쑰μμ΅λλ€.
- μν λ―Ή λμμΈ ν¨ν΄μ μ°Έκ³ ν΄ UI μ»΄ν¬λνΈλ₯Ό κΈ°λ₯ λ¨μλ‘ λλκ³ μμ νμ΄μ§μμ μ‘°ν©νλλ‘ μ€κ³νμ΅λλ€.
- μ΄λ κ² λλ λλ λ°°μΉ μμΉκ° λμ΄λλ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ³ κ°κ³΅νλ λ‘μ§μ νλλ‘ μ μ§λκ³ ,
νλ©΄λ§λ€ λ€λ₯Έ λΆλΆλ§ μ‘°ν©μ λ°κΏ λμν μ μμμ΅λλ€.
- κΈ°μμ² API μλ΅ κ·κ²©κ³Ό νλ μλ―Έλ λ΄λΆ λ¬Έμλ‘ μ 리νμ΅λλ€.
μλ΅ νλλͺ
μ΄ μ§κ΄μ μ΄μ§ μμ, λμ€μ μμ ν μ¬λμ΄ κ·κ²©μ λ€μ ν΄μνμ§ μλλ‘ νκΈ° μν¨μ΄μμ΅λλ€.
λ¬Έμ μν©
- μ΄κΈ°μλ λ μ¨ νλ©΄μ μ§μ
ν λλ§λ€ APIλ₯Ό νΈμΆνμ΅λλ€.
λ‘λ΄ 1λ κΈ°μ€ ν루 νκ· 30ν μ λκ° λ°μνκ³ , νλ©΄ μ§μ
λλ§λ€ μλ΅μ κΈ°λ€λ €μΌ ν΄μ 첫 νλ©΄μ΄ λ¦κ² 보μ¬μ‘μ΅λλ€.
- λ ν° λ¬Έμ λ κΈ°μμ² API μλ΅ μ€λ₯μμ΅λλ€. μ£Ό 1ν μ΄μ λΉμ μ μλ΅μ΄ λ°μνκ³ ,
κ°μ΄ λΉλ©΄μ νλ©΄μ΄ μμ λ¨μ§ μλ λ°νμ μ€λ₯λ‘ μ΄μ΄μ‘μ΅λλ€.
νμ₯μμλ λ‘λ΄ νλ©΄μ΄ λΉμ΄ μλ μνλ‘ λ°©μΉλλ―λ‘ μ΄μ λ¬Έμ λ‘ μ΄μ΄μ‘μ΅λλ€.
ν΄κ²° λ°©λ²
- μ보 λ°μ΄ν°λ κ·Έλ κ² μμ£Ό λ°λμ§ μλλ€λ μ μμ μΆλ°νμ΅λλ€.
κΈ°μμ² λλ€μ보λ 3μκ° κ°κ²©μΌλ‘ λ°νλμ§λ§, λ‘λ΄ μλ΄ νλ©΄μμ μ€λ, λ΄μΌ, μ£Όκ°μ 보μ¬μ£Όλ μ©λλΌλ©΄
κ·Έ μμμ μλ―Έ μκ² λ¬λΌμ§μ§ μμ΅λλ€.
- λ§€ μ§μ
λ§λ€ νΈμΆνλ λμ λ―Έλ€μ¨μ΄μ μΊμ± κΈ°λ₯μ μ¬μ©νκ³ κ°±μ μ£ΌκΈ°λ₯Ό 12μκ°μΌλ‘ μ‘μμ΅λλ€.
TanStack Queryμμ staleTimeμ λλ κ²κ³Ό κ°μ κ°λ
μΌλ‘, μ€μ κ³Ό μ€ν ν λ²μ©μ΄λ©΄ μΆ©λΆνλ€κ³ νλ¨νμ΅λλ€.
- μλ΅ μ€λ₯μ λν΄μλ λ§μ§λ§μΌλ‘ μ μ μμ ν λ°μ΄ν°λ₯Ό 'localStorage'μ 보κ΄ν΄λκ³ ,
μ λ°μ΄ν°κ° λΉμ μμ΄λ©΄ κ·Έ κ°μΌλ‘ νλ©΄μ μ±μ°λλ‘ νμ΅λλ€.
μ¬μ©μ μ
μ₯μμλ μ‘°κΈ μ€λλ μ보λ₯Ό λ³΄κ² λμ§λ§, λΉ νλ©΄μ 보λ κ²λ³΄λ€ λ«λ€κ³ νλ¨νμ΅λλ€.
- κ²°κ³Όμ μΌλ‘ API νΈμΆμ ν루 2νλ‘ μ€μκ³ , μλ΅ μ΄μμΌλ‘ νλ©΄μ΄ λΉλ μ€λ₯λ λ°μνμ§ μμμ΅λλ€.
π₯ νΈλ¬λΈμν
첫 νλ©΄μ΄ λ¨κΈ°κΉμ§μ μ§μ°
- κΈ°μ‘΄ νλ¦μ νλ©΄ μ§μ
-> API νΈμΆ -> λ―Έλ€μ¨μ΄κ° μλ΅ μμ λ° μ μ -> νλ‘ νΈ μ λ¬ ->
νλ‘ νΈμμ νλ©΄μ λ§κ² κ°κ³΅ -> λ λλ§ μμμμ΅λλ€.
λͺ¨λ λ¨κ³λ₯Ό νλ©΄ μ§μ
μμ μ μ²μλΆν° λ€μ κ±°μ³€μ΅λλ€.
- μΊμ±μ μ μ©νλ©΄μ κ°κ³΅κΉμ§ λλ λ°μ΄ν°λ₯Ό μ μ₯ν΄ μ¬μ¬μ©νλλ‘ λ°κΏ,
μ§μ
μμ μλ λ λλ§λ§ νλ©΄ λλλ‘ νμ΅λλ€.
- κ°λ°μλꡬ λ€νΈμν¬ νκ³Ό μ½μ νμ΄λ¨Έ, λ―Έλ€μ¨μ΄κ° λ λ μλ£ μ νΈλ₯Ό λ°λ μμ κ°κ²©μΌλ‘ νμΈν κ²°κ³Ό
νκ· 1,600msμμ 700msλ‘ μ€μμ΅λλ€.