"λ°μ΄ν° κΈ°λ°μ λ μ€λ§νΈν κΈΈλ κ΄λ¦¬"
Nexon Open APIλ₯Ό νμ©νμ¬ κΈΈλμ μ 보λ₯Ό μ€μκ° μ‘°ννκ³ κ΄λ¦¬μ λ²κ±°λ‘μμ ν΄κ²°νλ μ μ ν΅ν© νλ«νΌμ λλ€.
- Core: React, TypeScript, Vite
- Styling: Tailwind CSS, Framer Motion
- State Management: Zustand
- Data Fetching: TanStack Query (React Query), Axios
- API: Nexon Open API
- Database/Auth: Firebase
- Code Quality: ESLint, Prettier
- μμΈ μ€ν― μ‘°ν: μ ν¬λ ₯, μ₯λΉ, μ΄λΉλ¦¬ν° λ± 40μ¬ νλͺ©μ μμΈ μ 보λ₯Ό μ€μκ°μΌλ‘ μ‘°νν©λλ€.
- λ€μ€ κΈΈλ λΉκ΅: μ΅λ 4κ° κΈΈλλ₯Ό λμμ λΉκ΅νμ¬ μ±μ₯ μμΉλ₯Ό λΆμν©λλ€.
- λ³λ μ¬ν μΆμ : DBμ κ²μ λ°μ΄ν°λ₯Ό λΉκ΅νμ¬ κ°μ λ° νν΄λ₯Ό μλ νμ§ν©λλ€.
- λ³ΈμΊ/λΆμΊ νλ³: λ₯μ¨ API λ°μ΄ν°λ₯Ό λΆμνμ¬ μ¬μ©μμ λ©μΈ μΊλ¦ν°λ₯Ό μλμΌλ‘ ꡬλΆν©λλ€.
1. API Rate Limit λμ λ° λ‘λ© μλ μ΅μ ν
λ°λ³΅μ μΈ API νΈμΆλ‘ μ¦μ 429(Rate Limit) μλ¬ λ°μ λ° κ³Όλν λ‘λ© λκΈ°
TanStack Queryμ μΊμ± μ λ΅(staleTime, refetchOnWindowFocus) μ μ©
λΆνμν λ€νΈμν¬ λΉμ©μ 70% κ°μμν€κ³ μ¦κ°μ μΈ λ°μ΄ν° νμΈ κ²½ν μ 곡
2. λΆλΆ μΊμ κ°±μ μ ν΅ν UX κ°μ
μ 보 κ°±μ μ μ 체 λ°μ΄ν°λ₯Ό λ€μ λΆλ¬μ€λ λΉν¨μ¨λ‘ μΈν΄ κΈ΄ λκΈ° μκ° λ°μ
setQueryDataλ₯Ό νμ©νμ¬ λ³κ²½λ νΉμ λ©€λ² λ°μ΄ν°λ§ λΆλΆμ μΌλ‘ μ
λ°μ΄νΈ
UI λ°μ μκ°μ 10μ΄μμ 0μ΄ μμ€μΌλ‘ λ¨μΆνμ¬ μ€μκ° μ λ°μ΄νΈ λλ ꡬν
src
βββ apis # API integration modules
βββ assets # Static assets (images, icons)
βββ components # Shared UI components
βββ config # Configuration files
βββ constants # Global constants
βββ context # React Context providers
βββ data # Static data
βββ hooks # Custom React hooks
βββ pages # Page components (Routes)
βββ store # State management (Zustand)
βββ style # Global styles
βββ types # TypeScript type definitions
βββ utils # Utility functions- API μ΅μ ν λ° μΊμ± μ λ΅: TanStack Queryλ₯Ό νμ©νμ¬ λΆνμν API νΈμΆμ μ€μ΄κ³ , μ¬μ©μ κ²½νμ μν ν¨κ³Όμ μΈ λ°μ΄ν° μΊμ± μ λ΅μ μ립νμ¬ μ μ©νμ΅λλ€.
- λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬ κ²½ν: λ₯μ¨ Open APIμ λ°©λν μΊλ¦ν° λ° κΈΈλ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ°κ³΅νκ³ μκ°ννλ κ²½νμ μμμ΅λλ€.
- μ¬μ©μ κ²½ν(UX) κ°μ : λ°μ΄ν° λ‘λ© μ§μ° μκ°μ μ΅μννκΈ° μν λκ΄μ μ λ°μ΄νΈ(Optimistic Updates) λ° λΆλΆ λ λλ§ κΈ°μ μ λμ νμ¬ μ±μ λ°μμ±μ λμμ΅λλ€.
- νΈλ¬λΈμν κ³Ό λ¬Έμ ν΄κ²°: κ°λ° κ³Όμ μμ λ°μν Rate Limit λ¬Έμ μ λ λλ§ μ±λ₯ μ΄μλ₯Ό μ£Όλμ μΌλ‘ λΆμνκ³ ν΄κ²°νλ©° μμ§λμ΄λ§ μλμ κ°ννμ΅λλ€.