Skip to content

Latest commit

ย 

History

History
387 lines (300 loc) ยท 14.7 KB

README.md

File metadata and controls

387 lines (300 loc) ยท 14.7 KB

CAKEY ๐ŸŽ‚

์ฃผ๋ฌธ์ œ์ž‘ ์ผ€์ดํฌ, ๋น„๊ต๋„ ๋‹ฌ์ฝคํ•˜๊ฒŒ ํ•œ์ž…์—! ๐Ÿ˜‹



๐Ÿฅ„ About CAKEY

์ผ€์ดํ‚ค Cakey๋Š” ์ฃผ๋ฌธ์ œ์ž‘ ์ผ€์ดํฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ•œ ๋ˆˆ์— ๋ชจ์•„๋ณด๊ณ  ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค ๐ŸŽ‚


โฒ๏ธ ์ •๋ณด์˜ ์–ด๊ทธ๋ฆฌ๊ฒŒ์ด์…˜ ๋ฐ ์กฐ๊ฑด๋ณ„ ํ•„ํ„ฐ๋ง

  • ์ •๋ณด์˜ ๋ถ„์‚ฐ์œผ๋กœ ์—ฌ๋Ÿฌ SNS(์ธ์Šคํƒ€๊ทธ๋žจ, ์นด์นด์˜คํ†ก)๋‚˜ ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๋ฉฐ, ์—…์ฒด๋ณ„๋กœ ๊ฐ€๊ฒฉ, ์Šคํƒ€์ผ, ์˜ต์…˜์„ ํ™•์ธํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด์—์š”.
    • ํฉ์–ด์ ธ ์žˆ๋Š” ๋””์ž์ธ/๊ฐ€๊ฒฉ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋กœ ๋ชจ์•„์š”.
    • ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด ๋น„๊ต๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์š”.
    • ์ฐœ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋งˆ์Œ์— ๋“œ๋Š” ์Šคํ† ์–ด ๋ฐ ๋””์ž์ธ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ“ ์ง€๋„ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ๋ฐ ์œ„์น˜ ๋น„๊ต

  • ํ™๋Œ€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ•ฉ์ • ์Šคํ† ์–ด๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ด‘๋ฒ”์œ„ํ•œ ์œ„์น˜ ๋ถ„๋ฅ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด์—์š”.
    • ํ•€ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ชฉ์ ์ง€ ๋ฐ ์•ฝ์†์žฅ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ฃผ์œ„์˜ ์Šคํ† ์–ด๋“ค์„ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.
  • ์ธ๊ธฐ ์Šคํ† ์–ด๋งŒ ์ œํ•œ์ ์œผ๋กœ ๋œจ๋Š” ์ธ์Šคํƒ€ ๊ฒ€์ƒ‰์ฐฝ์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด์—์š”.
    • ์ง€์—ญ์œผ๋กœ ๊ฒ€์ƒ‰ ์‹œ (ex. ํ™๋Œ€์ž…๊ตฌ์—ญ)


๐Ÿ‘ฉ๐Ÿปโ€๐Ÿณ CAKEY Developers


ํŒ€์› ๐Ÿ€ ์œ ์„œ์—ฐ
๐Ÿฑ ์†์ง€์œ 
๐Ÿ‘ป ์ž„ํ™”๋ž‘
๐Ÿฅจ ๋ฐ•์ฑ„์—ฐ
ํŒ€์› ์†Œ๊ฐœ แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-01-09 แ„‹แ…ฉแ„’แ…ฎ 2 43 13
์—ญํ• 

WEB FRONTEND

WEB FRONTEND

WEB FRONTEND

WEB FRONTEND



๐Ÿด Tech Stack

Node.js Badge Node.js Version Badge

์—ญํ•  ์ข…๋ฅ˜
Library React VITE
Programming Language TypeScript
Styling Vanilla Extract Badge
Data Fetching Axios TanStack Query Badge
Formatting ESLint Prettier
Package Manager Yarn
Version Control Git GitHub
Test Storybook Badge
Deploy Vercel Badge

