Skip to content

codeit15-2-2/fandom-k

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

461 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

FANDOM-K

1. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

FANDOM-K๋Š” K-POP ํŒฌ๋“ค์„ ์œ„ํ•œ ์ข…ํ•ฉ ํŒฌ๋ค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™œ๋™์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ข‹์•„ํ•˜๋Š” K-POP ์•„์ด๋Œ์„ ์œ„ํ•œ ์ด๋ฒคํŠธ ์ƒ์„ฑ ๋ฐ ์ฐธ์—ฌ
  • ์•„์ด๋Œ์—๊ฒŒ ํฌ๋ ˆ๋”ง์„ ํ›„์›ํ•˜์—ฌ ์ง์ ‘์ ์ธ ์ง€์› ์ œ๊ณต
  • ๋‹ค์–‘ํ•œ ํˆฌํ‘œ ์ด๋ฒคํŠธ์— ์ฐธ์—ฌํ•˜์—ฌ ํŒฌ๋ค ํ™œ๋™ ์ฆ์ง„
  • ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ์ข‹์•„ํ•˜๋Š” ์•„์ด๋Œ ์ถ”๊ฐ€ ๋ฐ ๊ด€๋ฆฌ
  • ํŒฌ๋ค ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์†Œํ†ตํ•˜๋ฉฐ ์ •๋ณด ๊ณต์œ 

FANDOM-K๋Š” ํŒฌ๊ณผ ์•„์ด๋Œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ขํžˆ๊ณ , ํŒฌ๋“ค์ด ๋”์šฑ ์ ๊ทน์ ์œผ๋กœ ์•„์ด๋Œ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ฐฐํฌ ์ฃผ์†Œ

3. ์ฃผ์š” ๊ธฐ๋Šฅ

๋žœ๋”ฉ ํŽ˜์ด์ง€

  • K-POP ํŒฌ๋ค ๋ฌธํ™”์—์„œ ์ฐจ์šฉํ•œ ์š”์†Œ(์ž…์žฅ๋ , ํฌํ† ์นด๋“œ, ์Šค๋งˆํŠธํฐ ๋“ฑ)๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋…น์—ฌ๋ƒˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ์…˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์Šคํฌ๋กค ์Šค๋ƒ…์„ ํ™œ์šฉํ•˜์—ฌ ๋ชฐ์ž…๊ฐ ์žˆ๋Š” UX๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • IntersectionObserver API๋ฅผ ํ™œ์šฉํ•ด ํ™”๋ฉด์— ์š”์†Œ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ๋งŒ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์ธ ํŽ˜์ด์ง€

์บ๋Ÿฌ์…€

  • useRef๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์บ๋Ÿฌ์…€ ์ „์ฒด ๋„“์ด์— ๋Œ€ํ•ด์„œ ํ‘œ์‹œํ•  ์นด๋“œ์˜ ๋„“์ด๋ฅผ ๊ตฌํ•˜์—ฌ ์นด๋“œ๋ฅผ ๋ Œ๋”๋งํ•ด์คฌ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์œผ๋กœ ํ™”๋ฉด ํฌ๊ธฐ ์›€์ง์ž„์„ resize์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋กœ ํ™•์ธํ•˜๊ณ  ์ด์— ๋”ฐ๋ผ ์นด๋“œ ๋„“์ด์™€ ์นด๋“œ๋ฅผ ๋žœ๋”๋ง ํ•ด์ฃผ๋Š” ๊ฐœ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ๋ฐ˜์‘ํ˜•์œผ๋กœ ์บ๋Ÿฌ์…€์ด ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค‘๋ณต ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์บ๋Ÿฌ์…€์ด ๋™์ž‘์ด ์™„๋ฃŒ๋œ ์ดํ›„์— ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋™์ž‘ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด๋‹ฌ์˜ ์ฐจํŠธ

  • react-router-dom์˜ Outlet ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒํ•œ ํƒญ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋””๋ฐ”์ด์Šค ํฌ๊ธฐ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ฐœ์ˆ˜๋ฅผ ์ž๋™ ์กฐ์ ˆ (PC: 10๊ฐœ, ๋ชจ๋ฐ”์ผ: 5๊ฐœ), ์ปค์„œ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง•์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ๋Š” useCallback์„ ์‚ฌ์šฉํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง ๋ฐฉ์ง€ํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ Œ๋”๋ง์„ ์œ ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถฉ์ „ ๋ชจ๋‹ฌ

  • ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ๋Š” React Portal์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. .React Portal์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ชจ๋‹ฌ์ด DOM ๊ณ„์ธต ๊ตฌ์กฐ์™€ ๊ด€๊ณ„์—†์ด document.body์— ์ง์ ‘ ๋ Œ๋”๋ง๋˜์–ด z-index ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • motion ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋‹ฌ์ด ์—ด๊ณ  ๋‹ซํž ๋•Œ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ๋„ฃ์–ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

