Skip to content

celestedayoung/Tikkle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

README

ν‹°λŒ (Tikkle) - μ‹œκ°„ μž¬ν™”λ₯Ό ν†΅ν•œ μƒν˜Έ ν˜‘λ ₯ ν”Œλž«νΌ

ν”„λ‘œμ νŠΈ μ†Œκ°œ

ν‹°λŒ(Tikkle) 은 μ‹œκ°„μ΄λΌλŠ” μž¬ν™”λ₯Ό ν™œμš©ν•˜μ—¬ λ‹¨μ²΄λ‚˜ νšŒμ‚¬ ꡬ성원듀이 μƒν˜Έ 간에 도움을 주고받을 수 μžˆλŠ” ν”Œλž«νΌμž…λ‹ˆλ‹€. 이 ν”Œλž«νΌμ„ 톡해 μ‚¬μš©μžλŠ” μžμ‹ μ˜ μ‹œκ°„μ„ νˆ¬μžν•˜μ—¬ λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ 도움을 μ£Όκ³ , 그에 λŒ€ν•œ λ³΄μƒμœΌλ‘œ μ‹œκ°„μ„ μ–»μ–΄ λ‹€μ‹œ ν•„μš”ν•œ 도움을 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

  • μ‹œκ°„(μž¬ν™”)에 κΈ°λ°˜ν•΄ κ²Œμ‹œκΈ€λ‘œ νŠΉμ • 도움을 μš”μ²­ν•˜κ³  거래
  • λž­ν‚Ή μ‹œμŠ€ν…œ 및 λž­ν‚Ήμ— κΈ°λ°˜ν•œ λ¦¬μ›Œλ“œ μ„€μ • κΈ°λŠ₯ 제곡
  • μ‹œκ°„(μž¬ν™”)-λž­ν‚Ή 포인트 κ°„ ν™˜μœ¨ κΈ°λŠ₯

νŒ€μ› ꡬ성

κΉ€μ„±μœ€ (FE, BE) μ†μ˜μ€€ (νŒ€μž₯, BE, Infra) μœ μ„œν˜„ (FE) 이규빈 (BE) ν‘œλ‹€μ˜ (FE, Design) ν—ˆλ™λ―Ό (BE)
@seongY0-0n @glenn-syj @clare-u @Lee9Bin @celestedayoung @hurdong

개발 ν™˜κ²½

  • Front-end : Next.js, Tailwind, Typescript, Tanstack Query, Zustand
  • Back-end : Spring Boot, MariaDB, Redis, Kafka, MongoDB
  • 버전 및 μ΄μŠˆκ΄€λ¦¬ : Gitlab, Jira
  • ν˜‘μ—… 툴 : Notion, Mattermost
  • μ„œλΉ„μŠ€ 배포 ν™˜κ²½ : AWS EC2, Docker, Jenkins, NginX
  • λ””μžμΈ : Figma
  • κ°œλ°œκΈ°κ°„ : 24.08.26 ~24.10.11 (7μ£Ό)

μ±„νƒν•œ 개발 기술과 브랜치 μ „λž΅

Front-end

  • Next.js
    • λŒ€λΆ€λΆ„μ˜ νŽ˜μ΄μ§€λ₯Ό static page둜 κ΅¬μ„±ν•˜μ—¬ CSR이 μ•„λ‹Œ SSR을 ν™œμš©ν•΄ μ‚¬μš©μžμ—κ²Œ λΉ λ₯΄κ²Œ 정보 전달
  • Tailwind
    • CSS νŒŒμΌμ„ λ³„λ„λ‘œ μž‘μ„±ν•˜μ§€ μ•Šκ³  μ¦‰κ°μ μœΌλ‘œ μŠ€νƒ€μΌλ§μ΄ κ°€λŠ₯
    • tailwind.config.ts νŒŒμΌμ„ 톡해 μ»€μŠ€ν…€ μŠ€νƒ€μΌμ„ μ„€μ •ν•˜μ—¬ νŒ€μ› κ°„ μΌκ΄€λœ UI/UX κ΅¬ν˜„
  • Typescript
    • μ•ˆμ „ν•˜κ³  μ •ν™•ν•œ API 톡신을 μœ„ν•œ Type μ§€μ • 및 μ»€μŠ€ν…€ API handler둜 효율적인 HTTP 톡신
  • Tanstack Query
    • 비동기 데이터λ₯Ό 효율적으둜 캐싱, 동기화, κ°±μ‹ ν•  수 μžˆλ„λ‘ μ‚¬μš©
    • λ¦¬μ•‘νŠΈ 훅을 톡해 μƒνƒœ 관리가 μžμ—°μŠ€λŸ½κ²Œ ν†΅ν•©λ˜λ©°, 비동기 데이터와 κ΄€λ ¨λœ λ³΅μž‘ν•œ λ‘œμ§μ„ κ°„κ²°ν•˜κ²Œ μž‘μ„± κ°€λŠ₯
  • Zustand
    • λΆˆν•„μš”ν•œ props drilling을 ν”Όν•˜κ³ , ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œλ§Œ μƒνƒœ 값을 κ°€μ Έλ‹€ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μƒνƒœ 관리 라이브러리 μ‚¬μš©
    • Redux에 λΉ„ν•΄ μƒνƒœ 관리에 ν•„μš”ν•œ λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œκ°€ 적고, λ‹¨μˆœν•œ μ„€μ •λ§ŒμœΌλ‘œλ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœ 관리λ₯Ό μ‰½κ²Œ κ΅¬ν˜„ κ°€λŠ₯

Back-end

  • Spring Boot
  • MariaDB
  • Redis
  • Kafka
  • MongoDB

Infra

  • AWS EC2
  • Docker
  • Jenkins
  • NginX

