Skip to content

SOPT-all/35-APPJAM-WEB-CAKEY

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

122 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

WHIPEE ๐ŸŽ‚

์›ํ•˜๋Š” ์ฃผ๋ฌธ์ œ์ž‘ ์ผ€์ดํฌ๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ!



๐Ÿฅ„ WHIPEE!

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


๐Ÿฅจ ์„œ๋น„์Šค ์†Œ๊ฐœ



๐Ÿ”จ ์„œ๋น„์Šค ์ฃผ์š” ๊ธฐ๋Šฅ



๐Ÿ‘ฉ๐Ÿปโ€๐Ÿณ WHIPEE ํŒŒํ‹ฐ์‹œ์—

ํŒ€์› ๐Ÿ‘ป ์ž„ํ™”๋ž‘
๐Ÿฑ ์†์ง€์œ 
๐Ÿฅจ ๋ฐ•์ฑ„์—ฐ
๐Ÿ€ ์œ ์„œ์—ฐ
ํŒ€์› ์†Œ๊ฐœ
์—ญํ• 

WEB FRONTEND, LEAD

WEB FRONTEND

WEB FRONTEND

WEB FRONTEND



๐Ÿด ๊ธฐ์ˆ  ์Šคํƒ

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

๐Ÿง‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ๋„์ž…์ด์œ 
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 ๋ธŒ๋žœ์น˜ ์‚ญ์ œ



๐Ÿ“– WHIPEE ํŒŒํ‹ฐ์‹œ์—๋“ค์˜ ์•„ํ‹ฐํด ๋ชจ์Œ

๐Ÿ‘ป ์ž„ํ™”๋ž‘: Compound Component Pattern
๐Ÿฑ ์†์ง€์œ : ์ดˆ๊ธฐ์„ธํŒ… ์ •๋ณตํ•˜๊ธฐ (prettier, eslint, theme, GlobalStyle)
๐Ÿฅจ ๋ฐ•์ฑ„์—ฐ: Errorboundary
๐Ÿ€ ์œ ์„œ์—ฐ: TanStack Query




About

๐Ÿ’› ๐Ÿฐ ๋ง›์žˆ๋Š” ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ƒ๊ฐ๋งŒ ํ•ด๋„ ์žฌ๋ฐŒ์ž–์•„์š” ๐Ÿฐ ๐Ÿ’›

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

โšก