ํˆฌํ‘œ ๋ชจ๋‹ฌ

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

์ƒ์„ธ ํŽ˜์ด์ง€

  • ์ ์‘ํ˜• ๋””์ž์ธ์œผ๋กœ, PC์™€ Tablet, Mobile์—์„œ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • progress bar๊ฐ€ ํฌํ•จ๋œ ํ›„์› ์ •๋ณด ์ปดํฌ๋„ŒํŠธ๋Š”, ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ๋ Œ๋”๋ง ์ตœ์ ํ™”์™€ ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
  • web worker๋กœ ํƒ€์ด๋จธ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ๋ถ€๋‹ด์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • memo๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์„ ์ตœ์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • lazy loading๊ณผ Suspense๋ฅผ ์ถ”๊ฐ€ํ•ด ์„ฑ๋Šฅ ์ตœ์ ํ™” ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • PC์™€ Mobile์€ ์› ์Šคํฌ๋กค ํŽ˜์ด์ง€๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ , ์• ๋‹ˆ๋ฉ”์ด์…˜์€ motion๊ณผ tailwindCSS๋ฅผ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ›„์› ๋ชจ๋‹ฌ

  • ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ›„์› ๋ชจ๋‹ฌ์€ Modal ์ปดํฌ๋„ŒํŠธ, CreditForm ์ปดํฌ๋„ŒํŠธ, IdolCardList ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋งˆ์ด ํŽ˜์ด์ง€

  • motion๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋™์ž‘๋งˆ๋‹ค์˜ ์‹œ๊ฐ์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ์ฆ๋Œ€์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.
  • Intersectoin Observer API๋ฅผ ํ†ตํ•œ ๋ฌดํ•œ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋„๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • useCallback,memo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋ง์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

404 ํŽ˜์ด์ง€

4. ํด๋” ๊ตฌ์กฐ

5. ๊ฐœ๋ฐœ ์Šคํƒ

React JavaScript Vite pnpm React Router Axios TailwindCSS

Motion Vercel ESLint Prettier

6. ํŒ€์› ์†Œ๊ฐœ ๋ฐ ์—ญํ• 

์ด๋ฆ„ / ์ง์ฑ… ์‚ฌ์ง„ ์ฃผ์š” ์—ญํ• 
๋ช…์ง€์šฐ (ํŒ€์žฅ) ๋ช…์ง€์šฐ ์‚ฌ์ง„ ํ”„๋กœ์ ํŠธ ์ด๊ด„
๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ: ์ฐจํŠธ ์ˆœ์œ„, ๊ด€์‹ฌ์žˆ๋Š” ์•„์ด๋Œ
ํ›„์› ์ƒ์„ธ ํŽ˜์ด์ง€
๋งน์€๋นˆ (ํŒ€์›) ๋งน์€๋นˆ ์‚ฌ์ง„ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ: ๋ฒ„ํŠผ, Input
๋งˆ์ด ํŽ˜์ด์ง€
๋ฌธํ˜œ๋ž€ (ํŒ€์›) ๋ฌธํ˜œ๋ž€ ์‚ฌ์ง„ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ
๋ฉ”์ธ ํŽ˜์ด์ง€: ์ฐจํŠธ, ํˆฌํ‘œ
๋ฐ•์žฌํ˜„ (ํŒ€์›) ๋ฐ•์žฌํ˜„ ์‚ฌ์ง„ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •
๋””์ž์ธ ๋ฐ ๋žœ๋”ฉ ํŽ˜์ด์ง€
ํ† ์ŠคํŠธ ๋ฉ”์‹œ์ง€
์œ ์šฉ๋ฏผ (ํŒ€์›) ์œ ์šฉ๋ฏผ ์‚ฌ์ง„ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ: Navbar, ๋ชจ๋‹ฌ์ฐฝ ๋“ฑ
๋ฉ”์ธ ํŽ˜์ด์ง€: ์บ๋Ÿฌ์…€
๋ฐฐํฌ

7. ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค

โœ… ๊ฐœ๋ฐœ ํ๋ฆ„

  1. ๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ ์™„์„ฑ (1~2์ฐจ ์Šคํ”„๋ฆฐํŠธ)

    • ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ ๊ฐœ๋ฐœ (์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„ ๋ถ„๋‹ด)
    • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ (๊ธฐ๋Šฅ ๋‹จ์œ„ ๋ถ„๋‹ด)
  2. ๋ฆฌํŒฉํ† ๋ง (3~4์ฐจ ์Šคํ”„๋ฆฐํŠธ)

    • ํŽ˜์ด์ง€ ๋‹จ์œ„ ๋˜๋Š” ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ๋ฆฌํŒฉํ† ๋ง