브랜치 μ „λž΅

  • Github Flow: 7μ£Ό κΈ°κ°„μ˜ 호흑으둜 μž‘μ—…ν•˜λ©° 일정상 λ§ˆμ§€λ§‰ 주차에 배포가 이루어지기 λ•Œλ¬Έμ— 채택

아킀텍쳐

Architecture (2) 1.png

ERD

ν‹°λŒ.png

μ—­ν•  λΆ„λ‹΄

κΉ€μ„±μœ€

FE

  • 곡고 νŽ˜μ΄μ§€: 곡고 검색기λŠ₯, 곡고 μΉ΄ν…Œκ³ λ¦¬ λΆ„λ₯˜, νŽ˜μ΄μ§€λ„€μ΄μ…˜, 곡고 μž‘μ„± νŽ˜μ΄μ§€, 곡고 μˆ˜μ • 및 μ‚­μ œ κΈ°λŠ₯
  • 둜그인 νŽ˜μ΄μ§€: mattermost 둜그인, λ‘œκ·Έμ•„μ›ƒ κΈ°λŠ₯, zustand둜 멀버 정보 μƒνƒœκ΄€λ¦¬
  • 메인 νŽ˜μ΄μ§€: λ ˆμ΄μ•„μ›ƒ λ§ˆν¬μ—…

BE

  • 곡고 : 곡고 CRUD RESTapi

μ†μ˜μ€€

BE

  • Spring Security: JWT + mattermost OAuth2 νšŒμ› 관리
  • Redisλ₯Ό ν™œμš©ν•œ Refresh Token Rotation κ΅¬ν˜„
  • μ±„νŒ… / ν™˜μ „ / 리뷰 / 약속 κΈ°λŠ₯ 디버깅 및 κ°œμ„  μ°Έμ—¬
  • 곡톡 μ˜ˆμ™Έ 클래슀, μ—λŸ¬ μ½”λ“œ 및 ν•Έλ“€λŸ¬ μž‘μ„±

Infra

  • Jenkins CI/CDλ₯Ό ν†΅ν•œ 톡합 및 배포 μžλ™ν™” (Jenkins Pipeline)
  • Gitlab-Jenkins 연동
  • Docker-compose 파일 및 spring boot application 파일 μž‘μ„±
  • NginX λ“± EC2 μΈμŠ€ν„΄μŠ€ λ‚΄ λ³΄μ•ˆ 처리

μœ μ„œν˜„

  • λ‹΄λ‹Ή νŽ˜μ΄μ§€: 헀더(λ„€λΉ„κ²Œμ΄μ…˜), μ±„νŒ…, λž­ν‚Ή, ν™˜μ „
  • μ±„νŒ… κΈ°λŠ₯, 약속 κΈ°λŠ₯, 리뷰 κΈ°λŠ₯, λž­ν‚Ή κΈ°λŠ₯, ν™˜μ „ κΈ°λŠ₯ 연동
  • κ²Œμ‹œκΈ€μ— λŒ€ν•΄ λ§ˆν¬λ‹€μš΄ 적용이 κ°€λŠ₯ν•œ 에디터와 λ·°μ–΄ 적용, ν™˜μœ¨ 차트 d3 라이브러리λ₯Ό 톡해 적용

이규빈

  • Redis μΊμ‹œλ₯Ό ν™œμš©ν•œ λž­ν‚Ή κ΅¬ν˜„
  • 자체 ν™˜μœ¨ 및 μŠ€μΌ€μ€„λŸ¬ κ΅¬ν˜„
  • ν™˜μ „ κΈ°λŠ₯ κ΅¬ν˜„
  • λ°μ΄ν„°λ² μ΄μŠ€ ν”„λ‘œμ‹œμ € κ΅¬ν˜„

ν‘œλ‹€μ˜

  • λ””μžμΈ 및 λ””μžμΈ μ‹œμŠ€ν…œ 섀계
  • TypeScript & Axios μ»€μŠ€ν…€ Handler μž‘μ„±
  • λ‹΄λ‹Ή νŽ˜μ΄μ§€: 메인, λ§ˆμ΄νŽ˜μ΄μ§€

ν—ˆλ™λ―Ό

  • Kafka와 STOMPλ₯Ό ν™œμš©ν•œ μ‹€μ‹œκ°„ 1λŒ€1 μ±„νŒ…λ°© μ„œλ²„ κ΅¬ν˜„
  • MongoDB λ₯Ό ν™œμš©ν•˜μ—¬ μ±„νŒ… 내역을 μ €μž₯ 관리
  • μ±„νŒ…λ°© 도메인 κΈ°λŠ₯ / 약속 도메인 κΈ°λŠ₯ / κ²Œμ‹œκΈ€ 일뢀 κΈ°λŠ₯ / 리뷰 일뢀 κΈ°λŠ₯ κ΅¬ν˜„

κΈ°λŠ₯ μ„€λͺ… & ν™”λ©΄ ꡬ성

1. λžœλ”© νŽ˜μ΄μ§€

/

image.png

  • λžœλ”© νŽ˜μ΄μ§€μ—λŠ” λ‘œκ³ μ™€ ν”Œλž«νΌμ— λŒ€ν•œ κ°„λ‹¨ν•œ μ„€λͺ…이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • 둜그인 κΈ°λŠ₯: μ‚¬μš©μžλŠ” Mattermost OAuthλ₯Ό 톡해 둜그인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ„œλΉ„μŠ€ μ†Œκ°œ: μŠ€ν¬λ‘€μ„ 내리면 μ„œλΉ„μŠ€μ— λŒ€ν•œ μ†Œκ°œ 이미지와 μ•ˆλ‚΄ 문ꡬ가 μžˆμŠ΅λ‹ˆλ‹€.

