Skip to content

Valuedi/Valuedi_Web

Repository files navigation

๐Ÿ’ฐ VALUEDI - ๋ฐธ๋ฅ˜๋””

๊ฐœ์ธ์˜ ์†Œ๋น„ ํŒจํ„ด ๋ฐ ๊ธˆ์œต ์„ฑํ–ฅ์„ ๋ถ„์„ํ•˜์—ฌ ์ตœ์ ํ™”๋œ ๋งž์ถคํ˜• ์ž์‚ฐ ๊ด€๋ฆฌ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๊ธˆ์œต ์†”๋ฃจ์…˜


๐ŸŒฟ Branch Strategy

ํšจ์œจ์ ์ธ ํ˜‘์—…์„ ์œ„ํ•ด ์ด์Šˆ/๊ธฐ๋Šฅ ๋‹จ์œ„์˜ ๋ธŒ๋žœ์น˜ ์ „๋žต๊ณผ Squash Merge ๋ฐฉ์‹ ์ฑ„ํƒ

๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ ๊ทœ์น™

ํ˜•์‹: ํƒœ๊ทธ/์ž‘์—…๋ช…

  • feat : ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • fix : ์˜ค๋ฅ˜ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ •
  • refactor : ์ฝ”๋“œ ๊ฐœ์„  ๋ฐ ๋ฆฌํŒฉํ† ๋ง
  • docs : ๋ฌธ์„œ ์ˆ˜์ •
  • chore : ๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ
  • ์˜ˆ์‹œ: feat/login, fix/login-error, refactor/main-api

๐Ÿงพ Commit Convention

ํ˜•์‹: ํƒœ๊ทธ: ์ž‘์—… ๋‚ด์šฉ ์š”์•ฝ

  • feat: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • fix: ์˜ค๋ฅ˜ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ •
  • docs: ๋ฌธ์„œ ์ˆ˜์ •
  • style: ์ฝ”๋“œ ํฌ๋งทํŒ…
  • refactor: ๋ฆฌํŒฉํ† ๋ง
  • rename: ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช… ์ˆ˜์ •
  • test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
  • remove: ํŒŒ์ผ ํ˜น์€ ํด๋” ์‚ญ์ œ
  • design: UI ์Šคํƒ€์ผ๋ง ๋ฐ ๋ ˆ์ด์•„์›ƒ ๊ฐœ์„ 
  • chore: ๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ
  • ์˜ˆ์‹œ:feat: ์ž์‚ฐ ๋‚ด์—ญ ํŽ˜์ด์ง€ ๊ตฌํ˜„, fix: ๋ชฉํ‘œ ๊ด€๋ฆฌ ๊ธˆ์•ก ๊ณ„์‚ฐ ์˜ค๋ฅ˜ ์ˆ˜์ •

๐Ÿš€ Tech Stack & Decision Making

๐Ÿงฉ Core Stack

React TypeScript Vite npm

  • React 18.2

    • React 19์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ (CVE-2025-55182)์„ ๊ณ ๋ คํ•˜์—ฌ ์•ˆ์ •์„ฑ์ด ๊ฒ€์ฆ๋œ ๋ฒ„์ „ ์ฑ„ํƒ
    • Concurrency Rendering ๋ฐ Automatic Batching์„ ํ™œ์šฉํ•œ UI ์‘๋‹ต์„ฑ ํ™•๋ณด
  • TypeScript

    • ์ •์  ํƒ€์ดํ•‘์„ ํ†ตํ•œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ์‚ฌ์ „ ๋ฐฉ์ง€ ๋ฐ ํŒ€ ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค ํ˜‘์—… ์•ˆ์ •์„ฑ ํ™•๋ณด
  • Vite

    • Webpack ๋Œ€๋น„ ๋น ๋ฅธ ๋นŒ๋“œ ์†๋„์™€ ํšจ์œจ์ ์ธ HMR์„ ํ†ตํ•œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ๊ทน๋Œ€ํ™”
  • npm

    • ํŒ€ ๋‚ด ํ‘œ์ค€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋กœ ์ฑ„ํƒํ•˜์—ฌ ์˜์กด์„ฑ ๊ด€๋ฆฌ ์ผ๊ด€์„ฑ ์œ ์ง€

