Skip to content

wanted-pre-onboarding-fe-team-4/pre-onboarding-9th-3-4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์›ํ‹ฐ๋“œ ์ธํ„ด์‹ญ ํ”„๋ก ํŠธ์—”๋“œ 4ํŒ€ - 3์ฃผ์ฐจ ๊ณผ์ œ

๐Ÿ“– ๊ณผ์ œ ์„ค๋ช…

๋™๋ฃŒํ•™์Šต์„ ํ†ตํ•ด์„œ ํŒ€์—์„œ ์ƒ๊ฐํ•œ [์ฐจํŠธ๋งŒ๋“ค๊ธฐ] ์˜ Best Pratice ๋งŒ๋“ค๊ธฐ

  • Best Practice๋ž€ ๋ชจ๋ฒ”์‚ฌ๋ก€๋ผ๋Š” ๋ง๋กœ์„œ, ํŠน์ • ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์„ฑ๊ณต์ ์ธ ํ•ด๊ฒฐ์ฑ… ๋˜๋Š” ๋ฐฉ๋ฒ•๋ก ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”— ๋ฐฐํฌ๋งํฌ

๐Ÿ”— ๋ฐฐํฌ ๋งํฌ ์ด๋™

๐Ÿง‘โ€๐Ÿ’ป ํŒ€์› ์†Œ๊ฐœ


์†ก๊ฒฝํ™˜(ํŒ€์žฅ)


๋ฐ•์„ธํ˜„


๊น€์šฐ์„ฑ


๋ณ€์ฐฌ์šฐ


์กฐํ˜œ๋ฏผ


์ดํƒœ์„ฑ


๊น€์„ฑ๋นˆ

๐Ÿ’ป ์‹คํ–‰๋ฐฉ๋ฒ•

# ํ”„๋กœ์ ํŠธ ํด๋ก 
git clone "https://github.com/wanted-pre-onboarding-fe-team-4/pre-onboarding-9th-3-4.git"

# ํ”„๋กœ์ ํŠธ ํด๋” ์ง„์ž…
cd pre-onboarding-9th-3-4

# ๋ชจ๋“ˆ ์„ค์น˜ ๋ฐ ์‹คํ–‰
yarn && yarn dev

๊ธฐ๋Šฅ ๊ตฌํ˜„

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-03-17 แ„‹แ…ฉแ„’แ…ฎ 10 22 18

-.mov
-.mov

โœ… Assignment 1

  • ์‹œ๊ณ„์—ด ์ฐจํŠธ ๋งŒ๋“ค๊ธฐ
    • ์ฃผ์–ด์ง„ JSON ๋ฐ์ดํ„ฐ์˜ key๊ฐ’(์‹œ๊ฐ„)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ๊ณ„์—ด ์ฐจํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”
    • ํ•˜๋‚˜์˜ ์ฐจํŠธ์•ˆ์— Area ํ˜•ํƒœ์˜ ๊ทธ๋ž˜ํ”„์™€ Bar ํ˜•ํƒœ์˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” ๋ณตํ•ฉ ๊ทธ๋ž˜ํ”„๋กœ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”
    • Area ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ์ค€๊ฐ’์€ value_area ๊ฐ’์„ ์ด์šฉํ•ด์ฃผ์„ธ์š”
    • Bar ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ์ค€๊ฐ’์€ value_bar ๊ฐ’์„ ์ด์šฉํ•ด์ฃผ์„ธ์š”
    • ์ฐจํŠธ์˜ Y์ถ•์— ๋Œ€๋žต์ ์ธ ์ˆ˜์น˜๋ฅผ ํ‘œํ˜„ํ•ด์ฃผ์„ธ์š”

โœ… Assignment 2

  • ํ˜ธ๋ฒ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ํŠน์ • ๋ฐ์ดํ„ฐ ๊ตฌ์—ญ์— ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„์‹œ id, value_area, value_bar ๋ฐ์ดํ„ฐ๋ฅผ ํˆดํŒ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•ด์ฃผ์„ธ์š”

โœ… Assignment 3

  • ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”, ํ•„ํ„ฐ๋ง์€ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜์ด๋ผ์ดํŠธ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”
    • ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์€ ๋ฒ„ํŠผ ํ˜•ํƒœ๋กœ ID๊ฐ’(์ง€์—ญ์ด๋ฆ„)์„ ์ด์šฉํ•ด์ฃผ์„ธ์š”
    • ํ•„ํ„ฐ๋ง ์‹œ ๋ฒ„ํŠผ์—์„œ ์„ ํƒํ•œ ID๊ฐ’๊ณผ ๋™์ผํ•œ ID๊ฐ’์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ๊ตฌ์—ญ๋งŒ ํ•˜์ด๋ผ์ดํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์„ธ์š”
    • ํŠน์ • ๋ฐ์ดํ„ฐ ๊ตฌ์—ญ์„ ํด๋ฆญ ์‹œ์—๋„ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ๊ณผ ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ๋™์ผํ•œ ID๊ฐ’์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ๊ตฌ์—ญ์„ ํ•˜์ด๋ผ์ดํŠธํ•ด์ฃผ์„ธ์š”

๐Ÿ“ฆ ํด๋”๊ตฌ์กฐ

๐Ÿ“ฆ src 
โ”œโ”€โ”€ ๐Ÿ“„ App.tsx
โ”œโ”€โ”€ ๐Ÿ“„ main.tsx
โ”œโ”€โ”€ ๐Ÿ“‚ api
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ getData.ts
โ”œโ”€โ”€ ๐Ÿ“‚ components
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ Chart
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ index.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ style.tsx
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“„ tooltip.tsx
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ Filter
โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ index.tsx
โ”‚       โ””โ”€โ”€ ๐Ÿ“„ type.ts
โ”œโ”€โ”€ ๐Ÿ“‚ config
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ ChartStyleConfig.ts
โ”œโ”€โ”€ ๐Ÿ“‚ types
โ””โ”€โ”€ ๐Ÿ“‚ util
    โ””โ”€โ”€ ๐Ÿ“„ suspendable.ts

๐Ÿค“ Best Practice

๊ฐ์ž์˜ ๊ตฌํ˜„๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ณ  ํ† ๋ก ํ–ˆ์„ ๋•Œ ํŒ€ ์•ˆ์—์„œ ์ด ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒƒ์„ ์ •ํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ํŒ€์˜ Best Practice ๋กœ ์ฑ„ํƒํ•ด์„œ ํ”„๋กœ์ ํŠธ์— ๋…น์˜€์Šต๋‹ˆ๋‹ค.

1. ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์ •

์ด๋ฒˆ ๊ณผ์ œ์—์„œ๋Š” ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์ •์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค ์ƒ๊ฐํ•ด์„œ ๊ตฌ์„ฑ์› ์ „๋ถ€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์ •ํ•ด ๊ฐœ์ธ๊ตฌํ˜„ ํ•ด๋ณธ ๋’ค ๋„ค๊ฐ€์ง€ ๊ธฐ์ค€์— ๋”ฐ๋ผ ํ•˜๋‚˜๋ฅผ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. Recahrts ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์ •ํ•˜์˜€๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋ฒˆ๋“คํฌ๊ธฐ๊ฐ€ ํฌ์ง€ ์•Š์•„์„œ ์„ ์ •ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„ ์ž์œ ๋„ ์š”๊ตฌ์‚ฌํ•ญ ์ ํ•ฉ์„ฑ API ๋ฌธ์„œ ๋ฒˆ๋“คํฌ๊ธฐ
Recharts ํ•˜๊ณ ์‹ถ์€ ๊ตฌํ˜„ ๋Œ€๋ถ€๋ถ„ ๊ฐ€๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ๋ชจ๋‘ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ์นœ์ ˆํ•œํŽธ์€ ์•„๋‹ˆ์–ด์„œ ๊ตฌ๊ธ€๋ง์„ ํ•ด์•ผํ•œ๋‹ค. 488.18KB
chartJS ์ƒ์ค‘ํ•˜ ์ค‘ ์ค‘, ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ๋ฉ€ํ‹ฐ y์ถ• ์•ˆ๋จ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๊ณ  ์ข‹์•˜์ง€๋งŒ ์š”๊ตฌ์‚ฌํ•ญ์€ ์ค‘ ์ •๋„ api๋ฌธ์„œ๋ณด๋‹ค ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์˜คํžˆ๋ ค ์ž˜๋˜์–ด์žˆ์—ˆ๋‹ค. ์—๋Ÿฌ๋„ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์—์„œ ์ฐพ์•˜๋‹ค. 388.544KB
styled-chart ๊ฑฐ์˜ ์—†๋Š” ์ˆ˜์ค€, ๋ผ์ธ์ด๋‚˜ ๋ฐ” ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. y์ถ• ์ถ”๊ฐ€ ์•ˆ๋˜๊ณ โ€ฆ ์š”๊ตฌ์‚ฌํ•ญ ์ค‘ 3๋ฒˆ์ธ ํ•„ํ„ฐ, ํ•˜์ด๋ผ์ดํŠธ ๊ธฐ๋Šฅ์ด ์•ˆ๋œ๋‹ค. ๋ณตํ•ฉ์ฐจํŠธ ๊ตฌํ˜„ ์•ˆ๋จ readme ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์„œ, ๋„์›€์ด ๋˜์ง€์•Š์•˜๊ณ  ์›น์ƒ ์ •๋ณด๋„ ๋ถ€์กฑํ•˜๋‹ค 31.28KB
apex ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์€ ์ž˜ ๋จ, ํ•˜์ง€๋งŒ ๋ฐ”๋‹๋ผJS ์นœํ™”์ ์ด๋ผ ๋ฆฌ์•กํŠธ์—์„œ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค ๊ฐ€๋Šฅ์€ ํ•˜๋‚˜ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ์–ด๋ ต๋‹ค. ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ๋งŽ์ง€์•Š๊ณ  ์›น์ƒ์—์„œ ์˜ˆ์‹œ๋ฅผ ์ฐพ์•„ ๋ด์•ผํ•œ๋‹ค. 492.36KB
echart ํ•˜๊ณ ์‹ถ์€ ๊ตฌํ˜„ ๋Œ€๋ถ€๋ถ„ ๊ฐ€๋Šฅ, ํ•˜์ง€๋งŒ ๋ฐ”๋‹๋ผ JS์— ์นœํ™”์ ์ด์—ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ ๋ชจ๋‘ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ์ •๋ฆฌ๊ฐ€ ์ž˜ ๋˜์–ด์žˆ์—ˆ๋‹ค 2.28MB

2. UI/UX

๋ณธ ๊ณผ์ œ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ UI ๋ฅผ ๊ณ ๋ฏผํ•ด ๋ณด์•˜์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋…„์›”์ผ ๋ถ„๋ฆฌ

  • ๋…„์›”์ผ ๊นŒ์ง€ X์ถ• ๋ ˆ์ด๋ธ”๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ ๊ณตํ†ต์ธ ๋…„์›”์ผ์€ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ† ๊ธ€ ํ•„ํ„ฐ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ ํ•ด๋‹น Id์˜ ์ฐจํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ ๋†’์ด ์กฐ์ •

  • ๋ณตํ•ฉ์ฐจํŠธ์˜ ํŠน์„ฑ ์ƒ ์ฐจํŠธ๊ฐ€ ๊ฒน์น˜๋ฉด ๊ฐ€๋…์„ฑ์ด ๋งค์šฐ ๋–จ์–ด์ ธ area ์ฐจํŠธ์˜ y์ถ• ๋ฒ”์œ„๋ฅผ ๋†’๊ฒŒ ์žก์•„ ๋‘ ์ฐจํŠธ์˜ ๊ณ ์ €์ฐจ์ด๋ฅผ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

3. ๊ฐ์ฒด ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๋กœ ์ •์ œ

  • ์ฐจํŠธ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ดํ˜•์‹์œผ๋กœ ๋„ฃ์–ด์ค˜์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ํ‚ค-๋ฐธ๋ฅ˜ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์—ด๋กœ ์ •์ œํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ ์งœ์ธ ํ‚ค๊ฐ’๋„ ๋ฐ์ดํ„ฐ์— ํ•„์š”ํ•ด์„œ ํ‚ค๊ฐ€ ์‚ฝ์ž…๋œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Object.entries ๋ฅผ ์ด์šฉํ•ด ์ ์€ ์ˆ˜์˜ ์ฝ”๋“œ๋กœ ์ •์ œํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
...
const getData = async () => {
  try {
    const response = await axios.get('/mock_data.json');
    const data: IChartObj = response.data.response;

    return Object.entries(data).map(([key, value]) => ({
      date: key.split(' ')[1],
      ...value,
    }));
  } catch (error) {
    console.log(error);
    throw error;
  }
};

export default getData;

4. ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์ ์šฉ

-.mov

5. ์ฝ”๋“œ๋ฆฌ๋ทฐ

์ง€๋‚œ 2์ฃผ๋™์•ˆ ์ €ํฌ ํŒ€์ด ์ ๊ทน์ ์ธ ์ฝ”๋“œ๋ฆฌ๋ทฐ๊ฐ€ ๋ถ€์กฑํ–ˆ๋˜ ์ ์ด ์žˆ์–ด์„œ PR ์˜ฌ๋ฆฐ ํ›„ 30๋ถ„ ์ด๋‚ด๋กœ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ณ  ํ•œ๋ช…์ด์ƒ์˜ ์Šน์ธ์„ ๋ฐ›์•„์•ผ ๋จธ์ง€ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋•๋ถ„์— ์ข€๋” ํ™œ๋ฐœํ•œ ์ฝ”๋“œ๋ฆฌ๋ทฐ๊ฐ€ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ ์ง€์ผฐ๋˜ ๊ทœ์น™๋„ ๊พธ์ค€ํžˆ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ‘พ ์ฝ”๋“œ ์ปจ๋ฒค์…˜

commit message

Type Description
test ๋ˆ„๋ฝ๋œ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ •
chore ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋‚˜ ๋ณด์กฐ ๋„๊ตฌ ๋ณ€๊ฒฝ
docs ๋ฌธ์„œ ๋ณ€๊ฒฝ
refactor ๋ฒ„๊ทธ ์ˆ˜์ •๋„, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋„ ์•„๋‹Œ ์ฝ”๋“œ ๋ณ€๊ฒฝ
style ๋งˆํฌ์—…, ๊ณต๋ฐฑ, ํฌ๋งท, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ ๋“ฑ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ
ci CI ๊ด€๋ จ ๋ณ€๊ฒฝ
perf ์„ฑ๋Šฅ ๊ฐœ์„ 

branch

๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ์„ค๋ช…
master ์ œํ’ˆ์œผ๋กœ ์ถœ์‹œ ๊ฐ€๋Šฅํ•œ ๋ธŒ๋žœ์น˜
feature/๊ฐœ๋ฐœํ•  ๋‚ด์šฉ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
fix/์ˆ˜์ •ํ•  ๋‚ด์šฉ ์ถœ์‹œ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜

Releases

No releases published

Packages

No packages published

Contributors 6