2. ν™ˆ νŽ˜μ΄μ§€

/home

Animation (2).gif

  • 둜그인 이후 λŒ€μ‹œλ³΄λ“œ ν˜•νƒœμ˜ /home 으둜 λ¦¬λ‹€μ΄λ ‰νŠΈ λ©λ‹ˆλ‹€.
  • λ„€λΉ„κ²Œμ΄μ…˜: 상단에 κ³ μ •λœ λ„€λΉ„κ²Œμ΄μ…˜μ„ 톡해 κ²Œμ‹œνŒ, λž­ν‚Ή, ν™˜μ „, μ±„νŒ… νŽ˜μ΄μ§€λ‘œ 이동이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • 둜그인 된 μ‚¬μš©μžμ˜ 경우 ν”„λ‘œν•„ 사진을 눌러 λ§ˆμ΄νŽ˜μ΄μ§€λ‘œ 이동 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • 둜그인 λ˜μ§€ μ•Šμ€ μ‚¬μš©μžμ˜ 경우 login λ²„νŠΌμ΄ ν‘œμ‹œλ©λ‹ˆλ‹€.
  • SSAFY의 ν‹°λŒ: κ²Œμ‹œνŒμ˜ μ΅œμ‹  글듀이 μŠ¬λΌμ΄λ“œ ν˜•μ‹μœΌλ‘œ λ³΄μ—¬μ§‘λ‹ˆλ‹€.
  • λž­ν‚Ή: λž­ν‚Ήμ˜ μƒμœ„ 10μœ„κΉŒμ§€ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • ν™˜μœ¨: ν™˜μœ¨ 변동을 차트 ν˜•νƒœλ‘œ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • λ‚˜μ˜ μ‹œκ°„ & ν‹°λŒ : μžμ‹ μ˜ κ³„μ’Œ(μ‹œκ°„, ν‹°λŒ) 정보λ₯Ό 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • μ‹œκ°„ : 도움을 뢀탁할 λ•Œ μ“°μ΄λŠ” μž¬ν™”μž…λ‹ˆλ‹€. 졜초 계정 생성 μ‹œ 10μ‹œκ°„μ„ λ³΄μœ ν•˜κ²Œ 되며, 도움을 쀄 λ•Œ μŒ“μ΄λ©° 도움을 받을 λ•Œ μ°¨κ°λ©λ‹ˆλ‹€. λ§€ μ‹œμ¦Œ(λΆ„κΈ°)λ§ˆλ‹€ λ¦¬μ…‹λ©λ‹ˆλ‹€.
    • ν‹°λŒ : λž­ν‚Ή 산정에 μ΄μš©λ˜λŠ” μž¬ν™”μž…λ‹ˆλ‹€. λ³΄μœ ν•œ μ‹œκ°„μ„ ν™˜μœ¨ 에 따라 ν™˜μ „ ν•˜μ—¬ ν‹°λŒμ„ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. λ§€ μ‹œμ¦Œ(λΆ„κΈ°)λ§ˆλ‹€ λ¦¬μ…‹λ©λ‹ˆλ‹€.
  • λ‚΄κ°€ 맑은 일 : μžμ‹ μ˜ 약속을 리슀트 ν˜•νƒœλ‘œ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€. 클릭 μ‹œ ν•΄λ‹Ήν•˜λŠ” μ±„νŒ…μœΌλ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

3. κ²Œμ‹œνŒ

/board

Animation (4).gif

  • μΉ΄ν…Œκ³ λ¦¬: 전체 κΈ€, 업무 κΈ€, 비업무 κΈ€λ‘œ μΉ΄ν…Œκ³ λ¦¬λ₯Ό κ΅¬λΆ„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 각 μΉ΄ν…Œκ³ λ¦¬λ³„λ‘œ κ²Œμ‹œκΈ€μ„ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 검색: 제λͺ©κ³Ό λ‚΄μš©μœΌλ‘œ 검색 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • κ²Œμ‹œκΈ€ λͺ©λ‘: κ²Œμ‹œκΈ€μ„ μΉ΄λ“œ ν˜•νƒœλ‘œ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€. 각 κ²Œμ‹œκΈ€μ˜ 제λͺ©, μž‘μ„±μΌ, μ§„ν–‰ μƒνƒœ, μ˜ˆμƒ μ‹œκ°„, λ‚΄μš©μ˜ 일뢀λ₯Ό 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • μ§„ν–‰ μƒνƒœμ˜ 경우 μ§„ν–‰μ „, 진행쀑, μ™„λ£Œλ¨ 의 3κ°€μ§€ μƒνƒœλ‘œ κ΅¬λΆ„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • νŽ˜μ΄μ§€λ„€μ΄μ…˜: κ²Œμ‹œκΈ€μ— 8개 λ‹¨μœ„λ‘œ νŽ˜μ΄μ§€λ„€μ΄μ…˜μ„ μ μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • κ²Œμ‹œκΈ€ μž‘μ„±: κ²Œμ‹œκΈ€ μž‘μ„± λ²„νŠΌμ„ 눌러 κΈ€ μž‘μ„±μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

4. κ²Œμ‹œκΈ€ μž‘μ„±

/board/write

Animation (5).gif

  • λ“±λ‘ν•˜κΈ°: κ²Œμ‹œκΈ€μ˜ 제λͺ©, μΉ΄ν…Œκ³ λ¦¬, μ˜ˆμƒ μ‹œκ°„, λ‚΄μš©μ„ μž…λ ₯ν•˜μ—¬ κ²Œμ‹œκΈ€μ„ 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 처음 λ“±λ‘ν•œ κ²Œμ‹œκΈ€μ˜ 경우 μ§„ν–‰ μƒνƒœλŠ” μ§„ν–‰μ „ 으둜 λ“±λ‘λ©λ‹ˆλ‹€.
    • λ‚΄μš©μ˜ 경우 λ§ˆν¬λ‹€μš΄ 에디터와 미리보기가 μ œκ³΅λ©λ‹ˆλ‹€.

