Skip to content

woorifisa-projects-3rd/Quostomize-FE

Repository files navigation

readme_ν”„λ‘ νŠΈμ—”λ“œ_v3

πŸ“Œ Quostomize-fe: 우리 μ»€μŠ€ν„°λ§ˆμ΄μ§•

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

우리 μ»€μŠ€ν„°λ§ˆμ΄μ§•(QUOSTOMIZE) 은 μ‚¬μš©μžκ°€ 맀달 μžμ‹ μ˜ μƒν™œ νŒ¨ν„΄κ³Ό μ·¨ν–₯에 맞게 μΉ΄λ“œ ν˜œνƒκ³Ό 포인트 μ‚¬μš©μ²˜λ₯Ό 직접 선택할 수 μžˆλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

μ‚¬μš©μžκ°€ 직접 κ²°μ •ν•˜λŠ” λ§žμΆ€ν˜• ν˜œνƒ μ œκ³΅μ„ 톡해 κΈ°μ‘΄ μΉ΄λ“œ μ„œλΉ„μŠ€μ˜ ν•œκ³„λ₯Ό λ›°μ–΄λ„˜κ³ , λ³€ν™”ν•˜λŠ” μ†ŒλΉ„ νŠΈλ Œλ“œμ— μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•©λ‹ˆλ‹€.


πŸš€ μ£Όμš” 섀계 λ°©ν–₯

λ³Έ ν”„λ‘œμ νŠΈλŠ” μ„œλΉ„μŠ€ λ³΄μ•ˆκ³Ό μ•ˆμ •μ„± κ°•ν™”λ₯Ό μ£Όμš” 섀계 λ°©ν–₯으둜 두고 κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

1. λ³΄μ•ˆκ³Ό μ•ˆμ •μ„± κ°•ν™”

  • Next.js + Auth.js
    • 토큰을 λΈŒλΌμš°μ € μΏ ν‚€ λŒ€μ‹  μ„œλ²„ μ„Έμ…˜μ— μ €μž₯ν•˜μ—¬ 데이터 직접 λ…ΈμΆœ 방지
  • Next.js API Route
    • ν΄λΌμ΄μ–ΈνŠΈ-λ°±μ—”λ“œ κ°„ 직접 톡신을 차단해 헀더 정보 및 API μ£Όμ†Œ 보호
  • JWT λ³΄μ•ˆ κ°•ν™”
    • λΉ„λ°€λ²ˆν˜ΈλŠ” 단방ν–₯ μ•”ν˜Έν™”, κ°œμΈμ •λ³΄λŠ” μ–‘λ°©ν–₯ μ•”ν˜Έν™” 적용
    • Acess/Refresh Token 검증 및 Blacklist 둜직 μΆ”κ°€λ‘œ λ³΄μ•ˆ μˆ˜μ€€ ν–₯상

2. λ©±λ“±μ„± 적용

  • Redisλ₯Ό ν™œμš©ν•œ λ©±λ“±ν‚€ κ΄€λ¦¬λ‘œ μΉ΄λ“œ 생성 μš”μ²­ 쀑볡 처리 방지
  • λ™μΌν•œ μš”μ²­μ€ μΊμ‹œλœ 응닡 λ°˜ν™˜μœΌλ‘œ νš¨μœ¨μ„±κ³Ό μ•ˆμ •μ„± 확보

3. λŒ€λŸ‰ 데이터 처리

  • 배치 ν”„λ‘œμ„ΈμŠ€: 볡ꢌ 응λͺ¨ 데이터λ₯Ό 맀일 정해진 μ‹œκ°„μ— 처리
    • Redaer: 1000λͺ… 데이터 μ½μ–΄μ˜€κΈ°
    • Processor: 응λͺ¨μž 쀑 λ‹Ήμ²¨μž μ„ μ •
    • Writer: 당첨 κ²°κ³Ό 기둝

4. μ½”λ“œ ν’ˆμ§ˆ 관리

  • SonarQubeλ₯Ό ν†΅ν•œ 정적 μ½”λ“œ λΆ„μ„μœΌλ‘œ μ½”λ“œ ν’ˆμ§ˆ μœ μ§€
  • DB Lock으둜 λ™μ‹œμ„± 문제 ν•΄κ²°
  • 비동기 처리 κ°•ν™”λ‘œ μ•ˆμ •μ μΈ μ˜ˆμ™Έ 처리 κ΅¬ν˜„

πŸ”§ μ£Όμš” κΈ°λŠ₯

