/jaranda

Primary LanguageJavaScript

LiveMD

GitHub top language GitHub repo size


๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ์ฝ”์Šค Jaranda ๊ธฐ์—… ๊ณผ์ œ

โ• ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ / ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ๊ณผ ๋‹ค์–‘ํ•œ ๋ฉ”๋‰ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ™ˆํŽ˜์ด์ง€, ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๊ตฌํ˜„ํ•˜๊ธฐโ—


๐Ÿ“š ๊ณผ์ œ ์š”๊ตฌ์‚ฌํ•ญ ๋ณด๊ธฐ

1. ์•„๋ž˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.

- ์ด๋ฆ„
- ์ฃผ์†Œ (ํŒ์—…์„ ์ด์šฉํ•ด์„œ ์ž…๋ ฅ๋ฐ›์Œ)
- ์‹ ์šฉ์นด๋“œ ์ •๋ณด (ํŒ์—…์„ ์ด์šฉํ•ด์„œ ์ž…๋ ฅ๋ฐ›์Œ)
- ๋‚˜์ด

1.1 ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ๋“ฑ๋กํ•œ ๊ณ„์ • ์ •๋ณด๋ฅผ ์•„๋ž˜ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐํ™” ํ•ด ์ฃผ์„ธ์š”.
- ํ…Œ์ด๋ธ” Component ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ
- Data Table ๊ตฌํ˜„
- ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ตฌํ˜„
- ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ๊ตฌํ˜„

1.2 ์ •๋ณด๋Š” ๋กœ์ปฌ ์ €์žฅ์†Œ ๋“ฑ ์ž์œ ๋กญ๊ฒŒ ์ €์žฅํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

1.3 ์ฃผ์†Œ๋Š” ๋‹ค์Œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž…๋ ฅ์ฐฝ์„ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

1.4 ๊ด€๋ฆฌ์ž ๊ณ„์ •์€ ์ž„์˜๋กœ ์ •์˜ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

2. ๋‹ค์–‘ํ•œ ๋ฉ”๋‰ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ™ˆํŽ˜์ด์ง€ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•ด ์ฃผ์„ธ์š”.

2.1 ๊ณ„์ •, ๋น„๋ฐ€๋ฒˆํ˜ธ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋กœ๊ทธ์ธ์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2.2 ๋กœ๊ทธ์ธ ๋œ ๊ณ„์ •์€ ์ž์‹ ์—๊ฒŒ ํ—ˆ์šฉ๋œ ๋ฉ”๋‰ด๋งŒ ๋ณด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2.3 ๊ด€๋ฆฌ์ž๋Š” ๊ณ„์ •์„ ์ž„์˜๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ๊ณ„์ •๋ณ„๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ด๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.4 ๊ด€๋ฆฌ์ž ๊ณ„์ •์€ ์ž„์˜๋กœ ์ •์˜ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

2.5 ์ •๋ณด๋Š” ๋กœ์ปฌ ์ €์žฅ์†Œ ๋“ฑ ์ž์œ ๋กญ๊ฒŒ ์ €์žฅํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

2.6 ๋ฉ”๋‰ด๋Š” ์ž„์˜๋Œ€๋กœ ์ •์˜ํ•ด๋„ ๋˜๋ฉฐ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ ๋‚˜์˜ค๋Š” ํ™”๋ฉด์—๋Š” ๋ฉ”๋‰ด๋ช…์ด ์ถœ๋ ฅ๋˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

2.7 ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ๋“ฑ๋กํ•œ ๊ณ„์ • ์ •๋ณด๋ฅผ ์•„๋ž˜ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐํ™” ํ•ด ์ฃผ์„ธ์š”.
- ํ…Œ์ด๋ธ” Component ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ
- Data Table ๊ตฌํ˜„
- ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ตฌํ˜„
- ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ๊ตฌํ˜„

๊ฐœ์ธ์ ์ธ ์ˆ˜์ • ๋‚ด์šฉ

๊ธฐ์กด์—๋Š” ์ฒดํฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œฌ๋Š” ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์ด๊ฒƒ์„ ํ†ตํ•ด ์ฒดํฌ๋˜์–ด ์žˆ๋Š” ์ง€ ํ™•์ธํ•˜๊ณ  ๋ณด๋‚ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ๋‹ค.
์ด๋ฅผ ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒดํฌ๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํ’€ ๋•Œ db๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋ฐ›์€ data state๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ณ , submit๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋งŒ ์ „๋‹ฌํ•œ๋‹ค.
๋˜ํ•œ db์ธ loalStorage์— ๊ฐฑ์‹ ํ•˜๋Š” ์ž‘์—…์ด ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๊ณผ ์„ž์—ฌ์žˆ์–ด์„œ FE์™€ BE๊ฐ€ ์„ž์—ฌ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐœ๋ณ„๋œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด db๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ , ์ƒˆ๋กœ pagination์„ ํ†ตํ•ด db์™€ ํ™”๋ฉด์„ ๋™๊ธฐํ™”์‹œํ‚จ๋‹ค.
localStorage์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ  ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋‚˜๋ˆ ์ฃผ๊ณ  ์‹ถ์—ˆ๊ณ , ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฒฐ๊ตญ์€ ๊ฐฑ์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋‚ด์ค˜์•ผ ํ•  ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ state๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์ง€ ์•Š๊ณ  ๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