๐Ÿ—‚๏ธ State & Data Fetching

Zustand TanStack Query Axios

  • Zustand

    • Context API์˜ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Redux ๋Œ€๋น„ ๊ฐ„๊ฒฐํ•œ ๊ตฌ์กฐ๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง ๊ฒฝ๋Ÿ‰ํ™”
  • TanStack Query v5

    • ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ ๋ณต์žกํ•œ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์˜ ์บ์‹ฑ, ์‹ ์„ ๋„ ๊ด€๋ฆฌ ๋ฐ HTTP ์š”์ฒญ ์ƒํƒœ๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ์ฒ˜๋ฆฌ
  • Axios

    • API ํ†ต์‹  ๋ ˆ์ด์–ด๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ ์ธํ„ฐ์…‰ํ„ฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐ ์—๋Ÿฌ ํ•ธ๋“ค๋ง

๐ŸŽจ Style & Interaction

Tailwind CSS PostCSS Framer Motion clsx tailwind-merge

  • Tailwind CSS

    • CSS-in-JS์˜ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ๋นŒ๋“œ ํƒ€์ž„ ์Šคํƒ€์ผ ์ƒ์„ฑ์„ ํ†ตํ•ด ๋ชจ๋ฐ”์ผ ์ตœ์ ํ™” ๋ฐ ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์„ฑ๋Šฅ ํ™•๋ณด
  • PostCSS

    • Tailwind CSS์˜ ํ•ต์‹ฌ ์—”์ง„์œผ๋กœ ํ™œ์šฉํ•˜๋ฉฐ, ์ตœ์‹  CSS ๋ฌธ๋ฒ•์„ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€์‘ํ•˜๋„๋ก ์ž๋™ ๋ณ€ํ™˜ํ•˜์—ฌ ํ˜ธํ™˜์„ฑ ๋ณด์žฅ
  • Framer-motion

    • react-spring ๋Œ€๋น„ ๋‚ฎ์€ ๋Ÿฌ๋‹ ์ปค๋ธŒ์™€ ์ง๊ด€์ ์ธ API๋ฅผ ๋ณด์œ ํ•˜์—ฌ ๋ฐ”ํ…€ ์‹œํŠธ ๋“ฑ ๊ณ ๋„ํ™”๋œ ์ธํ„ฐ๋ž™์…˜์„ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„
  • clsx / tailwind-merge

    • ๊ณต์šฉ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„ ์‹œ ์™ธ๋ถ€ ์ฃผ์ž… ์Šคํƒ€์ผ๊ณผ ๋‚ด๋ถ€ ๊ธฐ๋ณธ ์Šคํƒ€์ผ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์กฐ๊ฑด๋ถ€ ์Šคํƒ€์ผ ๊ฐ€๋…์„ฑ ํ™•๋ณด

๐Ÿ› ๏ธ Dev Tools

Storybook ESLint Prettier

  • Storybook:

    • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ถ„๋ฆฌ๋œ ๋…๋ฆฝ์  UI ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ ๋ฐ ํ…Œ์ŠคํŠธ ํŽธ์˜์„ฑ ์ œ๊ณ 
  • Vite-plugin-svgr

    • SVG ์ด๋ฏธ์ง€๋ฅผ React ์ปดํฌ๋„ŒํŠธํ™”ํ•˜์—ฌ Props ๊ธฐ๋ฐ˜์˜ ์œ ์—ฐํ•œ ์Šคํƒ€์ผ๋ง ์ œ์–ด ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ESLint / Prettier

    • ์ฝ”๋“œ ์ปจ๋ฒค์…˜์„ ์ž๋™ํ™”ํ•˜์—ฌ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๊ณ  ๋กœ์ง ์„ค๊ณ„์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ์กฐ์„ฑ