5. κ²Œμ‹œκΈ€ 상세

/board/{boardId}

Animation (6).gif

  • κ²Œμ‹œκΈ€ 상세: κ²Œμ‹œκΈ€μ„ 상세 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ˜ 제λͺ©, μž‘μ„±μž, μž‘μ„±μΌ, μ§„ν–‰ μƒνƒœ, μ˜ˆμƒ μ‹œκ°„, μΉ΄ν…Œκ³ λ¦¬, λ‚΄μš©μ„ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • λ‚΄μš©μ˜ 경우 λ§ˆν¬λ‹€μš΄ λ·°μ–΄κ°€ μ μš©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • μ±„νŒ…ν•˜κΈ°: μ±„νŒ…ν•˜κΈ°λ₯Ό 눌러 κ²Œμ‹œκΈ€ μž‘μ„±μžμ™€ μ±„νŒ…μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • μˆ˜μ •ν•˜κΈ°, μ‚­μ œν•˜κΈ°: κ²Œμ‹œκΈ€ μž‘μ„±μžμ˜ 경우 μžμ‹ μ˜ 글을 μˆ˜μ • λ˜λŠ” μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

6. κ²Œμ‹œκΈ€ μˆ˜μ •

/board/write?id={boardId}

Animation (7).gif

  • μˆ˜μ •ν•˜κΈ°: κ²Œμ‹œκΈ€μ˜ 제λͺ©, μΉ΄ν…Œκ³ λ¦¬, μ˜ˆμƒ μ‹œκ°„, λ‚΄μš©μ„ μž…λ ₯ν•˜μ—¬ κ²Œμ‹œκΈ€μ„ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ‚΄μš©μ˜ 경우 λ§ˆν¬λ‹€μš΄ 에디터와 미리보기가 μ œκ³΅λ©λ‹ˆλ‹€.

7. μ±„νŒ… λͺ©λ‘

/chat

Animation (8).gif

  • μžμ‹ μ˜ μ±„νŒ… λͺ©λ‘μ„ μ‘°νšŒν•˜κ³  ν•΄λ‹Ήν•˜λŠ” μ±„νŒ…μ„ 눌러 μ±„νŒ…λ°©μœΌλ‘œ μž…μž₯ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • μ„ νƒν•œ μ±„νŒ…μ΄ 없을 경우 β€œμ„ νƒλœ μ±„νŒ…μ΄ μ—†μŠ΅λ‹ˆλ‹€.” λΌλŠ” μ•ˆλ‚΄ 문ꡬλ₯Ό 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • μ±„νŒ… λͺ©λ‘μ—μ„œλŠ” μƒλŒ€λ°©μ˜ 이름, ν”„λ‘œν•„ 사진, λ§ˆμ§€λ§‰ λ©”μ‹œμ§€λ₯Ό 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

8. μ±„νŒ…

/chat/{chatroomId}

Animation (9).gif

  • μ±„νŒ… ν™”λ©΄μ—μ„œλŠ” μƒλŒ€λ°©μ˜ 이름, ν”„λ‘œν•„ 사진, 약속 정보, μ§„ν–‰ μƒνƒœ, κ²Œμ‹œκΈ€ 제λͺ©, μ±„νŒ… 내역을 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

    • κ²Œμ‹œκΈ€ 제λͺ©μ„ 클릭 μ‹œ ν•΄λ‹Ήν•˜λŠ” κ²Œμ‹œκΈ€λ‘œ μ΄λ™λ©λ‹ˆλ‹€.
    • μ±„νŒ… 내역이 없을 경우 β€œμ•„μ§ λ©”μ‹œμ§€κ°€ μ—†μŠ΅λ‹ˆλ‹€.” λΌλŠ” μ•ˆλ‚΄ 문ꡬλ₯Ό 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • μ±„νŒ… λ‚΄μš©μ„ μž…λ ₯ ν›„ enterλ₯Ό 눌러 μƒλŒ€λ°©κ³Ό μ±„νŒ…μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • 약속

    Animation (10).gif

    • μ•½μ†μž‘κΈ°: κ²Œμ‹œκΈ€ μž‘μ„±μžμ˜ 경우 μ•½μ†μž‘κΈ° λ²„νŠΌμ„ 눌러 μ†Œμš”λ  μ‹œκ°„κ³Ό 약속 μ‹œκ°„μ„ μž…λ ₯ν•˜κ³  확인을 눌러 약속을 μž‘μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 약속을 μž‘μ€ 경우 κ²Œμ‹œκΈ€μ˜ μ§„ν–‰ μƒνƒœκ°€ 진행쀑 으둜 λ³€κ²½λ˜λ©° μ†Œμš”λ  μ‹œκ°„λ§ŒνΌ 보증금이 κ³„μ’Œ(μ‹œκ°„)μ—μ„œ μ°¨κ°λ©λ‹ˆλ‹€.
    • 약속 정보: μ±„νŒ… μ°Έμ—¬μžλ“€μ€ μƒμ„±λœ 약속에 λŒ€ν•œ 정보(μ†Œμš”λ  μ‹œκ°„, 약속 μ‹œκ°„)λ₯Ό 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • μ•½μ†μ·¨μ†Œ: κ²Œμ‹œκΈ€ μž‘μ„±μžμ˜ 경우 μ•½μ†μ·¨μ†Œ λ²„νŠΌμ„ 눌러 약속을 μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•½μ†μ·¨μ†Œ μ‹œ κ²Œμ‹œκΈ€μ˜ μ§„ν–‰ μƒνƒœκ°€ μ§„ν–‰μ „ 으둜 λ˜λŒμ•„κ°‘λ‹ˆλ‹€.
    • 거래 μ™„λ£Œν•˜κΈ°: κ²Œμ‹œκΈ€ μž‘μ„±μžμ˜ 경우 거래 μ™„λ£Œν•˜κΈ° λ²„νŠΌμ„ 눌러 리뷰λ₯Ό μž‘μ„±ν•˜κ³  리뷰 보내기 λ²„νŠΌμ„ 눌러 거래λ₯Ό μ™„λ£Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 거래λ₯Ό μ™„λ£Œν•œ 경우 κ²Œμ‹œκΈ€μ˜ μ§„ν–‰ μƒνƒœκ°€ μ™„λ£Œλ¨ 으둜 λ³€κ²½λ©λ‹ˆλ‹€.
      • 리뷰: λ¦¬λ·°λŠ” λ²„νŠΌ ν† κΈ€ ν˜•μ‹μœΌλ‘œ μ›ν•˜λŠ” ν•­λͺ©μ„ μ„ νƒν•˜μ—¬ μž‘μ„± κ°€λŠ₯ν•©λ‹ˆλ‹€.