โœ… ๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ ์™„์„ฑ

  1. ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ ๊ฐœ๋ฐœ

    • ๊ธฐ๋ณธ ๋งํฌ ์—ฐ๊ฒฐ, onChange, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํฌํ•จ
  2. ๊ธฐ๋Šฅ ๋‹จ์œ„ ๊ฐœ๋ฐœ

    • API ์—ฐ๊ฒฐ ๋“ฑ ์‹ค์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  3. ํŽ˜์ด์ง€ ๋‹จ์œ„ ์™„์„ฑ

    • ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ ˆ์ด์•„์›ƒ์— ๋งž๊ฒŒ ๋ฐฐ์น˜

โœ… ๋ฆฌํŒฉํ† ๋ง

  1. ๋ชจ๋“  ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ ๋ฆฌํŒฉํ† ๋ง ์‹œ์ž‘
  2. ๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ ์™ธ์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์ค‘์  ๊ฐœ๋ฐœ (์˜ˆ: ์• ๋‹ˆ๋ฉ”์ด์…˜)
  3. ์„ ์ ์ œ ๋ฐฉ์‹์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง ์ง„ํ–‰ (R&R ์‚ฌ์ „ ๋ถ„๋‹ด ์—†์Œ)

8. Git ์ „๋žต ๋ฐ ์ปจ๋ฒค์…˜

๋ธŒ๋žœ์น˜ ์ „๋žต

  • Fork ์—†์ด ์ž‘์—…: Organization โ†’ ์›๋ณธ clone
  • ๋ธŒ๋žœ์น˜ ๊ตฌ์กฐ:
    ๋ธŒ๋žœ์น˜ ์„ค๋ช…
    main ์‹ค์ œ ์„œ๋น„์Šค ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜
    develop dev ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜
    feature/๋ฒˆํ˜ธ ๊ธฐ๋Šฅ ๋‹จ์œ„ ์ž‘์—… ๋ธŒ๋žœ์น˜ (์ž‘์—… ์™„๋ฃŒ ํ›„ ์‚ญ์ œ)
    ์˜ˆ: feature/30

๐Ÿ’ฌ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜ (Udacity ์Šคํƒ€์ผ)

ํƒœ๊ทธ ์„ค๋ช…
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ •
docs ๋ฌธ์„œ ์ˆ˜์ •
style ์ฝ”๋“œ ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ ๋“ฑ (์ฝ”๋“œ ๋กœ์ง ๋ณ€ํ™” ์—†์Œ)
refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
chore ๋นŒ๋“œ, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ๋“ฑ ์„ค์ • ๋ณ€๊ฒฝ

๐Ÿงฉ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜

  • ์กฐ๊ฑด์‹์ด ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด๋ฆ„์„ ๋ถ€์—ฌ
  • ๋งค์ง ๋„˜๋ฒ„๋Š” ์ƒ์ˆ˜ํ™”ํ•˜์—ฌ ์‚ฌ์šฉ
  • ์ ˆ๋Œ€ ๊ฒฝ๋กœ alias ์‚ฌ์šฉ ๊ถŒ์žฅ
ํ•ญ๋ชฉ ๋„ค์ด๋ฐ ๊ทœ์น™
๋””๋ ‰ํ† ๋ฆฌ๋ช… kebab-case
์ปดํฌ๋„ŒํŠธ, ํŽ˜์ด์ง€๋ช… PascalCase (ํŒŒ์ผ๋ช… = ์ปดํฌ๋„ŒํŠธ๋ช…)
ํ•จ์ˆ˜, ๋ณ€์ˆ˜, ํ›… camelCase
asset ํŒŒ์ผ๋ช… ์†Œ๋ฌธ์ž ์‚ฌ์šฉ
์•„์ด์ฝ˜: icon_, ์ด๋ฏธ์ง€: image_
์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ prop on__
์ด๋ฒคํŠธ ํ•จ์ˆ˜๋ช… handle__
์ปค์Šคํ…€ ํ›… use__
boolean ํƒ€์ž… ๋ณ€์ˆ˜ is__, has__
Context __Context
๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ(HOC) with__
state setter ํ•จ์ˆ˜ set__
๋ฐฐ์—ด ๋ณ€์ˆ˜ __List
์ปดํฌ๋„ŒํŠธ ์„ ์–ธ ๋ฐฉ์‹ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์‚ฌ์šฉ
UI ์ปดํฌ๋„ŒํŠธ ๋‹จ์ˆ˜ํ˜• ์ด๋ฆ„ (์˜ˆ: Button, Card)
Entity ์ปดํฌ๋„ŒํŠธ Entity๋ช… + ์—ญํ•  (์˜ˆ: UserProfile, ProductCard)
import ์ˆœ์„œ 1) ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (default โ†’ custom)
2) ์ ˆ๋Œ€ ๊ฒฝ๋กœ
3) ์ƒ๋Œ€ ๊ฒฝ๋กœ

Releases

No releases published

Packages

 
 
 

Contributors

Languages