1. μΉ΄λ“œ ν˜œνƒ - ν˜œνƒ μ„ νƒμ˜ 자유 34

  • μƒμœ„λΆ„λ₯˜ ν˜œνƒ: 5가지 μƒμœ„λΆ„λ₯˜ 선택 μ‹œ λͺ¨λ“  κ°€λ§Ήμ μ—μ„œ 3% 적립
  • λ§žμΆ€ν˜• ν˜œνƒ: μ„ΈλΆ€ 가맹점 κ·Έλ£Ή 선택 μ‹œ μ΅œλŒ€ 4% 적립
  • μœ μ—°ν•œ λ³€κ²½: 30μΌλ§ˆλ‹€ ν˜œνƒ λ³€κ²½ κ°€λŠ₯

2. 포인트 μ‚¬μš©μ²˜ - 포인트 μ‚¬μš©μ˜ λ‹€μ–‘μ„± 33

  • 페이백: μΉ΄λ“œ κ²°μ œμΌμ— 포인트λ₯Ό ν˜„κΈˆμ²˜λŸΌ μ‚¬μš©
  • 쑰각투자: μ›ν•˜λŠ” 주식을 μ„€μ •ν•˜κ³  포인트둜 주식 맀수
  • 일일볡ꢌ: 맀일 μžμ • μΆ”μ²¨μœΌλ‘œ μ΅œλŒ€ 1만 포인트 지급

3. μΉ΄λ“œ 생성 - μ‹€μ œ μΉ΄λ“œ 생성 ν”„λ‘œμ„ΈμŠ€μ™€ 멱등성을 μ μš©ν•œ 생성 κΈ°λŠ₯ μ»€μŠ€ν„° λ§ˆμ΄μ§• μ„œλΉ„μŠ€ (2)

4. 주식 κΈ°λŠ₯ μ»€μŠ€ν„° λ§ˆμ΄μ§• μ„œλΉ„μŠ€ (3)

  • RestClientλ₯Ό ν™œμš©ν•œν•œκ΅­νˆ¬μžμ¦κΆŒ OPENAPI와 연동
  • Access Token λ°œκΈ‰ & 보유 주식 정보 κΈ°λŠ₯
  • S3λ₯Ό ν™œμš©ν•œ 주식 이미지 λ‹€μš΄λ‘œλ“œ

5. 볡ꢌ κΈ°λŠ₯ μ»€μŠ€ν„° λ§ˆμ΄μ§• μ„œλΉ„μŠ€ (4)

  • Spring Batchλ₯Ό ν™œμš©ν•΄ 볡ꢌ κΈ°λŠ₯을 ν™œμ„±ν™”ν•œ μ‚¬μš©μž 집계
  • μžμ •(00:00)에 1/1000 ν™•λ₯ λ‘œ 포인트 νšλ“


βš™οΈ 기술 μŠ€νƒ

image

🌐 ν”„λ‘ νŠΈ 배포 νŒŒμ΄ν”„λΌμΈ

κ΄€λ¦¬μž νŽ˜μ΄μ§€λŠ” Vercel을 μ΄μš©ν•΄ 배포λ₯Ό μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. Vercel λŒ€μ‹œλ³΄λ“œλ₯Ό 톡해 배포 μƒνƒœλ₯Ό ν•œλˆˆμ— 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

배포 κ³Όμ •

  1. 컀밋 ν‘Έμ‹œ: Github에 브랜치둜 ν‘Έμ‹œν•©λ‹ˆλ‹€.
  2. Vercel 배포: 메인 브랜치 병합 ν›„ Vercel에 λ°°ν¬ν•©λ‹ˆλ‹€.
  3. μ‹€μ‹œκ°„ μ—…λ°μ΄νŠΈ: Vercel을 톡해 κ΄€λ¦¬μž μ‚¬μ΄νŠΈκ°€ μ¦‰μ‹œ μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€.

πŸ“Š 인프라 ꡬ쑰도

image

πŸ—‚οΈ μ£Όμš” 폴더 ꡬ쑰

