Skip to content

About

πŸ’˜ λΆ€λ‹΄ μ—†λŠ” 아바타 μ†Œκ°œνŒ…, μŠˆν”½

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

134 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

μŠˆν”½ ν”„λ‘œν•„ 탐색 화면이 λ‹΄κΈ΄ ν”„λ‘œμ νŠΈ 컀버

SSUPICK

사진 ν•œ μž₯을 AI μΊλ¦­ν„°λ‘œ λ°”κΎΈκ³ ,
μΆ•μ œμ—μ„œ μƒˆλ‘œμš΄ 인연을 λ°œκ²¬ν•˜λŠ” λͺ¨λ°”일 μ†Œκ°œνŒ… μ›Ή μ„œλΉ„μŠ€

μ„œλΉ„μŠ€ μ†Œκ°œ

μŠˆν”½μ€ μ‚¬μš©μžκ°€ μžμ‹ μ˜ μ‚¬μ§„μœΌλ‘œ AI 캐릭터 ν”„λ‘œν•„μ„ λ§Œλ“€κ³ , λ‹€λ₯Έ μ°Έμ—¬μžμ˜ ν”„λ‘œν•„μ„ 탐색할 수 μžˆλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. 카카였 κ³„μ •μœΌλ‘œ κ°„νŽΈν•˜κ²Œ μ‹œμž‘ν•΄ λ‹‰λ„€μž„, MBTI, λ§€λ ₯ ν‚€μ›Œλ“œμ™€ μ—°λ½μ²˜λ₯Ό λ“±λ‘ν•˜λ©°, ν”„λ‘œν•„ 쑰회 이용ꢌ으둜 관심 μžˆλŠ” μƒλŒ€μ˜ μ—°λ½μ²˜λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ°”일 μ‚¬μš© ν™˜κ²½μ„ μ€‘μ‹¬μœΌλ‘œ μ„€κ³„ν–ˆμœΌλ©°, λΈŒλΌμš°μ € λ„ˆλΉ„κ°€ 넓어져도 μ½˜ν…μΈ  μ˜μ—­μ„ μΌμ •ν•˜κ²Œ μœ μ§€ν•΄ μΌκ΄€λœ κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

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

κΈ°λŠ₯ μ„€λͺ…
카카였 둜그인 OAuth 인가 μ½”λ“œλ₯Ό λ°±μ—”λ“œμ— μ „λ‹¬ν•˜κ³  μ˜¨λ³΄λ”© μ™„λ£Œ 여뢀에 따라 μ§„μž… 화면을 λΆ„κΈ°ν•©λ‹ˆλ‹€.
AI ν”„λ‘œν•„ 생성 사진 μ—…λ‘œλ“œ, 미리보기, 이미지 μ••μΆ•, 생성 μƒνƒœ 확인, κ²°κ³Ό μ„ νƒκΉŒμ§€ λ‹¨κ³„ν˜• νλ¦„μœΌλ‘œ μ œκ³΅ν•©λ‹ˆλ‹€.
ν”„λ‘œν•„ 탐색 성별 필터와 μΉ΄λ“œ λͺ©λ‘μœΌλ‘œ μ°Έμ—¬μžλ₯Ό μ‚΄νŽ΄λ³΄κ³  상세 ν”„λ‘œν•„μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
μ—°λ½μ²˜ μ—΄λžŒ 이용ꢌ 보유 μ—¬λΆ€λ₯Ό ν™•μΈν•œ λ’€ μ—°λ½μ²˜λ₯Ό μ—΄λžŒν•˜κ³  ν΄λ¦½λ³΄λ“œμ— 볡사할 수 μžˆμŠ΅λ‹ˆλ‹€.
λ‚΄ 정보 관리 ν”„λ‘œν•„ μˆ˜μ •, 쑰회 이λ ₯ 확인, λ‘œκ·Έμ•„μ›ƒκ³Ό νšŒμ› νƒˆν‡΄λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

κ΅¬ν˜„ 포인트

λ™μ‹œ μš”μ²­μ—λ„ ν•œ 번만 μˆ˜ν–‰ν•˜λŠ” 토큰 μž¬λ°œκΈ‰

