Skip to content
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

dimiplan/Dimiplan-admin-panel-frontend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

233 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Dimiplan ๊ด€๋ฆฌ์ž ํŒจ๋„

Dimiplan ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํฌ๊ด„์ ์ธ Angular ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ์ž ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. Material Design 3 ํ…Œ๋งˆ๋ฅผ ์ ์šฉํ•œ ํ˜„๋Œ€์ ์ธ ๊ด€๋ฆฌ์ž ํŒจ๋„๋กœ, ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ, ๋กœ๊ทธ ๋ถ„์„, API ๋ฌธ์„œํ™” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ  ๋Œ€์‹œ๋ณด๋“œ

  • ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง: ์„œ๋ฒ„ ๊ฐ€๋™์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, CPU ์‚ฌ์šฉ๋ฅ , ํ”Œ๋žซํผ ์ •๋ณด, Node.js ๋ฒ„์ „ ๋“ฑ ์‹ค์‹œ๊ฐ„ ํ‘œ์‹œ
  • AI ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์ : AI API ํฌ๋ ˆ๋”ง ๋ฐ ์‚ฌ์šฉ๋Ÿ‰ ํ†ต๊ณ„, ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์„ธ ์‹œ๊ฐํ™”
  • ์‚ฌ์šฉ์ž ํ†ต๊ณ„: ์ด ์‚ฌ์šฉ์ž ์ˆ˜, ํ™œ์„ฑ ์‚ฌ์šฉ์ž(30์ผ), ์ตœ๊ทผ ์‹ ๊ทœ ์‚ฌ์šฉ์ž ๋“ฑ๋ก ํ˜„ํ™ฉ
  • ๋น ๋ฅธ ์ž‘์—…: ๋กœ๊ทธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API ๋ฌธ์„œ๋กœ์˜ ํŽธ๋ฆฌํ•œ ํƒ์ƒ‰
  • ์‹œ๊ฐํ™”: ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU ์‚ฌ์šฉ๋ฅ  ์ง„ํ–‰ ๋ง‰๋Œ€, ํ™˜๊ฒฝ๋ณ„ ์ƒํƒœ ๋ฐฐ์ง€

๐Ÿ—„๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ

  • ํ…Œ์ด๋ธ” ๋ธŒ๋ผ์šฐ์ €: ํ–‰ ๊ฐœ์ˆ˜์™€ ํ•จ๊ป˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๋ชฉ๋ก ํ‘œ์‹œ
  • ์Šคํ‚ค๋งˆ ๋ทฐ์–ด: ํ…Œ์ด๋ธ” ๊ตฌ์กฐ(์ปฌ๋Ÿผ๋ช…, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ํ‚ค ์ •๋ณด, Nullable ์—ฌ๋ถ€) ์ƒ์„ธ ํ‘œ์‹œ
  • ๋Œ€ํ™”ํ˜• ๋ฐ์ดํ„ฐ ํƒ์ƒ‰: ํŽ˜์ด์ง€๋„ค์ด์…˜(25, 50, 100, 200๊ฐœ ๋ ˆ์ฝ”๋“œ)์œผ๋กœ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ํƒ์ƒ‰
  • ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ: ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ CSV ํ˜•์‹์œผ๋กœ ๋‹ค์šด๋กœ๋“œ
  • ์ปฌ๋Ÿผ ์ •๋ณด ์‹œ๊ฐํ™”: ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ณ„ ์ƒ‰์ƒ ๊ตฌ๋ถ„, ํ‚ค ํƒ€์ž…๋ณ„ ์•„์ด์ฝ˜ ํ‘œ์‹œ(PRI, UNI, MUL)
  • tooltips: ๊ธด ๋ฐ์ดํ„ฐ๋Š” ํˆดํŒ์œผ๋กœ ์ „์ฒด ๋‚ด์šฉ ํ™•์ธ ๊ฐ€๋Šฅ