9. λž­ν‚Ή

/ranking

Animation (1).gif

  • 20λͺ… λ‹¨μœ„λ‘œ νŽ˜μ΄μ§€λ„€μ΄μ…˜μ΄ 적용된 λž­ν‚Ή νŽ˜μ΄μ§€μž…λ‹ˆλ‹€.
  • λž­ν‚Ή μ •λ³΄λŠ” λ§€ 정각에 μžλ™ κ°±μ‹ λ˜λ©° λ§€ μ‹œμ¦Œ(λΆ„κΈ°)λ§ˆλ‹€ λ¦¬μ…‹λ©λ‹ˆλ‹€.
  • 각각의 μˆœμœ„, 이름, 보유 ν‹°λŒ, 거래횟수λ₯Ό 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 검색: μ‚¬μš©μžλͺ…(이름)을 μž…λ ₯ν•˜μ—¬ λž­ν‚Ή 검색이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • λ‚˜μ˜ λž­ν‚Ή: λ‚˜μ˜ λž­ν‚Ή μ •λ³΄λŠ” ν•˜λ‹¨μ— κ³ μ •λœ ν˜•νƒœλ‘œ μ‘°νšŒκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

10. ν™˜μ „

/exchange

Animation (11).gif

  • μžμ‹ μ΄ λ³΄μœ ν•œ μž¬ν™”μΈ μ‹œκ°„μ„ ν‹°λŒλ‘œ, ν‹°λŒμ„ μ‹œκ°„μœΌλ‘œ ν™˜μœ¨μ— 따라 ν™˜μ „μ΄ κ°€λŠ₯ν•œ ν™˜μ „ νŽ˜μ΄μ§€μž…λ‹ˆλ‹€.
  • ν˜„μž¬ ν™˜μœ¨, ν™˜μœ¨ 변동 λ‚΄μ—­ 차트, λ‚˜μ˜ 보유 μ‹œκ°„, λ‚˜μ˜ 보유 ν‹°λŒ, μ΅œλŒ€ ν™˜μ „ κ°€λŠ₯ν•œ μž¬ν™”λŸ‰μ„ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • ν™˜μ „: ν™˜μ „μ„ μ›ν•˜λŠ” 만큼 μ‹œκ°„ λ‹¨μœ„λ‘œ μž…λ ₯ ν›„ ꡬ맀 λ²„νŠΌμ„ 눌러 ν™˜μ „μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • μž…λ ₯ν•œ μ‹œκ°„μ— 따라 ν™˜μ „λ  μž¬ν™”λŸ‰μ΄ ν˜„μž¬ ν™˜μœ¨λ‘œ κ³„μ‚°λ˜μ–΄ ν‘œμ‹œλ©λ‹ˆλ‹€.

11. λ§ˆμ΄νŽ˜μ΄μ§€

  • μžμ‹ μ˜ ν”„λ‘œν•„ 사진, 이름, 이메일을 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • λ‘œκ·Έμ•„μ›ƒ: λ‘œκ·Έμ•„μ›ƒ λ²„νŠΌμ„ 눌러 λ‘œκ·Έμ•„μ›ƒμ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

Animation (3).gif

/mypage/activity

  • λ‚˜μ˜ κ²Œμ‹œκΈ€: μžμ‹ μ΄ μž‘μ„±ν•œ κ²Œμ‹œκΈ€μ„ μ§„ν–‰ μƒνƒœμ— 따라 λΆ„λ₯˜ν•˜μ—¬ μΉ΄λ“œ ν˜•νƒœλ‘œ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.

/mypage/trade

  • λ‚˜μ˜ 보유 μ‹œκ°„: μžμ‹ μ˜ κ³„μ’Œ 정보 쀑 보유 μ‹œκ°„μ„ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • λ‚˜μ˜ 거래 λ‚΄μ—­: μžμ‹ μ˜ 거래 내역을 리슀트 ν˜•νƒœλ‘œ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€. 각 κ±°λž˜λ‚΄μ—­μ—μ„œλŠ” μƒλŒ€λ°©μ˜ ν”„λ‘œν•„ 사진과 이름, μ§„ν–‰ μƒνƒœ, κ²Œμ‹œκΈ€ 제λͺ©, 거래 μΌμ‹œ, κ±°λž˜ν•œ μ‹œκ°„(μž¬ν™”) 을 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • κ²Œμ‹œκΈ€ 제λͺ©μ„ 클릭 μ‹œ ν•΄λ‹Ήν•˜λŠ” κ²Œμ‹œκΈ€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
    • μΉ΄ν…Œκ³ λ¦¬: 전체, μ§„ν–‰μ „, 진행쀑, μ™„λ£Œλ¨ λ²„νŠΌμ„ 눌러 μ§„ν–‰ μƒνƒœμ— 따라 λΆ„λ₯˜ν•˜μ—¬ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • 검색: κ²Œμ‹œκΈ€ 제λͺ©μ„ 톡해 거래 λ‚΄μ—­ λ‚΄μ—μ„œ 검색이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

/mypage/exchange

  • λ‚˜μ˜ ν™˜μ „ λ‚΄μ—­: μžμ‹ μ˜ ν™˜μ „ 내역을 μ‹œκ°„μ„ ν‹°λŒλ‘œ λ°”κΎΌ λ‚΄μ—­, ν‹°λŒμ„ μ‹œκ°„μœΌλ‘œ λ°”κΎΌ λ‚΄μ—­ 의 2κ°€μ§€ 리슀트 ν˜•νƒœλ‘œ 쑰회 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • 각 ν™˜μ „ λ‚΄μ—­μ—μ„œλŠ” κ±°λž˜ν•œ μ‹œκ°„, ν‹°λŒμ˜ μ–‘κ³Ό ν™˜μ „ μΌμ‹œλ₯Ό 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ ν›„κΈ°

κΉ€μ„±μœ€

  • Next.jsλ₯Ό 처음 μ‚¬μš©ν•΄ 보며 SSR(Server-Side Rendering)κ³Ό CSR(Client-Side Rendering)을 λ Œλ”λ§ λͺ©μ μ— 따라 κ΅¬λΆ„ν•˜μ—¬ νŽ˜μ΄μ§€λ₯Ό κ°œλ°œν•˜λŠ” κ²½ν—˜μ„ ν–ˆμŠ΅λ‹ˆλ‹€. SSR을 톡해 초기 λ‘œλ”© 속도λ₯Ό κ°œμ„ ν•˜κ³ , SEOλ₯Ό κ°•ν™”ν•  수 μžˆμ—ˆμœΌλ©°, CSR을 적절히 ν™œμš©ν•˜μ—¬ μ‚¬μš©μž μΈν„°λž™μ…˜μ΄ μ€‘μš”ν•œ νŽ˜μ΄μ§€μ—μ„œλŠ” 보닀 λΉ λ₯Έ ν™”λ©΄ μ „ν™˜μ„ κ΅¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ 각 λ Œλ”λ§ λ°©μ‹μ˜ μž₯단점을 싀무에 μ μš©ν•˜λ©° ν•™μŠ΅ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • Zustandλ₯Ό μ‚¬μš©ν•΄ μƒνƒœ 관리λ₯Ό μ μš©ν•΄ λ³΄μ•˜λŠ”λ°, μ‚¬μš© 방법이 κ°„λ‹¨ν•˜λ©΄μ„œλ„ λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ„ 쀄일 수 μžˆμ–΄μ„œ μ„±λŠ₯ μ΅œμ ν™”μ— 큰 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 특히, ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 컀짐에 따라 μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μƒνƒœλ₯Ό κ³΅μœ ν•  λ•Œ 맀우 μ§κ΄€μ μœΌλ‘œ 관리할 수 μžˆμ—ˆλ˜ 점이 μΈμƒμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μƒνƒœ 관리 λΌμ΄λΈŒλŸ¬λ¦¬μ™€ λΉ„κ΅ν–ˆμ„ λ•Œ, ZustandλŠ” κ°€λ²Όμš°λ©΄μ„œλ„ ν™•μž₯성이 μžˆμ–΄ νŽΈλ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.
  • λ°±μ—”λ“œ REST APIκΉŒμ§€ 직접 κ°œλ°œν•΄ λ³΄μ•˜κ³ , 이λ₯Ό 톡해 ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œ κ°„μ˜ 데이터 톡신을 μ„€κ³„ν•˜κ³  κ΅¬ν˜„ν•˜λŠ” 과정을 κ²½ν—˜ν–ˆμŠ΅λ‹ˆλ‹€. API 섀계뢀터 κ΅¬ν˜„, ν…ŒμŠ€νŠΈκΉŒμ§€ μ§„ν–‰ν•˜λ©°, 각쒅 비동기 μ²˜λ¦¬μ™€ μ—λŸ¬ ν•Έλ“€λ§μ˜ μ€‘μš”μ„±μ„ λ‹€μ‹œκΈˆ κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ 데이터λ₯Ό μš”μ²­ν•˜κ³  μ²˜λ¦¬ν•˜λŠ” λ‘œμ§μ„ 직접 닀루며, API ꡬ쑰λ₯Ό 잘 μ„€κ³„ν•˜λŠ” 것이 μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€ κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€.
  • μƒνƒœ 관리 λΆ€λΆ„μ—μ„œλŠ” TanStack Query와 μ»€μŠ€ν…€ 훅을 μ‚¬μš©ν–ˆλŠ”λ°, 특히 TanStack QueryλŠ” μ„œλ²„ μƒνƒœ 관리에 μ΅œμ ν™”λœ κΈ°λŠ₯을 μ œκ³΅ν•΄ 비동기 데이터 μ²˜λ¦¬μ™€ 캐싱, 리페칭 λ“±μ˜ λ³΅μž‘ν•œ μž‘μ—…μ„ μ†μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ»€μŠ€ν…€ 훅을 ν™œμš©ν•΄ λ°˜λ³΅λ˜λŠ” λ‘œμ§μ„ μž¬μ‚¬μš© κ°€λŠ₯ν•œ ν˜•νƒœλ‘œ μΆ”μΆœν•˜λ©΄μ„œ μ½”λ“œμ˜ 가독성과 μœ μ§€ λ³΄μˆ˜μ„±μ„ 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μ†μ˜μ€€