๐Ÿ“‘ ๊ตฌํ˜„ ๋ชฉ๋ก

ํšŒ์› ๊ฐ€์ž…

  • ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฆ„, ๋‚˜์ด, ์ฃผ์†Œ, ์‹ ์šฉ์นด๋“œ ๋“ฑ๋ก์„ ํ†ตํ•œ ํšŒ์› ๊ฐ€์ž… ๊ธฐ๋Šฅ
  • ๊ฐ input(์•„์ด๋””, ํšŒ์›๊ฐ€์ž…, ์นด๋“œ)์— ๋Œ€ํ•œ Validate ์„ค์ •(์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ์ค‘๋ณต ๊ฒ€์‚ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ)
  • ๋ชจ๋“  input ๊ฐ’์ด ์กด์žฌํ•  ๋•Œ ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ (๋ฏธํก ์ž…๋ ฅ ์กด์žฌ ์‹œ ํ•ด๋‹น ์ธํ’‹์œผ๋กœ cursor ์ด๋™)
  • ์ฃผ์†Œ ๋“ฑ๋ก์€ ๋‹ค์Œ API ํ™œ์šฉ, ์นด๋“œ ๋“ฑ๋ก์€ ํŒ์—…์ฐฝ ๊ตฌํ˜„.

๋กœ๊ทธ์ธ

  • ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ›„ ์กด์žฌํ•˜๋Š” ์œ ์ € ์ธ์ฆ ํ›„ token ๋ฐœ๊ธ‰
  • ๋ฐœ๊ธ‰๋œ token์œผ๋กœ admin, user ํŽ˜์ด์ง€ ์ด๋™

๊ด€๋ฆฌ์ž

  • localStorage์— ์กด์žฌํ•˜๋Š” userData ์ถœ๋ ฅ
  • ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์œผ๋กœ name, userId์—์„œ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰
  • localStorage์— ์กด์žฌํ•˜๋Š” userId์˜ menuItem ์ˆ˜์ • ๊ฐ€๋Šฅ
  • ๊ด€๋ฆฌ์ž ํ˜น์€ ์œ ์ €๋กœ ๊ณ„์ • ์ถ”๊ฐ€

๋ฉ”๋‰ด๋ฐ”

  • ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ๊ณ„์ •๋ณ„ ๋ฉ”๋‰ด ์„ค์ • ์‹œ ํ•ด๋‹น ๊ณ„์ •์—๊ฒŒ ์„ ํƒ๋œ ๋ฉ”๋‰ด๋งŒ ๋ณด์—ฌ์ง
  • ์œ ์ €๊ฐ€ ๊ถŒํ•œ์ด ์—†๋Š” ํŽ˜์ด์ง€์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŽ˜์ด์ง€ ์ ‘๊ทผ๋ถˆ๊ฐ€, ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ์ด๋™
  • Not Found ํŽ˜์ด์ง€

๋ผ์šฐํŠธ && ์ ‘๊ทผ ๊ถŒํ•œ

  • ๋กœ๊ทธ์ธ ์ „
    • ๋กœ๊ทธ์ธ ์—†์ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋‰ด ๋ Œ๋”๋ง (๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€)
  • ๋กœ๊ทธ์ธ ํ›„
    • ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์‹œ Admin ํŽ˜์ด์ง€ ๋ Œ๋”๋ง
    • ์ผ๋ฐ˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์‹œ ๊ฒŒ์ŠคํŠธ๋ฉ”๋‰ด์—์„œ ์œ ์ €๋ณ„ ํ—ˆ๊ฐ€๋œ ๋ฉ”๋‰ด ๋ Œ๋”๋ง
    • ๋กœ๊ทธ์ธ ํ›„์—๋Š” ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ์ ‘๊ทผ ๋ถˆ๊ฐ€
  • ๋กœ๊ทธ์•„์›ƒ

๐Ÿ‘จโ€๐Ÿ’ป ์‹คํ–‰ ๋ฐฉ๋ฒ•

์„ค์น˜

npm install

์‹คํ–‰

npm start

๋ฐ๋ชจ ๋กœ๊ทธ์ธ

Admin : admin1 / admin123!

User : user1 / user123!


๐Ÿ“‚ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

ํด๋” / ํŒŒ์ผ ์„ค๋ช…
Assets jaranda ๋กœ๊ณ  ๋ฐ ์•„์ด์ฝ˜.
Components ๊ฐ Page์— ์‚ฌ์šฉ๋˜๋Š” Component ๋ชจ์Œ.
Modal ํŒ์—…์ฐฝ Modal.
Pages Route๋ฅผ ์œ„ํ•œ Page ๋ชฉ๋ก.
Services ๊ถŒํ•œ๋ณ„ ์ธ๊ฐ€ ์ฑ…์ •.
Styles ๊ธฐ๋ณธ ๊ณตํ†ต Style.
Utils localStorage ์ ‘๊ทผ ๋ฐ ๊ณตํ†ต ํ•จ์ˆ˜.
App.js public, private Route ์ •๋ฆฌ.
routes.js ๊ณ„์ •๋ณ„ ํŽ˜์ด์ง€ ๊ถŒํ•œ ๊ตฌ๋ถ„.