root/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (fullscreen)/
β”‚   β”‚   β”œβ”€β”€ card-benefit-details/
β”‚   β”‚   β”œβ”€β”€ create-card/
β”‚   β”‚   β”œβ”€β”€ my-page/
β”‚   β”‚   β”œβ”€β”€ sign-up/
β”‚   β”‚   └── layout.jsx
β”‚   β”œβ”€β”€ (nav)/
β”‚   β”‚   β”œβ”€β”€ benefit-change/
β”‚   β”‚   β”œβ”€β”€ find-id/
β”‚   β”‚   β”œβ”€β”€ find-password/
β”‚   β”‚   β”œβ”€β”€ home/
β”‚   β”‚   β”œβ”€β”€ login/
β”‚   β”‚   β”œβ”€β”€ lotto/
β”‚   β”‚   β”œβ”€β”€ my-card/
β”‚   β”‚   β”œβ”€β”€ piece-stock/
β”‚   β”‚   β”œβ”€β”€ qna/
β”‚   β”‚   └── layout.jsx
β”‚   └── api/
β”‚       β”œβ”€β”€ auth/
β”‚       └── API 연결이 ν•„μš”ν•œ μ„œλΉ„μŠ€
β”‚           β”œβ”€β”€ (fullscreen κ΄€λ ¨ API)
β”‚           β”œβ”€β”€ (nav κ΄€λ ¨ API)
β”‚           └── 기타 곡톡 API
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ box/
β”‚   β”œβ”€β”€ bubble/
β”‚   β”œβ”€β”€ button/
β”‚   β”œβ”€β”€ calendar/
β”‚   β”œβ”€β”€ card/
β”‚   β”œβ”€β”€ graph/
β”‚   β”œβ”€β”€ header/
β”‚   β”œβ”€β”€ navigationbar/
β”‚   └── overlay/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ cards-images/
β”‚   β”œβ”€β”€ icons/
β”‚   β”œβ”€β”€ images/
β”‚   └── lotties/
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ loginValid.js
β”‚   └── getYYYYMMDDDate.js
β”œβ”€β”€ auth.js
β”œβ”€β”€ middleware.js
β”œβ”€β”€ jsconfig.json
β”œβ”€β”€ next.config.mjs
β”œβ”€β”€ tailwind.config.js
β”œβ”€β”€ .env.local
β”œβ”€β”€ package.json
β”œβ”€β”€ pnpm-lock.yaml
└── postcss.config.js

πŸ“… 진행 일정 (20Days)

  • ν”„λ‘œμ νŠΈ μ‹œμž‘μΌ: 2024.11.19.
  • ν”„λ‘œμ νŠΈ μ’…λ£ŒμΌ: 2024.12.08.

πŸ’» 개발 ν™˜κ²½