μœ μ„œν˜„

  • Tailwind CSS와 Tanstack Queryλ₯Ό μƒˆλ‘­κ²Œ λ°°μ›Œ μ μš©ν•˜λ©°, 각 λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ˜ μž₯점을 잘 살리기 μœ„ν•΄ κ³΅λΆ€ν•˜λ©° μ„±μž₯ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μš°μ„  Tailwind CSS의 경우 μ²˜μŒμ—λŠ” ν΄λž˜μŠ€κ°€ λ„ˆλ¬΄ λ§Žμ•„ λ³΅μž‘ν•΄ λ³΄μ˜€μ§€λ§Œ, 점차 Tailwind의 μœ ν‹Έλ¦¬ν‹° 기반 μ ‘κ·Ό 방식 덕뢄에 λΉ λ₯΄κ³  μΌκ΄€λœ μŠ€νƒ€μΌλ§μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€. 특히 반볡적인 μŠ€νƒ€μΌλ§ μž‘μ—…μ„ 쀄여 생산성을 높일 수 μžˆμ—ˆμœΌλ©°, μœ μ§€λ³΄μˆ˜λ„ 훨씬 κ°„νŽΈν–ˆμŠ΅λ‹ˆλ‹€. λ‘˜μ§Έλ‘œ μ„œλ²„ μƒνƒœμ™€ ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜λŠ” 데 μžˆμ–΄ TanStack Query의 캐싱 및 리페치 κΈ°λŠ₯은 맀우 μœ μš©ν–ˆμŠ΅λ‹ˆλ‹€. 특히, 데이터λ₯Ό 효율적으둜 κ°€μ Έμ˜€κ³  μƒνƒœλ₯Ό 관리할 수 μžˆμ–΄μ„œ λ³΅μž‘ν•œ 비동기 톡신 λ‘œμ§μ„ λ‹¨μˆœν™”ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. API μš”μ²­κ³Ό κ΄€λ ¨λœ μ—λŸ¬ μ²˜λ¦¬μ™€ μž¬μ‹œλ„ κΈ°λŠ₯도 μ‰½κ²Œ 관리할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • ν”„λ‘œμ νŠΈμ—μ„œ κ°€μž₯ ν₯λ―Έλ‘œμ› λ˜ 뢀뢄은 μ‹€μ‹œκ°„ μ±„νŒ… κΈ°λŠ₯μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ SockJS와 STOMP ν”„λ‘œν† μ½œμ„ λ„μž…ν•˜μ—¬, μ‚¬μš©μž κ°„ μ‹€μ‹œκ°„ λ©”μ‹œμ§€ κ΅ν™˜μ„ κ΅¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ²˜μŒμ—λŠ” WebSocket 기반의 μ‹€μ‹œκ°„ 톡신 둜직이 λ‚―μ„€μ—ˆμœΌλ‚˜, 점차 μ΄ν•΄ν•˜λ©΄μ„œ STOMP ν΄λΌμ΄μ–ΈνŠΈλ₯Ό ν™œμš©ν•œ λ©”μ‹œμ§€ 전솑 및 μˆ˜μ‹  흐름을 읡히게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 덕뢄에 μ‹€μ‹œκ°„μœΌλ‘œ μ±„νŒ… λ‚΄μš©μ„ 화면에 ν‘œμ‹œν•˜κ³ , μŠ€ν¬λ‘€μ„ κ΄€λ¦¬ν•˜λŠ” λ“±μ˜ κΈ°λŠ₯을 μžμ—°μŠ€λŸ½κ²Œ κ΅¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • ν”„λ‘œμ νŠΈ 도쀑 κ°€μž₯ μ–΄λ €μ› λ˜ 뢀뢄은 약속 관리 μ‹œμŠ€ν…œμ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ±„νŒ…λ°© λ‚΄μ—μ„œ 약속을 작고, μ‚­μ œν•˜κ±°λ‚˜ μ™„λ£Œν•˜λŠ” λ‘œμ§μ„ μ„€κ³„ν•˜λŠ” 데 λ§Žμ€ 고민이 ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. 특히 비동기 데이터 처리λ₯Ό ν•  λ•Œ, 약속 데이터와 μ±„νŒ… 데이터 κ°„μ˜ μƒν˜Έμž‘μš©μ„ κ΄€λ¦¬ν•˜λŠ” 것이 쉽지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” μƒνƒœ 관리와 API 리페칭 λ‘œμ§μ„ λͺ…ν™•νžˆ λ‚˜λˆ„λŠ” ꡬ쑰 섀계λ₯Ό ν•˜μ—¬ λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ μ²˜λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

이규빈

  • ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° μˆ˜μš”μ™€ 곡급을 κ³ λ €ν•œ 자체 ν™˜μœ¨ 계산 λ‘œμ§μ„ μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€. 특히 뢀동 μ†Œμˆ˜μ  κ³„μ‚°μ—μ„œ 정확성이 μ€‘μš”ν•˜λ‹€λŠ” 점을 κ²½ν—˜ν–ˆκ³ , μΆ”ν›„ 더 μ •ν™•ν•œ 계산을 μœ„ν•΄ BigDecimal 클래슀λ₯Ό λ„μž…ν•  κ³„νšμž…λ‹ˆλ‹€.
  • λž­ν‚Ήκ³Ό 같은 데이터λ₯Ό μ‘°νšŒν•  λ•Œ 속도 μ΅œμ ν™”κ°€ ν•„μš”ν•¨μ„ 느끼고, 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Redis μΊμ‹œλ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€. Redisλ₯Ό ν™œμš©ν•œ 캐싱 과정을 톡해 데이터 쑰회 μ„±λŠ₯을 ν–₯μƒμ‹œν‚€κ³ , κ΄€λ ¨ κΈ°μˆ μ„ ν•™μŠ΅ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • νŒ€μ›λ“€κ³Ό ν•¨κ»˜ ν™˜μœ¨ μ•Œκ³ λ¦¬μ¦˜κ³Ό 같은 처음 μ ‘ν•˜λŠ” 도메인에 λŒ€ν•΄ κ³ λ―Όν•˜κ³  ν•΄κ²°ν•˜λŠ” κ³Όμ •μ—μ„œ, μƒˆλ‘œμš΄ κ°œλ…κ³Ό 문제λ₯Ό μ΄ν•΄ν•˜κ³  μ μš©ν•˜λŠ” λŠ₯λ ₯을 ν‚€μšΈ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