μ—¬λŸ¬ API μš”μ²­μ—μ„œ λ™μ‹œμ— 401이 λ°œμƒν•΄λ„ 토큰 μž¬λ°œκΈ‰ μš”μ²­μ€ ν•œ 번만 μ „μ†‘ν•©λ‹ˆλ‹€. μž¬λ°œκΈ‰ 쀑 λ“€μ–΄μ˜¨ μš”μ²­μ€ νμ—μ„œ λŒ€κΈ°ν•œ λ’€ μƒˆλ‘œμš΄ μ•‘μ„ΈμŠ€ ν† ν°μœΌλ‘œ λ‹€μ‹œ μ‹€ν–‰ν•˜λ©°, λ¦¬ν”„λ ˆμ‹œ ν† ν°κΉŒμ§€ 만료된 κ²½μš°μ—λŠ” 인증 μƒνƒœλ₯Ό μ •λ¦¬ν•˜κ³  μ„Έμ…˜ 만료 UIλ₯Ό λ…ΈμΆœν•©λ‹ˆλ‹€.

κΈ°λ‹€λ¦ΌκΉŒμ§€ μ„€κ³„ν•œ AI 이미지 생성 흐름

μ—…λ‘œλ“œ μ΄λ―Έμ§€λŠ” λΈŒλΌμš°μ €μ—μ„œ μ΅œλŒ€ 1280px, JPEG ν’ˆμ§ˆ 0.85둜 μ••μΆ•ν•΄ μ „μ†‘λŸ‰μ„ μ€„μž…λ‹ˆλ‹€. 생성 μ€‘μ—λŠ” 2초 κ°„κ²©μœΌλ‘œ μƒνƒœλ₯Ό ν™•μΈν•˜κ³ , μ‹€μ œ μ§„ν–‰λ₯ μ„ μ•Œ 수 μ—†λŠ” 비동기 μž‘μ—…μ˜ νŠΉμ„±μ„ κ³ λ €ν•΄ 90%에 μ κ·Όν•˜λŠ” μ§„ν–‰λ₯ κ³Ό 단계별 λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. μ™„λ£Œ 응닡이 λ„μ°©ν•˜λ©΄ 100%둜 μ „ν™˜ν•œ λ’€ κ²°κ³Ό ν™”λ©΄μœΌλ‘œ μžμ—°μŠ€λŸ½κ²Œ μ—°κ²°ν•©λ‹ˆλ‹€.

역할에 따라 λΆ„λ¦¬ν•œ μƒνƒœ 관리

  • TanStack QueryλŠ” ν”„λ‘œν•„, μΉ΄λ“œ λͺ©λ‘, 이미지 생성 μƒνƒœ 같은 μ„œλ²„ μƒνƒœμ™€ μΊμ‹œλ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • ZustandλŠ” 인증, μ„Έμ…˜ 만료, ν† μŠ€νŠΈμ²˜λŸΌ μ•± μ „μ—­μ—μ„œ κ³΅μœ ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœλ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • React Router의 보호 λΌμš°νŠΈλŠ” μΈμ¦λ˜μ§€ μ•Šμ€ μ‚¬μš©μžμ˜ μ„œλΉ„μŠ€ ν™”λ©΄ 접근을 μ°¨λ‹¨ν•©λ‹ˆλ‹€.

기술 μŠ€νƒ

μ˜μ—­ 기술
Core React 19, TypeScript, Vite
Styling Tailwind CSS v4, Pretendard
Routing React Router v7 Data Router
Server State TanStack Query
Client State Zustand
HTTP Axios
Validation Zod
Analytics Google Analytics 4
Package Manager pnpm

ν”„λ‘œμ νŠΈ ꡬ쑰

src/
β”œβ”€β”€ apps/          # λΌμš°ν„°, λ ˆμ΄μ•„μ›ƒ, 보호 라우트
β”œβ”€β”€ ui/            # 라우트 λ‹¨μœ„ νŽ˜μ΄μ§€
β”œβ”€β”€ components/    # 곡용 UI μ»΄ν¬λ„ŒνŠΈ
β”œβ”€β”€ features/      # 도메인별 API, ν›…, νƒ€μž…
β”œβ”€β”€ store/         # μ „μ—­ ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœ
β”œβ”€β”€ schemas/       # μž…λ ₯κ°’ 검증 μŠ€ν‚€λ§ˆ
β”œβ”€β”€ constants/     # λΌμš°νŠΈμ™€ 곡용 μƒμˆ˜
β”œβ”€β”€ utils/         # HTTP, 이미지 처리, 뢄석 μœ ν‹Έλ¦¬ν‹°
└── assets/        # 이미지, μ•„μ΄μ½˜, μ˜μƒ