๐Ÿ›๏ธ Project Architecture (FSD ๊ธฐ๋ฐ˜)

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” Feature-Sliced Design(FSD) ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

src/
โ”œโ”€โ”€ assets/          # ์ •์  ์ž์›
โ”œโ”€โ”€ components/      # ์ „์—ญ ๊ณต์šฉ ์ปดํฌ๋„ŒํŠธ
โ”œโ”€โ”€ features/        # ๋„๋ฉ”์ธ๋ณ„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ API
โ”œโ”€โ”€ hooks/           # ์ปค์Šคํ…€ ํ›… ๋ฐ ๊ธ€๋กœ๋ฒŒ Store
โ”œโ”€โ”€ lib/             # ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •
โ”œโ”€โ”€ pages/           # ๋ผ์šฐํŠธ๋ณ„ ํŽ˜์ด์ง€
โ”œโ”€โ”€ router/          # ๋ผ์šฐํŒ… ์ •์˜
โ”œโ”€โ”€ stories/         # Storybook ๋ช…์„ธ
โ”œโ”€โ”€ styles/          # ์ „์—ญ ์Šคํƒ€์ผ ๋ฐ ํ…Œ๋งˆ
โ”œโ”€โ”€ utils/           # ๋ฒ”์šฉ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜
โ”œโ”€โ”€ App.tsx          # ๋ฃจํŠธ ์ปดํฌ๋„ŒํŠธ
โ””โ”€โ”€ main.tsx         # ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ

โœจ Core Features

๐Ÿง  ์†Œ๋น„ ํŒจํ„ด MBTI ๋ถ„์„

  • ๊ธˆ์œต ์„ฑํ–ฅ ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž ์†Œ๋น„ ํƒ€์ž… ๋„์ถœ
  • ์†Œ๋น„ ์Šต๊ด€, ์œ„ํ—˜ ์„ ํ˜ธ๋„, ์ €์ถ• ์„ฑํ–ฅ์„ ์‹œ๊ฐํ™”ํ•œ ๋งž์ถคํ˜• ๋ฆฌํฌํŠธ ์ œ๊ณต

๐ŸŽฏ ๋ชฉํ‘œ ๊ด€๋ฆฌ (Goal)

  • ์ €์ถ• ๋ชฉํ‘œ ์„ค์ • ๋ฐ ๋‹ฌ์„ฑ ํ˜„ํ™ฉ ํŠธ๋ž˜ํ‚น
  • ๋‹ฌ์„ฑ๋ฅ  ๊ธฐ๋ฐ˜ ์ง„ํ–‰ ํ˜„ํ™ฉ ์‹œ๊ฐํ™” ๋ฐ ๋™๊ธฐ ๋ถ€์—ฌ

๐Ÿ’ณ ์ž์‚ฐ ๋ฐ ๊ฑฐ๋ž˜ ๋‚ด์—ญ ํ†ตํ•ฉ ์กฐํšŒ

  • ์€ํ–‰ / ์นด๋“œ์‚ฌ ์—ฐ๋™์„ ํ†ตํ•œ ๊ณ„์ขŒ ๋ฐ ์†Œ๋น„ ๋‚ด์—ญ ํ†ตํ•ฉ ๊ด€๋ฆฌ
  • ์›”๋ณ„ยท์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ง€์ถœ ๋ถ„์„ ์ œ๊ณต

๐Ÿ“ˆ ๋งž์ถคํ˜• ๊ธˆ์œต ์ƒํ’ˆ ์ถ”์ฒœ

  • ์‚ฌ์šฉ์ž์˜ ์†Œ๋น„ ์„ฑํ–ฅ ๊ธฐ๋ฐ˜ ์ตœ์  ๊ธˆ์œต ์ƒํ’ˆ ๋งค์นญ

๐Ÿ‘ฅ Members

  • ์ตœ๋„ํ˜„ / ์ž„ํ˜œ๋ฏธ / ๊ฐ•์Šนํฌ / ๋ณ€์ƒ์šฐ

Releases

No releases published

Packages

No packages published

Contributors 5