μΉ΄ν…Œκ³ λ¦¬ 라이브러리 μ„€λͺ…
ν”„λ ˆμž„μ›Œν¬ & μ½”μ–΄ Next.js (v15.0.2) React 기반의 ν’€μŠ€νƒ μ›Ή ν”„λ ˆμž„μ›Œν¬λ‘œ SSR 및 SSGλ₯Ό 지원
React (v18.3.1) μ„ μ–Έν˜• μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ°œλ°œν•˜κΈ° μœ„ν•œ 라이브러리
UI & μ•„μ΄μ½˜μ½˜ Emotion (v11.13) CSS-in-JS 방식을 μ§€μ›ν•˜μ—¬ 동적 μŠ€νƒ€μΌλ§μ„ κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„
Material-UI (v6.1.7) Google의 Material Design 기반 UI μ»΄ν¬λ„ŒνŠΈ 라이브러리
Headless UI (v2.2.0) μ ‘κ·Όμ„± ν‘œμ€€μ„ μ€€μˆ˜ν•˜λŠ” UI μ»΄ν¬λ„ŒνŠΈ 라이브러리, λ””μžμΈ μ»€μŠ€ν„°λ§ˆμ΄μ§• 용이
Floating UI (v0.26.28) νŒμ˜€λ²„, 툴팁 λ“± UI μš”μ†Œμ˜ μœ„μΉ˜λ₯Ό μ •κ΅ν•˜κ²Œ μ œμ–΄
Lucide React (v0.460.0) λͺ¨λ˜ν•œ μŠ€νƒ€μΌμ˜ μ˜€ν”ˆμ†ŒμŠ€ μ•„μ΄μ½˜ μ„ΈνŠΈ
React Icons (v5.3.0) λ‹€μ–‘ν•œ μŠ€νƒ€μΌμ˜ μ•„μ΄μ½˜μ„ μ§€μ›ν•˜λŠ” React μ•„μ΄μ½˜ 라이브러리
Material Icons (v1.13.12) Google의 Material Design κ°€μ΄λ“œ 기반 μ•„μ΄μ½˜
인증 NextAuth.js (v5.0.0-beta.25) OAuth, Credentials λ“± λ‹€μ–‘ν•œ 인증 방식을 κ°„νŽΈν•˜κ²Œ κ΅¬ν˜„
μ• λ‹ˆλ©”μ΄μ…˜ & μ‹œκ° 효과 GSAP (v3.12.5) κ³ μ„±λŠ₯ μ• λ‹ˆλ©”μ΄μ…˜, νƒ€μž„λΌμΈ 기반의 μ• λ‹ˆλ©”μ΄μ…˜ κ΅¬ν˜„
Lottie Web (v5.12.2) After Effects μ• λ‹ˆλ©”μ΄μ…˜μ„ μ›Ήμ—μ„œ JSON 파일둜 μ‰½κ²Œ μž¬μƒ
Canvas Confetti (v1.9.3) μΊ”λ²„μŠ€λ₯Ό ν™œμš©ν•œ κ°€λ²Όμš΄ μ»¨νŽ˜ν‹° 효과 제곡
React Slot Counter (v3.0.1) 숫자λ₯Ό μ• λ‹ˆλ©”μ΄μ…˜μœΌλ‘œ μΉ΄μš΄νŒ…ν•˜λŠ” κΈ°λŠ₯ 제곡
데이터 μ‹œκ°ν™” Chart.js (v4.4.6) λ°˜μ‘ν˜• 차트λ₯Ό μ‰½κ²Œ 생성할 수 μžˆλŠ” 데이터 μ‹œκ°ν™” 라이브러리
Chartjs Plugin Datalabels (v2.2.0) μ°¨νŠΈμ— 데이터 라벨을 μΆ”κ°€ν•˜μ—¬ 정보λ₯Ό μ‹œκ°μ μœΌλ‘œ κ°•μ‘°
μœ ν‹Έλ¦¬ν‹° UUID (v11.0.3) μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” 고유 μ‹λ³„μžλ₯Ό 생성
js-cookie (v3.0.5) λΈŒλΌμš°μ € μΏ ν‚€λ₯Ό κ°„νŽΈν•˜κ²Œ μ„€μ •ν•˜κ³  관리
React Intersection Observer (v9.13.1) νŠΉμ • μš”μ†Œκ°€ λ·°ν¬νŠΈμ— λ“€μ–΄μ™”λŠ”μ§€ κ°μ§€ν•˜μ—¬ lazy loading λ“± κΈ°λŠ₯ κ΅¬ν˜„
E2E ν…ŒμŠ€νŠΈ Cypress (v13.16.1) λΈŒλΌμš°μ € 기반의 End-to-End(E2E) ν…ŒμŠ€νŠΈ μˆ˜ν–‰

✍️ μ»¨λ²€μ…˜

컀밋 μ»¨λ²€μ…˜

  • {Tag}/{μž‘μ—… λ‚΄μš©}
Feat/input : λΉ„λ°€λ²ˆν˜Έ μˆ¨κΉ€ 처리
  • 컀밋 κ·œμΉ™
Tag Name Description
Feat μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€
Fix 버그 μˆ˜μ •
Design CSS λ“± μ‚¬μš©μž UI λ””μžμΈ λ³€κ²½
!BREAKING CHANGE μ»€λ‹€λž€ API λ³€κ²½μ˜ 경우
!HOTFIX 치λͺ…적인 버그 κΈ΄κΈ‰ μˆ˜μ •
Style μ½”λ“œ 포맷 λ³€κ²½, μ„Έλ―Έμ½œλ‘  λˆ„λ½ λ“±
Refactor ν”„λ‘œλ•μ…˜ μ½”λ“œ λ¦¬νŒ©ν† λ§
Comment 주석 μΆ”κ°€ 및 λ³€κ²½
Docs λ¬Έμ„œ μˆ˜μ •
Test ν…ŒμŠ€νŠΈ μ½”λ“œ μΆ”κ°€ λ˜λŠ” μˆ˜μ •
Chore λΉŒλ“œ 업무 μˆ˜μ • 및 νŒ¨ν‚€μ§€ 관리 μ—…λ°μ΄νŠΈ
Rename 파일/폴더λͺ… μˆ˜μ •
Remove 파일/폴더 μ‚­μ œ