๐Ÿง‚ Library

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๋„์ž…์ด์œ 
React Badge ^18.3.1 ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์™€ ๊ฐ€์ƒ DOM์„ ํ™œ์šฉํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋กœ ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ์„ฑ ์žˆ๋Š” UI ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
TypeScript Badge ~5.6.2 ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ณ , ๊ฐ•๋ ฅํ•œ IDE ์ง€์›์œผ๋กœ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
Vanilla Extract Badge ^1.17.0 ์ •์  ํƒ€์ž… ๊ธฐ๋ฐ˜ CSS-in-JS๋กœ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋ชจ๋‘ ๊ณ ๋ คํ•œ ์Šคํƒ€์ผ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
Storybook Badge ^8.4.7 UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋ฉฐ, ๋ฌธ์„œํ™”๋ฅผ ํ†ตํ•ด ํ˜‘์—…์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
TanStack Query Badge ^5.62.16 ๋ณต์žกํ•œ ๋น„๋™๊ธฐ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ณ , ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋™๊ธฐํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํŽ˜์นญ๊ณผ ์บ์‹ฑ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ—‚๏ธ ํ”„๋กœ์ ํŠธ ํด๋” ๊ตฌ์กฐ

|-- ๐Ÿ“ node_modules
|-- ๐Ÿ“ public
    |-- ๐Ÿ“ svg
    |-- ๐Ÿ“ data
        |-- userData.json
|-- ๐Ÿ“ src
    |-- ๐Ÿ“ assets
        |-- ๐Ÿ“ svgs
        |-- ๐Ÿ“ images
    |-- ๐Ÿ“ components
        |-- ๐Ÿ“ common 
            |-- ๐Ÿ“ Button 
                |-- Button.tsx
                |-- Button.css.ts
            |-- index.ts 
    |-- ๐Ÿ“ pages
        |-- ๐Ÿ“onboarding
            |-- ๐Ÿ“components
            |-- ๐Ÿ“types
            |-- ๐Ÿ“hooks
            |-- ๐Ÿ“page
                |-- ๐Ÿ“OnboardingPage
                |-- OnboardingPage.tsx
                |-- OnboardingPage.css.ts
    |-- ๐Ÿ“ hooks
    |-- ๐Ÿ“ stories
        |-- ๐Ÿ“ Button.stories.ts
    |-- ๐Ÿ“ styles
    |-- ๐Ÿ“ utils 
    |-- ๐Ÿ“ constants
        |-- routePath.ts
    |-- ๐Ÿ“ apis
        |-- ๐Ÿ“ domains
        |-- ๐Ÿ“ queryKeys
    |-- ๐Ÿ“ types
    |-- ๐Ÿ“ routes
        |-- homeRoutes.tsx
        |-- adminRoutes.tsx
        |-- index.ts
|-- App.tsx
|-- main.tsx
|-- .eslintrc.json
|-- .gitignore
|-- .prettierrc
|-- README.md
|-- package.json
|-- tsconfig.json
|-- yarn.lock

๐Ÿ“ ์ปจ๋ฒค์…˜

1๏ธโƒฃ Coding