μ‹œμž‘ν•˜κΈ°

μš”κ΅¬ 사항

  • Node.js
  • pnpm 10 이상

μ„€μΉ˜ 및 μ‹€ν–‰

pnpm install
cp .env.example .env
pnpm dev

κΈ°λ³Έ 개발 μ„œλ²„λŠ” http://localhost:5173μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

ν™˜κ²½ λ³€μˆ˜

λ³€μˆ˜ ν•„μˆ˜ μ„€λͺ…
VITE_KAKAO_CLIENT_ID O 카카였 OAuth ν΄λΌμ΄μ–ΈνŠΈ μ‹λ³„μž
VITE_KAKAO_REDIRECT_URI O 카카였 둜그인 μ™„λ£Œ ν›„ λŒμ•„μ˜¬ URI
VITE_IMAGE_BASE_URL O μƒλŒ€ 경둜 이미지에 μ‚¬μš©ν•  κΈ°λ³Έ URL
VITE_PAYMENT_ACCOUNT_NUMBER O 결제 화면에 ν‘œμ‹œν•  μž…κΈˆ κ³„μ’Œλ²ˆν˜Έ
VITE_PAYMENT_ACCOUNT_INFO O 결제 화면에 ν‘œμ‹œν•  은행 및 예금주 정보
VITE_GA_MEASUREMENT_ID X ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ μ‚¬μš©ν•  GA4 μΈ‘μ • ID

VITE_ 접두사가 뢙은 값은 ν΄λΌμ΄μ–ΈνŠΈ λ²ˆλ“€μ— ν¬ν•¨λ˜μ–΄ λΈŒλΌμš°μ €μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. API λΉ„λ°€ν‚€, λΉ„λ°€λ²ˆν˜Έ, μ„œλ²„ μ „μš© 토큰은 λ„£μ§€ λ§ˆμ„Έμš”.

슀크립트

pnpm dev          # 개발 μ„œλ²„ μ‹€ν–‰
pnpm build        # νƒ€μž… 검사 ν›„ ν”„λ‘œλ•μ…˜ λΉŒλ“œ
pnpm lint         # ESLint 검사
pnpm format:check # Prettier 포맷 검사
pnpm preview      # ν”„λ‘œλ•μ…˜ λΉŒλ“œ 미리보기
pnpm generate:api # OpenAPI λͺ…μ„Έλ‘œ API νƒ€μž… 생성

섀계 원칙

  • νŽ˜μ΄μ§€λŠ” 라우트 도메인 κΈ°μ€€μœΌλ‘œ κ΅¬μ„±ν•˜κ³ , 도메인 λ‘œμ§μ€ features에 λͺ¨μλ‹ˆλ‹€.
  • μ„œλ²„ λ°μ΄ν„°λŠ” Query μΊμ‹œλ₯Ό 단일 μ†ŒμŠ€λ‘œ μ‚¬μš©ν•˜λ©° μ „μ—­ μŠ€ν† μ–΄μ— λ³΅μ œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • λͺ¨λ“  λΌμš°νŠΈλŠ” 경둜 μƒμˆ˜λ‘œ κ΄€λ¦¬ν•˜κ³ , API 응닡은 곡톡 응닡 νƒ€μž…μœΌλ‘œ λ‹€λ£Ήλ‹ˆλ‹€.
  • 1rem을 10px둜 μ„€μ •ν•˜κ³  Tailwind spacing μˆ«μžκ°€ λ””μžμΈμ˜ px κ°’κ³Ό λŒ€μ‘ν•˜λ„λ‘ κ΅¬μ„±ν•©λ‹ˆλ‹€.

About

πŸ’˜ λΆ€λ‹΄ μ—†λŠ” 아바타 μ†Œκ°œνŒ…, μŠˆν”½

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages