Skip to content

πŸ“Ž κΈΈλ“œμ› 관리, 일정 곡유, 회의 및 곡지 μ‹œμŠ€ν…œμ„ κ°–μΆ˜ κΈΈλ“œ 운영 관리 ν”Œλž«νΌ

Notifications You must be signed in to change notification settings

play3step/maple-link

Repository files navigation

🍁 MapleLink: λ©”μ΄ν”ŒμŠ€ν† λ¦¬ 톡합 관리 ν”Œλž«νΌ

"데이터 기반의 더 μŠ€λ§ˆνŠΈν•œ κΈΈλ“œ 관리"
Nexon Open APIλ₯Ό ν™œμš©ν•˜μ—¬ κΈΈλ“œμ› 정보λ₯Ό μ‹€μ‹œκ°„ μ‘°νšŒν•˜κ³  κ΄€λ¦¬μ˜ λ²ˆκ±°λ‘œμ›€μ„ ν•΄κ²°ν•˜λŠ” μœ μ € 톡합 ν”Œλž«νΌμž…λ‹ˆλ‹€.


πŸ›  Tech Stack

Frontend

  • Core: React, TypeScript, Vite
  • Styling: Tailwind CSS, Framer Motion
  • State Management: Zustand
  • Data Fetching: TanStack Query (React Query), Axios

Data & Backend

  • API: Nexon Open API
  • Database/Auth: Firebase

Tools

  • Code Quality: ESLint, Prettier

✨ Key Features

πŸ” κ°•λ ₯ν•œ 캐릭터 & κΈΈλ“œ 탐색

  • 상세 μŠ€νƒ― 쑰회: μ „νˆ¬λ ₯, μž₯λΉ„, μ–΄λΉŒλ¦¬ν‹° λ“± 40μ—¬ ν•­λͺ©μ˜ 상세 정보λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ‘°νšŒν•©λ‹ˆλ‹€.
  • 닀쀑 κΈΈλ“œ 비ꡐ: μ΅œλŒ€ 4개 κΈΈλ“œλ₯Ό λ™μ‹œμ— λΉ„κ΅ν•˜μ—¬ μ„±μž₯ 수치λ₯Ό λΆ„μ„ν•©λ‹ˆλ‹€.

πŸ›‘οΈ μ§€λŠ₯ν˜• κΈΈλ“œ 관리

  • 변동 사항 좔적: DB와 κ²Œμž„ 데이터λ₯Ό λΉ„κ΅ν•˜μ—¬ κ°€μž… 및 νƒˆν‡΄λ₯Ό μžλ™ νƒμ§€ν•©λ‹ˆλ‹€.
  • 본캐/뢀캐 νŒλ³„: λ„₯슨 API 데이터λ₯Ό λΆ„μ„ν•˜μ—¬ μ‚¬μš©μžμ˜ 메인 캐릭터λ₯Ό μžλ™μœΌλ‘œ κ΅¬λΆ„ν•©λ‹ˆλ‹€.

⚑ Trouble Shooting & Optimization

1. API Rate Limit λŒ€μ‘ 및 λ‘œλ”© 속도 μ΅œμ ν™”

🚨 Problem

반볡적인 API 호좜둜 μž¦μ€ 429(Rate Limit) μ—λŸ¬ λ°œμƒ 및 κ³Όλ„ν•œ λ‘œλ”© λŒ€κΈ°

βœ… Solution

TanStack Query의 캐싱 μ „λž΅(staleTime, refetchOnWindowFocus) 적용

πŸ“ˆ Result

λΆˆν•„μš”ν•œ λ„€νŠΈμ›Œν¬ λΉ„μš©μ„ 70% κ°μ†Œμ‹œν‚€κ³  즉각적인 데이터 확인 κ²½ν—˜ 제곡

2. λΆ€λΆ„ μΊμ‹œ 갱신을 ν†΅ν•œ UX κ°œμ„ 

🚨 Problem

정보 κ°±μ‹  μ‹œ 전체 데이터λ₯Ό λ‹€μ‹œ λΆˆλŸ¬μ˜€λŠ” λΉ„νš¨μœ¨λ‘œ 인해 κΈ΄ λŒ€κΈ° μ‹œκ°„ λ°œμƒ

βœ… Solution

setQueryDataλ₯Ό ν™œμš©ν•˜μ—¬ λ³€κ²½λœ νŠΉμ • 멀버 λ°μ΄ν„°λ§Œ λΆ€λΆ„μ μœΌλ‘œ μ—…λ°μ΄νŠΈ

πŸ“ˆ Result

UI 반영 μ‹œκ°„μ„ 10μ΄ˆμ—μ„œ 0초 μˆ˜μ€€μœΌλ‘œ λ‹¨μΆ•ν•˜μ—¬ μ‹€μ‹œκ°„ μ—…λ°μ΄νŠΈ λŠλ‚Œ κ΅¬ν˜„


πŸ— Project Structure

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

πŸ† Achievements & Lessons Learned

  • API μ΅œμ ν™” 및 캐싱 μ „λž΅: TanStack Queryλ₯Ό ν™œμš©ν•˜μ—¬ λΆˆν•„μš”ν•œ API ν˜ΈμΆœμ„ 쀄이고, μ‚¬μš©μž κ²½ν—˜μ„ μœ„ν•œ 효과적인 데이터 캐싱 μ „λž΅μ„ μˆ˜λ¦½ν•˜μ—¬ μ μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  • λŒ€κ·œλͺ¨ 데이터 처리 κ²½ν—˜: λ„₯슨 Open API의 λ°©λŒ€ν•œ 캐릭터 및 κΈΈλ“œ 데이터λ₯Ό 효율적으둜 κ°€κ³΅ν•˜κ³  μ‹œκ°ν™”ν•˜λŠ” κ²½ν—˜μ„ μŒ“μ•˜μŠ΅λ‹ˆλ‹€.
  • μ‚¬μš©μž κ²½ν—˜(UX) κ°œμ„ : 데이터 λ‘œλ”© μ§€μ—° μ‹œκ°„μ„ μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•œ 낙관적 μ—…λ°μ΄νŠΈ(Optimistic Updates) 및 λΆ€λΆ„ λ Œλ”λ§ κΈ°μˆ μ„ λ„μž…ν•˜μ—¬ μ•±μ˜ λ°˜μ‘μ„±μ„ λ†’μ˜€μŠ΅λ‹ˆλ‹€.
  • νŠΈλŸ¬λΈ”μŠˆνŒ…κ³Ό 문제 ν•΄κ²°: 개발 κ³Όμ •μ—μ„œ λ°œμƒν•œ Rate Limit λ¬Έμ œμ™€ λ Œλ”λ§ μ„±λŠ₯ 이슈λ₯Ό μ£Όλ„μ μœΌλ‘œ λΆ„μ„ν•˜κ³  ν•΄κ²°ν•˜λ©° μ—”μ§€λ‹ˆμ–΄λ§ μ—­λŸ‰μ„ κ°•ν™”ν–ˆμŠ΅λ‹ˆλ‹€.

About

πŸ“Ž κΈΈλ“œμ› 관리, 일정 곡유, 회의 및 곡지 μ‹œμŠ€ν…œμ„ κ°–μΆ˜ κΈΈλ“œ 운영 관리 ν”Œλž«νΌ

Resources

Stars

Watchers

Forks

Packages

No packages published