๋ณ€์ˆ˜

  • var ๊ธˆ์ง€.
  • const โ†’ let ์ˆœ์„œ๋กœ ์œ„๋ถ€ํ„ฐ ์„ ์–ธ.
  • ๋ณ€์ˆ˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ฌธ์ž์—ด ์ƒ์„ฑ์‹œ โ€œ+ โ€œ ๊ธˆ์ง€. โ†’ ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ(๋ฐฑํ‹ฑ ```)
  • ์ƒ์ˆ˜๋Š” ์˜๋ฌธ ๋Œ€๋ฌธ์ž ์Šค๋„ค์ดํฌ์ผ€์ด์Šค : API_KEY
  • ๋ณ€์ˆ˜๋ช… : ์˜๋ฏธ๋ฅผ ํ™•์‹คํžˆ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋„๋ก
    • ์˜ˆ์‹œ : ๋ฐฐ์—ด์— Arr ๋ณด๋‹ค๋Š” ๋ณ€์ˆ˜s = fruits, userlists ๋“ฑ๋“ฑ
  • ์ค„์ž„๋ง ์“ฐ์ง€๋ง๊ธฐ. ์ด๋ฆ„์ด ๊ธธ์–ด์ง€๋”๋ผ๋„ ์–ด๋–ค ๋ณ€์ˆ˜์ธ์ง€ ์ •ํ™•ํ•˜๊ฒŒ
  • ๋งŒ์•ฝ ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๋Š” ๊ฐ’์ด boolean์ธ ๊ฒฝ์šฐ์—๋Š” is๋ฅผ ์ ‘๋‘์‚ฌ๋กœ ๋ถ™์ธ๋‹ค.
    • isActive ๊ฐ™์ด is ํ‚ค์›Œ๋“œ๋Š” boolean์—๋งŒ ์ ์šฉ
  • map ์‚ฌ์šฉ์‹œ ๋ณ€๋™๋˜๋Š” ๋ฆฌ์ŠคํŠธ๋ผ๋ฉด key๊ฐ’์„ ๊ณ ์œ ํ•˜๊ฒŒ ์ž˜ ์„ค์ •ํ•ด์ฃผ๊ธฐ index์‚ฌ์šฉ๊ธˆ์ง€
    • ์„œ๋ฒ„์—์„œ ๋‚ด๋ ค์ฃผ๋Š” id๊ฐ’ or uuid ์‚ฌ์šฉ

ํ•จ์ˆ˜

  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜. function ํ‚ค์›Œ๋“œ ์“ฐ์ง€๋ง๊ธฐ
  • ํ•จ์ˆ˜๋ช… : ์–ด๋–ค ์ผ์„ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ๋ฌ˜์‚ฌ. ๋™์‚ฌ+๋ช…์‚ฌ์˜ ํ˜•์‹.
    • get : ์–ด๋–ค ๊ฐ’์„ ์–ป๋Š” ํ•จ์ˆ˜
    • create : ๊ฐ–๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉ, ์ƒˆ๋กœ์šด ๊ฐ’๊ณผ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ฆ
    • check : ํ•จ์ˆ˜ ์•ˆ์˜ ๋กœ์ง์„ ํ™•์ธ.
    • ๊ทธ์™ธ, ๊ธฐ๋Šฅ์„ ๋ถ„๋ช…ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ด๋„๋ก ๋„ค์ด๋ฐ
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํ•จ์ˆ˜๋Š” handle ๋กœ ์‹œ์ž‘. ๊ทธ ์™ธ์—๋Š” ๊ธˆ์ง€.
    • ์˜ˆ์‹œ: handleResetClick, handleSubmitClick
  • ์œ ํ‹ธํ•จ์ˆ˜๋Š” ๋ฐ˜ํ™˜๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋ฆ„ ๋„ค์ด๋ฐ
    • boolean๊ฐ’ ๋ฐ˜ํ™˜์‹œ hasโ€”- ex) hasEmail = email์ด ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
  • ์ค‘๋ณตํ•จ์ˆ˜๋Š” utils ํด๋”์— ๋ชจ์•„์„œ ์žฌ์‚ฌ์šฉํ•œ๋‹ค.

์ปดํฌ๋„ŒํŠธ

  • rafce

  • ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๋งŒ PascalCase ์‚ฌ์šฉ : PascalCase

    • ๊ทธ ์™ธ์—๋Š” camelCase ex) type, d.tsํŒŒ์ผ, tsํŒŒ์ผ
  • ํƒ€์ž… Interface ์„ ์–ธ์‹œ

    • ์ปดํฌ๋„ŒํŠธ์˜ ์ธ์ž : ~Props (ex. HomeProps, AdminProps)
      • ์ด๋•Œ์˜ Interface๋Š” type ํด๋”๋กœ ๋ถ„๋ฆฌ ๊ธˆ์ง€
    • ex) MainComponent interface ์„ ์–ธ์‹œ = MainProps
  • props๋ช…์€ camelCase ๋Œ€๋ฌธ์ž์‹œ ๋ฌธ์ œ ์ƒ๊น€

  • ์˜๋ฏธ์—†๋Š” div ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ ์ตœ์ƒ๋‹จ์€ fragment ์‚ฌ์šฉํ•˜๊ธฐ

    const InfoText = () => {
      return (
        <>
          <h1>Welcome!</h1>
          <p>This our new page, we're glad you're are here!</p>
        </>
      );
    };
  • children์ด ๋ถˆํ•„์š”ํ•  ๋• selfClosing์‚ฌ์šฉํ•˜๊ธฐ <Component />


ํด๋”๋ช…

  • ๋ฌด์กฐ๊ฑด ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ธฐ!
  • ๋’ค์— s๋ถ™์ด๊ธฐ
  • ์นด๋ฉœ์ผ€์ด์Šค!

ํƒ€์ž…

  • object โ†’ interface
  • ๋‹จ์ผ๋ณ€์ˆ˜ โ†’ type
  • ์ปดํฌ๋„ŒํŠธ ์ธ์ž์— ๋Œ€ํ•œ ํƒ€์ž…์€ ์ปดํฌ๋„ŒํŠธ ์ƒ๋‹จ์—
  • ๊ทธ ์™ธ์˜ ํƒ€์ž…๋“ค์€ types ํด๋”์—(์ปดํฌ๋„ŒํŠธ ์ธ์ž์— ๋ฐฐ์—ดor๊ฐ์ฒด ๋“ฑ์ด ์žˆ๋‹ค๋ฉด ์ด ํƒ€์ž…๋„ types ํด๋”๋กœ)
  • prop์˜ ํƒ€์ž…๋ช…์€ OOOProps
  • api response ํƒ€์ž…๋ช…์€ OOOResponseTypes

๋ฉ”์†Œ๋“œ

  • ๋ฐฐ์—ด ๋ณต์‚ฌ์‹œ โ†’ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž(โ€ฆ) ์‚ฌ์šฉ

    • const copys = [โ€ฆoriginals]
  • for ๋ณด๋‹จ, forEach/map์„ ์‚ฌ์šฉ

  • ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์ ๊ทน ์ด์šฉ

    interface userDataProps {
      userName: string;
      userBirth: string;
    }
    
    function checkIsUser({ userName, userBirth }: userDataProps) {}
  • ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต๋ฌธ ์ง€์–‘ : filter, array.include() ๋“ฑ

    • ์กฐ๊ฑด๋ถ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋ฝ‘์•„์•ผํ•˜๋Š” ๋กœ์ง์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” Map ์ด๋‚˜ Object์ฒ˜๋Ÿผ key๊ฐ’์„ ์ด์šฉํ•ด์„œ ์›์†Œ๋ฅผ ์ฐพ๋Š” ์ž๋ฃŒํ˜•์„ ์ด์šฉํ•˜๋Š”๊ฒƒ์„ ๊ณ ๋ คํ•ด๋ณด๊ฑฐ๋‚˜, ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜์ง€ ์•Š๊ณ  index๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋Š”์ง€ ๊ณ ๋ ค.


2๏ธโƒฃ Git & Github

Git Flow

  • main: ์ œํ’ˆ์„ ๋ฐฐํฌํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • develop: ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜๋กœ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ด ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ž ์ž‘์—…ํ•œ ๊ธฐ๋Šฅ๋“ค์„ Merge
    • develop ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ feature ๋ธŒ๋žœ์น˜๋ฅผ ๋ถ„๊ธฐํ•˜๊ณ , ๊ฐ feature ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์นจ
    • develop ๋ธŒ๋žœ์น˜์—์„œ main ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉ
  • feature: ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋ฉด develop ๋ธŒ๋žœ์น˜์— Merge
    • ๋ฐ˜๋“œ์‹œ develop ์—์„œ ๋ถ„๊ธฐํ•ด์•ผ ๋จ. ๋ถ„๊ธฐ ๋œ ๋‹ค๋ฅธ feature ๋ธŒ๋žœ์น˜์—์„œ ๋˜ ๋‹ค๋ฅธ feature ๋ธŒ๋žœ์น˜๋ฅผ ๋ถ„๊ธฐํ•˜๋ฉด ์ ˆ๋Œ€ ์•ˆ๋จ.

ํ˜„ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” release, hotfix ๋ธŒ๋žœ์น˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ.


๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ „ ์ž์‹ ์ด ๊ตฌํ˜„ํ•  ๋ถ€๋ถ„์„ ์ด์Šˆ๋กœ ๊ด€๋ฆฌ

  1. ์ด์Šˆํ…œํ”Œ๋ฆฟ ์„ ํ™œ์šฉํ•˜์—ฌ ์ด์Šˆ ์ƒ์„ฑ
  2. 1์—์„œ ์ƒ์„ฑ๋œ ์ด์Šˆ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ.
    1. ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์€ feat/#<issued number>/example ex) feat/#18/common-button

์ž‘์—…

๋ชจ๋“  ์ž‘์—…์€ develop ์—์„œ ๋ถ„๊ธฐ๋œ feature ๋ธŒ๋žœ์น˜์—์„œ ์ง„ํ–‰

  • ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ์ปค๋ฐ‹์œ ํ˜•: <๊ตฌํ˜„, ์ˆ˜์ •, ๊ฐœ๋ฐœํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€> (#<issued number>) ex) feat: Button ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ œ์ž‘ (#18)
    ์ปค๋ฐ‹์œ ํ˜• ์˜๋ฏธ
    feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    fix ๋ฒ„๊ทธ ์ˆ˜์ •
    docs ๋ฌธ์„œ ์ˆ˜์ •
    style ์ฝ”๋“œ formatting, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ž์ฒด์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
    refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
    test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
    chore ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •, ๊ทธ ์™ธ ๊ธฐํƒ€ ์ˆ˜์ • ex) .gitignore
    design CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
    comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
    deploy ๋ฐฐํฌ ๊ด€๋ จ
    setting ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…

๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ

feature ๋ธŒ๋žœ์น˜์—์„œ develop ๋ธŒ๋žœ์น˜๋กœ mergeํ•  ๋•Œ๋Š” PR์„ ์ด์šฉํ•จ (์ง์ ‘ merge โŒ)

  1. develop, feature ๋ธŒ๋žœ์น˜ ์ตœ์‹ ํ™”

  2. develop โ†’ feature merge ํ•˜๊ณ  ์ถฉ๋Œ ์ฒ˜๋ฆฌ

    • feature ๋ธŒ๋žœ์น˜๋กœ checkout ํ•ด์„œ git merge develop
  3. PRํ…œํ”Œ๋ฆฟ ์„ ํ™œ์šฉํ•˜์—ฌ PR ์ž‘์„ฑ

    • PR ์ž‘์„ฑ์‹œ ์ด์Šˆ๋ฒˆํ˜ธ ์ œ๋Œ€๋กœ ๊ธฐ์ž…ํ•ด์•ผ ์ด์Šˆ๊ฐ€ ํ•จ๊ป˜ ๋‹ซํž˜(ํ…œํ”Œ๋ฆฟ๋Œ€๋กœ ํ•˜๋ฉด ๋จ)
    • ํŒ€์›๋“ค์˜ review & approve(2๋ช…) ํ›„ ์Šค์ฟผ์‹œ ๋จธ์ง€

    ์ฃผ์˜โš ๏ธ - review & approve ๊ณผ์ •์—์„œ ๋‹ค๋ฅธ PR ๋จธ์ง€ ๋“ฑ develop์— ์ˆ˜์ •์‚ฌํ•ญ์ด ์ƒ๊ฒผ๋‹ค๋ฉด, 2๋ฒˆ๊ณผ์ •์„ ๋‹ค์‹œ ํ•ด์ค˜์•ผ ํ•จ.

  4. ์ •์ƒ์ ์œผ๋กœ ๋จธ์ง€ ๋˜์—ˆ๋‹ค๋ฉด feature ๋ธŒ๋žœ์น˜ ์‚ญ์ œ