๐Ÿ“‹ ๋กœ๊ทธ ๊ด€๋ฆฌ

  • ๋กœ๊ทธ ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €: ํŒŒ์ผ ํฌ๊ธฐ์™€ ์ˆ˜์ • ๋‚ ์งœ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋กœ๊ทธ ํŒŒ์ผ ๋ชฉ๋ก
  • ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ๋ทฐ์–ด: ์„ ํƒํ•œ ๋กœ๊ทธ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ‘œ์‹œ
  • ๋กœ๊ทธ ๋ ˆ๋ฒจ ํ•„ํ„ฐ๋ง: ๋กœ๊ทธ ๋ ˆ๋ฒจ๋ณ„ ํ•„ํ„ฐ๋ง(error, warn, info, verbose)
  • ๊ตฌ๋ฌธ ๊ฐ•์กฐ: ๋กœ๊ทธ ๋ ˆ๋ฒจ๋ณ„ ์ƒ‰์ƒ ๊ตฌ๋ถ„, ํƒ€์ž„์Šคํƒฌํ”„ ํŒŒ์‹ฑ
  • ๋‹ค์šด๋กœ๋“œ: ์™„์ „ํ•œ ๋กœ๊ทธ ํŒŒ์ผ ๋กœ์ปฌ ๋‹ค์šด๋กœ๋“œ
  • ์‚ฌ์šฉ์ž ์นœํ™”์  ํ‘œ์‹œ: ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ B, KB, MB, GB ๋‹จ์œ„๋กœ ์ž๋™ ํฌ๋งทํŒ…

๐Ÿ“š API ๋ฌธ์„œ

  • ์ž๋™ JSDoc ๋ฌธ์„œํ™”: JSDoc ์ฃผ์„ ๊ธฐ๋ฐ˜ API ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ ๋ฐ ํŒŒ์‹ฑ
  • ๋Œ€ํ™”ํ˜• ๋ฌธ์„œ ํƒ์ƒ‰: ๊ฒฝ๋กœ, ๋ฉ”์„œ๋“œ, ์„ค๋ช…์œผ๋กœ API ์—”๋“œํฌ์ธํŠธ ๊ฒ€์ƒ‰
  • ํŒŒ์ผ๋ณ„ ํ•„ํ„ฐ๋ง: API ์—”๋“œํฌ์ธํŠธ๋ฅผ ํŒŒ์ผ๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํƒ์ƒ‰
  • ๋ณต์žกํ•œ ๋ฐ˜ํ™˜๊ฐ’ ์ฒ˜๋ฆฌ: ์ค‘์ฒฉ๋œ ๊ฐ์ฒด ๋ฐ ๋ฐฐ์—ด ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํ‘œ์‹œ
  • cURL ์˜ˆ์ œ: ๊ฐ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ cURL ๋ช…๋ น์–ด ์ƒ์„ฑ ๋ฐ ํด๋ฆฝ๋ณด๋“œ ๋ณต์‚ฌ
  • ๋ฌธ์„œ ๋‚ด๋ณด๋‚ด๊ธฐ: API ๋ฌธ์„œ๋ฅผ Markdown ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
  • ์‹ค์‹œ๊ฐ„ ์žฌ์ƒ์„ฑ: ์š”์ฒญ ์‹œ JSDoc ๋ฌธ์„œ ์žฌ์ƒ์„ฑ
  • HTTP ๋ฉ”์„œ๋“œ๋ณ„ ์ƒ‰์ƒ ๊ตฌ๋ถ„: GET, POST, PUT, DELETE ๋ฉ”์„œ๋“œ๋ณ„ ์‹œ๊ฐ์  ๊ตฌ๋ถ„

๊ธฐ์ˆ  ์Šคํƒ

ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ

  • Angular 20.0.3 (์ตœ์‹  ๋ฒ„์ „, Standalone ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ)
  • Angular Material 20.0.3 (Material Design 3 ํ…Œ๋งˆ)
  • RxJS 7.8.2 (๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ)

UI/์Šคํƒ€์ผ๋ง

  • Tailwind CSS 3.4.17 (์œ ํ‹ธ๋ฆฌํ‹ฐ ์šฐ์„  ์Šคํƒ€์ผ๋ง)
  • Material Design 3 ์ƒ‰์ƒ ์‹œ์Šคํ…œ ๋ฐ ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ
  • PostCSS & Autoprefixer (CSS ์ฒ˜๋ฆฌ)
  • ์™„์ „ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ: ๋ชจ๋ฐ”์ผ ์นœํ™”์  ๋ ˆ์ด์•„์›ƒ

๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ์–ธ์–ด

  • TypeScript 5.8.3 (๊ฐ•ํƒ€์ž… ์‹œ์Šคํ…œ)
  • Jasmine & Karma (๋‹จ์œ„ ํ…Œ์ŠคํŠธ)
  • Angular CLI 20.0.2 (๊ฐœ๋ฐœ ๋„๊ตฌ)

์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด

  • ๋ชจ๋˜ Angular ํŒจํ„ด: Standalone ์ปดํฌ๋„ŒํŠธ, ํ•จ์ˆ˜ํ˜• ์ธํ„ฐ์…‰ํ„ฐ
  • ์˜์กด์„ฑ ์ฃผ์ž…: ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜
  • ํƒ€์ž… ์•ˆ์ „์„ฑ: ๋ชจ๋“  API ์‘๋‹ต์— ๋Œ€ํ•œ TypeScript ์ธํ„ฐํŽ˜์ด์Šค

์„ค์น˜ ๋ฐ ์‹คํ–‰

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 18+
  • npm ๋˜๋Š” yarn
  • Angular CLI 20+

์„ค์น˜

npm install

๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

npm start
# ๋˜๋Š”
ng serve

๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:4200/๋กœ ์ ‘์†ํ•˜์„ธ์š”.

๋นŒ๋“œ

npm run build
# ๋˜๋Š”
ng build

๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์€ dist/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ

npm test
# ๋˜๋Š”
ng test

์ธ์ฆ ๋ฐ ๋ณด์•ˆ

Google OAuth ์ธ์ฆ

  • Google ๊ณ„์ • ์—ฐ๋™: Google OAuth๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ ๊ด€๋ฆฌ์ž ์ธ์ฆ
  • ๊ฐ•์ œ ๋กœ๊ทธ์ธ: 401 ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ๋กœ๊ทธ์ธ ๋ชจ๋‹ฌ ํ‘œ์‹œ
  • ์„ธ์…˜ ์œ ์ง€: ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์„ธ์…˜ ๊ด€๋ฆฌ (withCredentials: true)
  • ์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ: ์ธ์ฆ ํ›„ ๊ด€๋ฆฌ์ž ํŒจ๋„๋กœ ์ž๋™ ๋ณต๊ท€

๋ณด์•ˆ ๊ธฐ๋Šฅ

  • HTTP ์ธํ„ฐ์…‰ํ„ฐ: ๋ชจ๋“  API ์š”์ฒญ์— ์ž๋™ ํฌ๋ฆฌ๋ด์…œ ์ฒจ๋ถ€
  • 401 ์—๋Ÿฌ ์ž๋™ ์ฒ˜๋ฆฌ: ์ธ์ฆ ์‹คํŒจ ์‹œ ์ž๋™ ๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค
  • CORS ์ง€์›: ๋„๋ฉ”์ธ ๊ฐ„ ์ฟ ํ‚ค ์„ธ์…˜ ์ƒํƒœ ์œ ์ง€
  • ํƒ€์ž… ์•ˆ์ „์„ฑ: TypeScript๋ฅผ ํ†ตํ•œ ์ปดํŒŒ์ผ ํƒ€์ž„ ๋ณด์•ˆ

์„ค์ •

๋ฐฑ์—”๋“œ API ์—ฐ๊ฒฐ

๊ธฐ๋ณธ์ ์œผ๋กœ https://api-dev.dimiplan.com์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ API ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด src/app/services/admin.service.ts์—์„œ API_BASE_URL์„ ์ˆ˜์ •ํ•˜์„ธ์š”.

ํ…Œ๋งˆ ์„ค์ •

  • ๋‹คํฌ/๋ผ์ดํŠธ ๋ชจ๋“œ: ์‚ฌ์šฉ์ž๊ฐ€ ํ† ๊ธ€ ๋ฒ„ํŠผ์œผ๋กœ ํ…Œ๋งˆ ์ „ํ™˜ ๊ฐ€๋Šฅ
  • ํ…Œ๋งˆ ์ง€์†์„ฑ: localStorage๋ฅผ ํ†ตํ•œ ํ…Œ๋งˆ ์„ค์ • ์ €์žฅ ๋ฐ ๋ณต์›
  • Material Design 3: ์ตœ์‹  Material Design ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ์ƒ‰์ƒ ํ† ํฐ ์ ์šฉ
  • ์™„์ „ ๋ฐ˜์‘ํ˜•: ๋ชจ๋ฐ”์ผ๊ณผ ๋ฐ์Šคํฌํ†ฑ์—์„œ ์ตœ์ ํ™”๋œ ๋ ˆ์ด์•„์›ƒ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

src/app/
โ”œโ”€โ”€ components/              # ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ dashboard/          # ๋Œ€์‹œ๋ณด๋“œ (์‹œ์Šคํ…œ ์ƒํƒœ, ์‚ฌ์šฉ์ž ํ†ต๊ณ„, AI ์‚ฌ์šฉ๋Ÿ‰)
โ”‚   โ”œโ”€โ”€ database/           # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ (ํ…Œ์ด๋ธ” ํƒ์ƒ‰, ๋ฐ์ดํ„ฐ ๋ทฐ์–ด)
โ”‚   โ”œโ”€โ”€ logs/              # ๋กœ๊ทธ ๊ด€๋ฆฌ (ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €, ๋กœ๊ทธ ๋ทฐ์–ด)
โ”‚   โ”œโ”€โ”€ api-docs/          # API ๋ฌธ์„œ (์ž๋™ ์ƒ์„ฑ, ๊ฒ€์ƒ‰, ๋‚ด๋ณด๋‚ด๊ธฐ)
โ”‚   โ””โ”€โ”€ login-modal/       # ๋กœ๊ทธ์ธ ๋ชจ๋‹ฌ (Google OAuth)
โ”œโ”€โ”€ services/              # ์„œ๋น„์Šค ๋ ˆ์ด์–ด
โ”‚   โ”œโ”€โ”€ admin.service.ts   # ๊ด€๋ฆฌ์ž API ํ†ตํ•ฉ ์„œ๋น„์Šค
โ”‚   โ””โ”€โ”€ auth-modal.service.ts  # ์ธ์ฆ ๋ชจ๋‹ฌ ๊ด€๋ฆฌ ์„œ๋น„์Šค
โ”œโ”€โ”€ interceptors/          # HTTP ์ธํ„ฐ์…‰ํ„ฐ
โ”‚   โ””โ”€โ”€ auth.interceptor.ts    # ์ธ์ฆ ๋ฐ CORS ์ฒ˜๋ฆฌ
โ”œโ”€โ”€ styles/               # ์ „์—ญ ์Šคํƒ€์ผ
โ”‚   โ”œโ”€โ”€ material-tokens.scss   # Material Design 3 ํ† ํฐ
โ”‚   โ””โ”€โ”€ material-you-theme.scss # Material You ํ…Œ๋งˆ
โ”œโ”€โ”€ app.config.ts         # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •
โ”œโ”€โ”€ app.routes.ts         # ๋ผ์šฐํŒ… ์„ค์ •
โ”œโ”€โ”€ app.ts               # ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ
โ””โ”€โ”€ app.html             # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…œํ”Œ๋ฆฟ

API ์—”๋“œํฌ์ธํŠธ

๊ด€๋ฆฌ์ž ํŒจ๋„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” API ์—”๋“œํฌ์ธํŠธ:

  • GET /system-status - ์‹œ์Šคํ…œ ์ƒํƒœ ์ •๋ณด
  • GET /stats/users - ์‚ฌ์šฉ์ž ํ†ต๊ณ„
  • GET /ai-usage - AI ์‚ฌ์šฉ๋Ÿ‰ ํ†ต๊ณ„
  • GET /logs - ๋กœ๊ทธ ํŒŒ์ผ ๋ชฉ๋ก
  • GET /logs/{filename} - ํŠน์ • ๋กœ๊ทธ ํŒŒ์ผ ๋‚ด์šฉ
  • GET /database/tables - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๋ชฉ๋ก
  • GET /database/tables/{tableName} - ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๋ฐ ์Šคํ‚ค๋งˆ
  • GET /docs - API ๋ฌธ์„œ
  • POST /docs/regenerate - API ๋ฌธ์„œ ์žฌ์ƒ์„ฑ

๊ฐœ๋ฐœ ํŠน์ง•

๋ชจ๋˜ Angular ํŒจํ„ด

  • Standalone ์ปดํฌ๋„ŒํŠธ: @Component ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์—์„œ imports ์ง์ ‘ ๊ด€๋ฆฌ
  • ํ•จ์ˆ˜ํ˜• ์ธํ„ฐ์…‰ํ„ฐ: ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ ํ•จ์ˆ˜ํ˜• HTTP ์ธํ„ฐ์…‰ํ„ฐ ์‚ฌ์šฉ
  • ์˜์กด์„ฑ ์ฃผ์ž…: inject() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•œ ํ˜„๋Œ€์  DI ํŒจํ„ด

์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ตœ์ ํ™”

  • ๋กœ๋”ฉ ์ƒํƒœ: ๋ชจ๋“  ๋น„๋™๊ธฐ ์ž‘์—…์— ๋Œ€ํ•œ ๋กœ๋”ฉ ์ธ๋””์ผ€์ดํ„ฐ
  • ์—๋Ÿฌ ์ฒ˜๋ฆฌ: ์‚ฌ์šฉ์ž ์นœํ™”์  ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ฐ ์ž๋™ ๋ณต๊ตฌ
  • ๋ฐ˜์‘ํ˜• ํ”ผ๋“œ๋ฐฑ: ์„ฑ๊ณต/์‹คํŒจ์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์ ์ธ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ
  • ํ‚ค๋ณด๋“œ ๋„ค๋น„๊ฒŒ์ด์…˜: ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•œ ํ‚ค๋ณด๋“œ ์ง€์›

์„ฑ๋Šฅ ์ตœ์ ํ™”

  • ์ง€์—ฐ ๋กœ๋”ฉ: ๋ผ์šฐํŠธ๋ณ„ ์ปดํฌ๋„ŒํŠธ ๋ถ„ํ• 
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋”ฐ๋ฅธ ๊ตฌ๋… ํ•ด์ œ
  • ํšจ์œจ์ ์ธ ๋ Œ๋”๋ง: Angular์˜ OnPush ๋ณ€๊ฒฝ ๊ฐ์ง€ ์ „๋žต ํ™œ์šฉ

์ด ๊ด€๋ฆฌ์ž ํŒจ๋„์€ Dimiplan ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์˜ ํฌ๊ด„์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋””๋ฒ„๊น…, ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์›์Šคํ†ฑ ์†”๋ฃจ์…˜์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Contributors

โšก