ν‘œλ‹€μ˜

  • μ „λ°˜μ μΈ ν™”λ©΄ λ””μžμΈμ„ λ‹΄λ‹Ήν•˜λ©΄μ„œ UI/UXλ₯Ό 고렀함과 λ™μ‹œμ— νŒ€μ›λ“€μ˜ λ§ˆν¬μ—… νš¨μœ¨μ„±μ„ 높이기 μœ„ν•œ 방법을 κ³ λ―Όν•˜λŠ” κΈ°νšŒκ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • λ””μžμΈ 토큰을 λΆ„λ¦¬ν•˜μ—¬ λ³€μˆ˜λ‘œ μ„€μ •ν•˜κ³  tailwind configλ₯Ό 톡해 μ»€μŠ€ν…€ λ””μžμΈ μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•˜λ©΄μ„œ tailwind에 λŒ€ν•œ 이해와 μ»€μŠ€ν…€ν•˜λŠ” 방법에 λŒ€ν•΄ 배울 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ μ²˜μŒμ— emotion을 μ‚¬μš©ν•˜λ € ν–ˆμœΌλ‚˜ server component 지원이 μ•ˆλœλ‹€λŠ” 이유둜 next.jsμ—μ„œ tailwindλ₯Ό μΆ”μ²œν•˜λŠ” μ΄μœ μ— λŒ€ν•΄ κ³΅λΆ€ν•˜μ˜€μœΌλ©°, 이λ₯Ό 톡해 μ„œλ²„ λ Œλ”λ§ μ‹œ λΉŒλ“œ νƒ€μž„μ— μŠ€νƒ€μΌμ΄ μ™„μ„±λ˜λŠ” tailwind의 λ™μž‘ 원리에 λŒ€ν•΄ κΉŠμ€ 이해λ₯Ό ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • TypeScript와 Axiosλ₯Ό ν™œμš©ν•΄ μ»€μŠ€ν…€ API Handlerλ₯Ό μž‘μ„±ν•˜μ—¬ μ•ˆμ „ν•˜κ³  효율적인 API μ†Œν†΅μ„ ν•  수 μžˆμ—ˆμœΌλ©°, μ œκ°€ λ§Œλ“  μ½”λ“œλ₯Ό λ‹€λ₯Έ νŒ€μ›λ“€μ΄ ν™œμš©ν•  수 μžˆλ„λ‘ ν•˜μ—¬ ν†΅μΌλœ μ»¨λ²€μ…˜μ„ 맞좜 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœκ΄€λ¦¬λŠ” zustand, μ„œλ²„ μƒνƒœκ΄€λ¦¬λŠ” tanstack queryλ₯Ό ν™œμš©ν•˜μ—¬ λΆ„λ¦¬ν•˜μ—¬ μƒνƒœμ˜ νŠΉμ„±μ— 맞게 κ΄€λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μƒνƒœμ˜ ν™•μ‹€ν•œ 뢄리와 특히 tansktack query의 캐싱, refresh κΈ°λŠ₯ 등에 λŒ€ν•œ 이해λ₯Ό λ†’μ˜€μŠ΅λ‹ˆλ‹€.
  • 기본적으둜 SSR둜 λ™μž‘ν•˜λŠ” Next.jsμ—μ„œ λ°œμƒν•˜λŠ” Hydration μ—λŸ¬λ₯Ό useEffect 훅을 μ΄μš©ν•΄ ν•΄κ²°ν•˜λ©΄μ„œ SSR의 λ™μž‘ 방식과 μ—λŸ¬ 해결에 λŒ€ν•œ 이해λ₯Ό 얻을 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

ν—ˆλ™λ―Ό

  • 처음 μ‚¬μš©ν•΄λ³΄λŠ” 기술 μŠ€νƒμΈ λŒ€κ·œλͺ¨ 이벀트 브둜컀 Kafka와 NoSQL MongoDBλ₯Ό ν•™μŠ΅ 및 μ μš©ν•΄λ³΄λ©° μƒˆλ‘œμš΄ μΈμ‚¬μ΄νŠΈλ₯Ό 얻을 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • Kafka Topic μ „λž΅μ„ 생각해보고 MongoDB λΉ„μ •ν˜• 데이터 μ €μž₯ 방식을 섀정해보며 λ‹¨μˆœ κ°œλ°œμ„ λ„˜μ–΄ 효율적인 νŠΈλž˜ν”½ 및 데이터 관리λ₯Ό κ²½ν—˜ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • νŒ€μ›λ“€κ³Ό ν˜‘μ—…ν•˜λ©° 였λ₯˜λ₯Ό ν•΄κ²°ν•˜λŠ” 과정을 톡해 νŒ€μ›μ—κ²Œ λ§Žμ€ 것을 배울 수 μžˆμ—ˆκ³  νŠΈλŸ¬λΈ”μŠˆνŒ… ν•΄κ²° λŠ₯λ ₯을 κΈ°λ₯Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7