초기 ν˜‘μ—… μ‹œ μ£Όμ˜μ‚¬ν•­

  • νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €λŠ” pnpm을 μ‚¬μš©ν•©λ‹ˆλ‹€.
    • npm install -g pnpm
    • pnpm install
  • navbarκ°€ μ‘΄μž¬ν•˜λŠ” νŽ˜μ΄μ§€ κ΅¬ν˜„ μ‹œ app/(nav) 폴더 ν•˜μœ„μ— μž‘μ„±ν•©λ‹ˆλ‹€.
  • navbarκ°€ μ—†λŠ” νŽ˜μ΄μ§€ κ΅¬ν˜„ μ‹œ app/(fullscreen) 폴더 ν•˜μœ„μ— μž‘μ„±ν•©λ‹ˆλ‹€.
  • 쀑볡 κ°€λŠ₯성이 μžˆκ±°λ‚˜ νŽ˜μ΄μ§€κ°€ λ„ˆλ¬΄ κΈΈμ–΄μ Έμ„œ 뢄리가 ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈμ˜ 경우 λΆ„λ¦¬ν•œ νŒŒμΌμ€ components ν΄λ”μ˜ 같은 이름을 κ°€μ§€λŠ” ν•˜μœ„ 폴더에 μƒμ„±ν•©λ‹ˆλ‹€.
  • λ§Œμ•½ 화면에 ν‘œμ‹œν•˜λŠ” 것 μ™Έμ˜ 둜직이 길어지면 ν•„μš”ν•˜λ©΄ utils 폴더에 js파일 μž‘μ„±ν•©λ‹ˆλ‹€.
  • μ•„μ΄μ½˜ μ‚¬μš© μ‹œ https://marella.me/material-icons/demo/ νŽ˜μ΄μ§€μ—μ„œ 탐색 ν›„ μ—†μœΌλ©΄ 파일둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

πŸ§‘β€πŸ€β€πŸ§‘ νŒ€μ› μ†Œκ°œ

기남석 κΉ€μ˜μ„± κΉ€ν˜„μš°
기남석 κΉ€μ˜μ„± κΉ€ν˜„μš°
총괄 νŒ€μž₯
Frontend νŒ€μž₯
FullStack 개발
FullStack 개발 νŒ€μ› Backend νŒ€μž₯
FullStack 개발
ν”„λ‘ νŠΈ ν”„λ‘œμ νŠΈ μ„ΈνŒ…
ν”„λ‘ νŠΈ 인증/인가
ν”„λ‘ νŠΈ CI/CD
기타 UI/κΈ°λŠ₯ κ΅¬ν˜„
투자 νŽ˜μ΄μ§€ κ΅¬ν˜„
νšŒμ›κ°€μž… νŽ˜μ΄μ§€ κ΅¬ν˜„
투자 API μ—°κ²°
νšŒμ›κ°€μž… API μ—°κ²°
μΉ΄λ“œ 생성 νŽ˜μ΄μ§€ κ΅¬ν˜„
μΉ΄λ“œ 생성 API μ—°κ²°
UUID둜 λ©±λ“±ν‚€ 생성
λ°©μ„±κ²½ μ˜€μ„ λ―Ό ν™μ°¬μ˜
λ°©μ„±κ²½ μ˜€μ„ λ―Ό ν™μ°¬μ˜
FullStack 개발 νŒ€μ› PM
FullStack 개발 νŒ€μ›
FullStack 개발 νŒ€μ›
-
-
-
μΉ΄λ“œ 상세 ν˜œνƒ νŽ˜μ΄μ§€ κ΅¬ν˜„
μΉ΄λ“œ 생성 νŽ˜μ΄μ§€ κ΅¬ν˜„
λ‚˜μ˜ μΉ΄λ“œ νŽ˜μ΄μ§€ API μ—°κ²°
μΉ΄λ“œ ν˜œνƒ λ³€κ²½ API μ—°κ²°
μΉ΄λ“œ 및 차트 μ• λ‹ˆλ©”μ΄μ…˜ κ΅¬ν˜„
μΉ΄λ“œ 생성 νŽ˜μ΄μ§€
SMS 인증 νŽ˜μ΄μ§€
둜그인 νŽ˜μ΄μ§€ API μ—°κ²°
QnA νŽ˜μ΄μ§€ API μ—°κ²°


πŸ“ 회고

νŒ€μ› μ΅œμ’… 회고 μž‘μ„±


μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œ.pdf

μ„œλΉ„μŠ€ μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œ.pdf

λΉ„μ¦ˆλ‹ˆμŠ€ν”„λ‘œμ„ΈμŠ€λͺ¨λΈ.pdf

WBS.pdf

DB μ„€κ³„μ„œ.pdf

πŸ”— κ΄€λ ¨ λ¬Έμ„œ 링크

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages