[Electron #1] Electron + React๋กœ ๋งŒ๋“œ๋Š” ํƒ€์ด๋จธ ์•ฑ (With Zustand)

React, Electron, Zustand๋ฅผ ํ™œ์šฉํ•ด ํƒ€์ด๋จธ ์•ฑ์„ ์ง์ ‘ ์ œ์ž‘ํ•˜๊ณ  ํฌ๋กœ์Šค ํ”Œ๋žซํผ(์œˆ๋„์šฐ, ๋งฅ OS, ๋ฆฌ๋ˆ…์Šค)์œผ๋กœ ๋ฐฐํฌ๊นŒ์ง€ ํ•˜๋Š” ์‹ค์ „ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ์ต์ˆ™ํ•œ React ์›น ๊ฐœ๋ฐœ์„ ์‹œ์ž‘์œผ๋กœ, Zustand๋ฅผ ํ†ตํ•œ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ์™€ ์ตœ์ข… GUI ๋ฐฐํฌ๊นŒ์ง€, ๋ฐ์Šคํฌํ†ฑ ์•ฑ ๊ฐœ๋ฐœ์˜ ์ „์ฒด ํ๋ฆ„์„ ๋ฐฐ์šฐ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

(4.8) ์ˆ˜๊ฐ•ํ‰ 6๊ฐœ

์ˆ˜๊ฐ•์ƒ 118๋ช…

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
ํ† ์ดํ”„๋กœ์ ํŠธ
ํ† ์ดํ”„๋กœ์ ํŠธ
์ฒ˜์Œํ•˜๋Š”๋ฐฐํฌ
์ฒ˜์Œํ•˜๋Š”๋ฐฐํฌ
electron
electron
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
ํ† ์ดํ”„๋กœ์ ํŠธ
ํ† ์ดํ”„๋กœ์ ํŠธ
์ฒ˜์Œํ•˜๋Š”๋ฐฐํฌ
์ฒ˜์Œํ•˜๋Š”๋ฐฐํฌ
electron
electron

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

4.8

5.0

kwonkyle

100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์•„์˜ˆ React๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜์‹œ๋Š” ๋ถ„๋“ค๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š”. ์ €๋Š” Next.js์™€ React.js์— ์ต์ˆ™ํ•œ ์ƒํ™ฉ์ด๋ผ, Electron์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ๋ฐ์Šคํฌํƒ‘ ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ์ง‘์ค‘ํ•˜์—ฌ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ์…˜์— ๊ผผ๊ผผํ•˜๊ฒŒ ๋‹จ๊ณ„๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์ฃผ์‹  ๋•์—, ๋น ๋ฅด๊ฒŒ ํ•„์š”ํ•œ ์ง€์‹๋“ค์„ ์Šต๋“ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Electron์˜ ํ•ต์‹ฌ ๊ฐœ๋… ๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•

  • React๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์Šคํฌํ†ฑ UI/UX ๊ฐœ๋ฐœ

  • Zustand๋ฅผ ์ด์šฉํ•œ ์‰ฝ๊ณ  ๊ฐ•๋ ฅํ•œ ์ƒํƒœ ๊ด€๋ฆฌ

  • ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๋นŒ๋“œ, ๋ฐฐํฌ๊นŒ์ง€ ์•ฑ ์ œ์ž‘์˜ ์ „์ฒด ๊ณผ์ • ๊ฒฝํ—˜

  • Electron๊ณผ React ๊ฐ„์˜ ํ†ต์‹  (IPC) ํ™œ์šฉ

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋กœ GUI ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?

๋„ค, ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ๋„ ์›น ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ํ•œ ๋ฒˆ์ฏค์€ ์จ๋ณธ React์™€ ๊ฐ™์ด ๋ง์ด์ฃ .

Python์œผ๋กœ ์ €๋งŒ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด PyQt๋ฅผ ์ ‘ํ–ˆ๋˜ ๊ธฐ์–ต์ด ๋‚ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์€ ์™„๋ฒฝํ–ˆ์ง€๋งŒ ํˆฌ๋ฐ•ํ•œ ๋””์ž์ธ์ด ๋Š˜ ์•„์‰ฌ์› ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ๋งค์ผ๊ฐ™์ด ๋งŒ๋“ค๋˜ ์„ธ๋ จ๋œ ์›น ํŽ˜์ด์ง€์ฒ˜๋Ÿผ, ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”?

์ด ๊ฐ•์˜์—์„œ๋Š” ๋‹จ์ˆœํžˆ ์ด๋ก ๋งŒ ๋ฐฐ์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ์‹ค์ƒํ™œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊น”๋”ํ•˜๊ณ  ์‹ค์šฉ์ ์ธ ํƒ€์ด๋จธ ์•ฑ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ•จ๊ป˜ ๋งŒ๋“ญ๋‹ˆ๋‹ค. React์™€ Tailwind CSS๋กœ ๋ชจ๋˜ํ•œ UI๋ฅผ ๊ทธ๋ฆฌ๊ณ , Zustand๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, Electron์œผ๋กœ ์‹ค์ œ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ์•ฑ(.exe, .dmg)๊นŒ์ง€ ๋งŒ๋“ค์–ด๋ณด๋Š” ์ „ ๊ณผ์ •์„ ๋ฐฐ์šฐ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ GUI ๊ฐœ๋ฐœ #1] Electron + React๋กœ ๋งŒ๋“œ๋Š” ํƒ€์ด๋จธ ์•ฑ (With Zustand)

๋ฐฐํฌ ๊ฐ•์˜, ๋ฌด๋ฃŒ๋กœ ์ˆ˜๊ฐ•ํ•˜์„ธ์š”!

React + Electron ํ”„๋กœ์ ํŠธ์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์ธ '์•ฑ ๋ฐฐํฌ' ๊ณผ์ •๋งŒ ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ์ด ๊ฐ•์˜์˜ Ch 10-4. Firebase Hosting ๋ฐ Ch 11. ์•ฑ ํŒจํ‚ค์ง• ๋ฐ ๋ฐฐํฌ ์ฑ•ํ„ฐ๋Š” ๊ตฌ๋งค์™€ ์ƒ๊ด€์—†์ด ๋ˆ„๊ตฌ๋‚˜ ๋ฌด๋ฃŒ๋กœ ์ˆ˜๊ฐ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ์†Œ์ค‘ํ•œ ํ”„๋กœ์ ํŠธ ๋งˆ๋ฌด๋ฆฌ์— ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐ•์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ณด์„ธ์š”!

์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์™„์„ฑ๋  ํƒ€์ด๋จธ ์•ฑ์ž…๋‹ˆ๋‹ค. ์›น ๋ฒ„์ „์œผ๋กœ ๋ฐ”๋กœ ์ฒดํ—˜ํ•˜๊ฑฐ๋‚˜, ์„ค์น˜ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ปดํ“จํ„ฐ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”.

์›น์—์„œ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ธฐ (Live Demo)

๋‚ด ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ•ด๋ณด๊ธฐ (Desktop App)

์•„๋ž˜์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์šด์˜์ฒด์ œ(OS)์— ๋งž๋Š” ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.

React: ์ต์ˆ™ํ•จ์œผ๋กœ ์™„์„ฑํ•˜๋Š” ์•„๋ฆ„๋‹ค์šด UI

์ด ๊ฐ•์˜๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” React ์ง€์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” React์˜ ํ•ต์‹ฌ์ธ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹๊ณผ Hooks๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํƒ€์ด๋จธ ์•ฑ์˜ ๋ชจ๋“  ํ™”๋ฉด์„ ์ง์ ‘ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Electron: ๋‚ด ์ฝ”๋“œ๋ฅผ ์ง„์งœ '์„ค์น˜ํ˜• GUI'๋กœ

์ด ๊ฐ•์˜์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. Electron์€ ์šฐ๋ฆฌ๊ฐ€ React๋กœ ๋งŒ๋“  ์›น ํ”„๋กœ์ ํŠธ๋ฅผ Windows(.exe), macOS(.dmg) ๋“ฑ์—์„œ ์‹ค์ œ๋กœ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์–ธ์–ด ์—†์ด, ์›น ๊ธฐ์ˆ ๋งŒ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐ์Šคํฌํ†ฑ ์•ฑ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ , ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ๊นŒ์ง€ ๋งŒ๋“ค์–ด๋‚ด๋Š”์ง€ ๊ทธ ์ „ ๊ณผ์ •์„ ์‹ค์Šตํ•ฉ๋‹ˆ๋‹ค.

Zustand: ๊ฐ€์žฅ ์‹ค์šฉ์ ์ด๊ณ  ๊ฐ„ํŽธํ•œ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ

๋ณต์žกํ•œ ์„ค์ •์ด ํ•„์š”ํ•œ Redux ๋Œ€์‹ , ์ด ๊ฐ•์˜์—์„œ๋Š” Zustand๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ด๋จธ์˜ '์‹œ์ž‘/์ •์ง€' ์ƒํƒœ๋‚˜ ๋‚จ์€ ์‹œ๊ฐ„ ๊ฐ™์€ ์ „์—ญ ์ƒํƒœ๋ฅผ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

React & FastAPI๋กœ ๋งŒ๋“œ๋Š” ํˆฌํ‘œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ: ๊ฒฐ์ œ ์‹œ์Šคํ…œ์œผ๋กœ ์ˆ˜์ตํ™”๊นŒ์ง€!

์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ, ๋Œ“๊ธ€, ์ข‹์•„์š” ๊ฐ™์€ ํ•ต์‹ฌ ์†Œ์…œ ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ์นด์นด์˜คํŽ˜์ดยทํ† ์ŠคํŽ˜์ด ์—ฐ๋™์„ ํ†ตํ•œ ๊ฒฐ์ œ ์‹œ์Šคํ…œ๊นŒ์ง€!
๋‹จ๊ณ„๋ณ„ ์‹ค์Šต์œผ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ ๊ตฌ์ถ•๊ณผ ์ˆ˜์ตํ™” ์ „๋žต์„ ํ•œ ๋ฒˆ์— ์ตํ˜€๋ณด์„ธ์š”.

๋‚ด๊ฐ€ ํƒ€์ดํƒ€๋‹‰์— ํƒ”์—ˆ๋‹ค๋ฉด?! PyTorch & Next.js๋กœ ์ƒ์กด ํ™•๋ฅ  ์˜ˆ์ธก AI ์›น ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ

โ€œ๋‚ด๊ฐ€ ํƒ€์ดํƒ€๋‹‰์— ํƒ”๋‹ค๋ฉด ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ์—ˆ์„๊นŒ?โ€๋ผ๋Š” ํฅ๋ฏธ๋กœ์šด ์งˆ๋ฌธ์„ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋กœ ํ’€์–ด๋ด…๋‹ˆ๋‹ค.
PyTorch๋กœ AI ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ณ , FastAPI๋กœ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„, Next.js๋กœ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ, AI์™€ ์›น ๊ฐœ๋ฐœ์„ ์•„์šฐ๋ฅด๋Š” ํ’€์Šคํƒ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‚˜์š”?

Q1. ์›น ๊ฐœ๋ฐœ์ž์ธ๋ฐ, ๊ตณ์ด Electron๊นŒ์ง€ ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ์š”? ๊ทธ๋ƒฅ ์›น๋งŒ ๋งŒ๋“ค์–ด๋„ ๋˜์ง€ ์•Š๋‚˜์š”?

A. ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ Electron์„ ๋ฐฐ์šฐ๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋„˜์–ด ์‚ฌ์šฉ์ž์˜ ๋ฐ์Šคํฌํ†ฑ์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.

์›น ์•ฑ์€ ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋œ ๋ธŒ๋ผ์šฐ์ € ์•ˆ์—์„œ๋งŒ ๋™์ž‘ํ•˜์ง€๋งŒ, Electron์œผ๋กœ ๋งŒ๋“  ์•ฑ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜, ์šด์˜์ฒด์ œ์˜ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ ํ›จ์”ฌ ๊ฐ•๋ ฅํ•˜๊ณ  ํ†ตํ•ฉ๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡๋ณด๋‹ค ๊ฐ€์žฅ ํฐ ์žฅ์ ์€, C#์ด๋‚˜ Java ๊ฐ™์€ ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋ฐฐ์šธ ํ•„์š” ์—†์ด ์—ฌ๋Ÿฌ๋ถ„์ด ๊ฐ€์žฅ ์ž์‹  ์žˆ๋Š” React ๊ธฐ์ˆ ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

Q2. Electron์ด๋‚˜ Zustand๋Š” ์ฒ˜์Œ์ธ๋ฐ, React ์ดˆ๋ณด์ž๋„ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์ธ๊ฐ€์š”?

๋„ค, ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค! ์ด ๊ฐ•์˜๋Š” Javascript ๊ธฐ์ดˆ ์ง€์‹๋งŒ ์žˆ๋‹ค๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋”ฐ๋ผ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • Electron: 'Electron์ด ๋ฌด์—‡์ธ์ง€'๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, React ํ”„๋กœ์ ํŠธ์™€ ์–ด๋–ป๊ฒŒ ์—ฐ๋™ํ•˜๊ณ  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š”์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•จ๊ป˜ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „ ์ง€์‹์ด ์ „ํ˜€ ์—†์–ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

  • Zustand: ์ผ๋ถ€๋Ÿฌ Redux์ฒ˜๋Ÿผ ๋ณต์žกํ•˜๊ณ  ๋ฐฉ๋Œ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€์‹ , ํ›จ์”ฌ ์ง๊ด€์ ์ด๊ณ  ์ฝ”๋“œ๋Ÿ‰์ด ์ ์€ Zustand๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.


Q3. ์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‚˜๋ฉด, ํƒ€์ด๋จธ ์•ฑ ๋ง๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋‚˜์š”?

A. ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค! ์ด ๊ฐ•์˜์˜ ์ง„์งœ ๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํžˆ 'ํƒ€์ด๋จธ ์•ฑ'์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, 'React์™€ Electron์œผ๋กœ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•'์„ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํƒ€์ด๋จธ ์•ฑ์€ ๊ทธ ๊ณต์‹์„ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ์˜ˆ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ์™„๊ฐ•ํ•˜์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์‘์šฉ๋ ฅ์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋งค์ผ ์•„์นจ ์‹œ์„ธ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ฃผ์‹์‹œ์„ธ ํŠธ๋ž˜์ปค

  • API์™€ ์—ฐ๋™๋˜๋Š” ๋‚˜๋งŒ์˜ ๋‚ ์”จ ์ •๋ณด ์•ฑ

  • ํ•  ์ผ ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•˜๋Š” To-do ๋ฆฌ์ŠคํŠธ

์ด ๊ฐ•์˜๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ƒ์ƒํ•˜๋Š” ๋ชจ๋“  ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฌ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

์ด ๊ฐ•์˜๋Š” ์ผ๋ฐ˜์ ์ธ ์‚ฌ์–‘์˜ ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์–ด๋””์„œ๋“  ์ˆ˜๊ฐ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šด์˜ ์ฒด์ œ (OS)

  • Windows: Windows 10 ์ด์ƒ

  • macOS: macOS 11 (Big Sur) ์ด์ƒ

  • Linux: Ubuntu 20.04 LTS ๋“ฑ ์ฃผ์š” ๋ฐฐํฌํŒ


์‚ฌ์šฉ ๋„๊ตฌ

๊ฐ•์˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”.

  • ์ฝ”๋“œ ์—๋””ํ„ฐ: Visual Studio Code

  • ๋Ÿฐํƒ€์ž„: Node.js (18.x LTS ๋ฒ„์ „ ์ด์ƒ ๊ถŒ์žฅ) ๋ฐ npm (Node.js ์„ค์น˜ ์‹œ ์ž๋™ ์„ค์น˜)

  • ๊ธฐํƒ€: ๊ฐ€์ƒ๋จธ์‹ (VM)์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ถŒ์žฅ PC ์‚ฌ์–‘

์›น ๊ฐœ๋ฐœ์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋‹ค์†Œ ๋ฌด๊ฒ๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜ ์‚ฌ์–‘์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ์†Œ ์‚ฌ์–‘์œผ๋กœ๋„ ์‹ค์Šต์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • CPU: Intel i3 / AMD Ryzen 3 ์ด์ƒ

  • ๋ฉ”๋ชจ๋ฆฌ(RAM): 8GB ์ด์ƒ (์ตœ์†Œ 4GB)

  • ๋””์Šคํฌ: ๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ํ”„๋กœ์ ํŠธ ์„ค์น˜๋ฅผ ์œ„ํ•œ 10GB ์ด์ƒ์˜ ์—ฌ์œ  ๊ณต๊ฐ„ (SSD ๊ถŒ์žฅ)

  • ๊ทธ๋ž˜ํ”ฝ์นด๋“œ: ๋‚ด์žฅ ๊ทธ๋ž˜ํ”ฝ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

ํ•™์Šต ์ž๋ฃŒ

ํ•™์Šต์˜ ๋ชจ๋“  ๊ณผ์ •์ด ํ•˜๋‚˜์˜ ๊ณต๊ฐ„์—์„œ ์ฒด๊ณ„์ ์œผ๋กœ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก, ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ Notion ํŽ˜์ด์ง€ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•˜์—ฌ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Notion ํŽ˜์ด์ง€์—์„œ ์ œ๊ณต๋˜๋Š” ๊ฒƒ๋“ค

  • ์ฑ•ํ„ฐ๋ณ„ ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ
    ๊ฐ ์ฑ•ํ„ฐ์˜ ์‹ค์Šต์„ ๋งˆ์นœ ํ›„, ์™„์„ฑ๋œ ์ „์ฒด ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์ฝ”๋“œ์™€ ๋น„๊ตํ•˜๋ฉฐ ๋†“์นœ ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ๋ง‰ํ˜”์„ ๋•Œ ์ฐธ๊ณ ์šฉ์œผ๋กœ ํ™œ์šฉํ•˜์„ธ์š”.


  • ์‹ค์Šต์šฉ ๋ฆฌ์†Œ์Šค ๋ฐ ์• ์…‹
    ๊ฐ•์˜ ์‹ค์Šต์— ํ•„์š”ํ•œ ์•„์ด์ฝ˜, ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋“ฑ์„ ์ง์ ‘ ์ฐพ์„ ํ•„์š” ์—†์ด ๋ฐ”๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


ํ•™์Šต ์ž๋ฃŒ์˜ ํŠน์ง•

  • All-in-One ๊ด€๋ฆฌ: ๋ณ„๋„์˜ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด, ๋‹จ ํ•˜๋‚˜์˜ Notion ๋งํฌ๋งŒ ์ฆ๊ฒจ์ฐพ๊ธฐ ํ•ด๋‘๋ฉด ๋ชจ๋“  ์ž๋ฃŒ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์ง€์†์ ์ธ ์—…๋ฐ์ดํŠธ: ๊ฐ•์˜ ๋‚ด์šฉ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋‚˜ ์ถ”๊ฐ€ ์ž๋ฃŒ๊ฐ€ ์ƒ๊ธธ ๊ฒฝ์šฐ, Notion ํŽ˜์ด์ง€์— ์ฆ‰์‹œ ๋ฐ˜์˜ํ•˜์—ฌ ํ•ญ์ƒ ์ตœ์‹  ์ •๋ณด๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • React์— ์ต์ˆ™ํ•˜์ง€๋งŒ, ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋„˜์–ด ์ž์‹ ๋งŒ์˜ ๋ฐ์Šคํฌํ†ฑ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„

  • ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€, '์™„์„ฑ๋œ' ๋‚˜๋งŒ์˜ ์•ฑ์„ ๋งŒ๋“ค์–ด ์ฐจ๋ณ„ํ™”๋œ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • Redux์˜ ๋ณต์žกํ•จ ๋Œ€์‹ , Zustand์™€ ๊ฐ™์€ ๊ฐ€๋ณ๊ณ  ํ˜„๋Œ€์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹ค์ „ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๊ฒฝํ—˜ํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ๊ธฐ์ดˆ์ ์ธ JavaScript(ES6+) ๋ฌธ๋ฒ•

  • HTML, CSS์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด

์•ˆ๋…•ํ•˜์„ธ์š”
๋‹ญ๊ฐ•์ •์ž…๋‹ˆ๋‹ค.

1,551

๋ช…

์ˆ˜๊ฐ•์ƒ

78

๊ฐœ

์ˆ˜๊ฐ•ํ‰

61

๊ฐœ

๋‹ต๋ณ€

4.5

์ 

๊ฐ•์˜ ํ‰์ 

9

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”! ์„œ๊ฐ•๋Œ€ํ•™๊ต ์ปด๊ณต๊ณผ๋ฅผ ์กธ์—…ํ•˜๊ณ  ํ˜„์žฌ ๋Œ€ํ•™์› ์ง„ํ•™์„ ์ค€๋น„ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค.

๊ณ ๋“ฑํ•™๊ต ๋•Œ ์šฐ์—ฐํžˆ ํ’€์Šคํƒ ์›น ๊ฐœ๋ฐœ๊ณผ ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•œ ์ž๋™ ๋งค๋งค๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋น ์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ํ›„ ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์™ธํ™œ๋™์„ ๊ฒฝํ—˜ํ•˜๋ฉฐ ์‹ค๋ ฅ๊ณผ ๋…ธํ•˜์šฐ๋ฅผ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝํ—˜์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ๋„ "์ด๋ ‡๊ฒŒ ์‰ฌ์šธ ์ˆ˜ ์žˆ๊ตฌ๋‚˜!"๋ผ๋Š” ๋А๋‚Œ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜๋ฅผ ๋งŒ๋“ค๊ณ ์ž ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‹ค์šฉ์ ์ธ ์˜ˆ์ œ์™€ ์นœ๊ทผํ•œ ์„ค๋ช…์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ•™์Šต์„ ๋•๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

GitHub ์ €์žฅ์†Œ ๋ฐ”๋กœ๊ฐ€๊ธฐ (ํด๋ฆญ!)

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

38๊ฐœ โˆ™ (8์‹œ๊ฐ„ 9๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

6๊ฐœ

4.8

6๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • Hong Jung๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    Hong Jung

    ์ˆ˜๊ฐ•ํ‰ 1

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    • dkfkqlxm๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      dkfkqlxm

      ์ˆ˜๊ฐ•ํ‰ 15

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      • ๋‹ญ๊ฐ•์ •
        ์ง€์‹๊ณต์œ ์ž

        ์ œ ๊ฐ•์˜์— ์ฒซ ๋ณ„์ ์„ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋ณ„์  5์ ๊ณผ ํ•จ๊ป˜ ๋๊นŒ์ง€ ๊ฐ•์˜๋ฅผ ๋“ค์–ด์ฃผ์‹  ๋•๋ถ„์— ๋” ํฐ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ์ข‹์€ ๊ฐ•์˜๋กœ ๋ณด๋‹ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    • ๋“œ๋ธŒ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      ๋“œ๋ธŒ

      ์ˆ˜๊ฐ•ํ‰ 7

      โˆ™

      ํ‰๊ท  ํ‰์  4.7

      5

      31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      • ์—ํ”ผ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        ์—ํ”ผ

        ์ˆ˜๊ฐ•ํ‰ 1

        โˆ™

        ํ‰๊ท  ํ‰์  5.0

        5

        100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        • kwonkyle๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
          kwonkyle

          ์ˆ˜๊ฐ•ํ‰ 4

          โˆ™

          ํ‰๊ท  ํ‰์  5.0

          5

          100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

          ์•„์˜ˆ React๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜์‹œ๋Š” ๋ถ„๋“ค๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š”. ์ €๋Š” Next.js์™€ React.js์— ์ต์ˆ™ํ•œ ์ƒํ™ฉ์ด๋ผ, Electron์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ๋ฐ์Šคํฌํƒ‘ ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ์ง‘์ค‘ํ•˜์—ฌ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ์…˜์— ๊ผผ๊ผผํ•˜๊ฒŒ ๋‹จ๊ณ„๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์ฃผ์‹  ๋•์—, ๋น ๋ฅด๊ฒŒ ํ•„์š”ํ•œ ์ง€์‹๋“ค์„ ์Šต๋“ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

          • ๋‹ญ๊ฐ•์ •
            ์ง€์‹๊ณต์œ ์ž

            ์•ˆ๋…•ํ•˜์„ธ์š”. kwonkyle๋‹˜, ๋ณ„ 5๊ฐœ์™€ ์ •์„ฑ์Šค๋Ÿฌ์šด ํ›„๊ธฐ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Electron๊ณผ React๋ฅผ ์ด๋ฏธ ์ž˜ ํ™œ์šฉํ•˜๊ณ  ๊ณ„์‹  ์ƒํƒœ์—์„œ, ๋ฐ์Šคํฌํ†ฑ ์•ฑ ๊ตฌํ˜„๊ณผ ๋ฐฐํฌ ํ๋ฆ„์— ์ง‘์ค‘ํ•ด ํ•™์Šตํ•˜์…จ๋‹ค๋Š” ์ ์ด ์ด ๊ฐ•์˜์˜ ์˜๋„์™€ ์ž˜ ๋งž์•„ ๋”์šฑ ๊ธฐ์˜๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. ํŠนํžˆ ๋…ธ์…˜์— ์ •๋ฆฌ๋œ ๋‹จ๊ณ„๋ณ„ ์ฝ”๋“œ์™€ ์„ค๋ช…์ด ๋น ๋ฅด๊ฒŒ ํ•„์š”ํ•œ ์ง€์‹์„ ์Šต๋“ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋Š” ๋ง์”€์€ ๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•˜๋ฉฐ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜ ๋ถ€๋ถ„์ด๋ผ ํฐ ๋ณด๋žŒ์„ ๋А๋‚๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์ œ์™€, ํ๋ฆ„์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜๋กœ ๋ณด๋‹ต๋“œ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๊ณ„์† ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์†Œ์ค‘ํ•œ ํ›„๊ธฐ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

        ๋‹ญ๊ฐ•์ •๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

        ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

        ๋น„์Šทํ•œ ๊ฐ•์˜

        ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

        โ‚ฉ33,000