๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ธฐํƒ€

AI ๋ฉ”์ผ ์–ด์‹œ์Šคํ„ดํŠธ ๋งŒ๋“ค๊ธฐ ์—…๋ฌด ๋ฉ”์ผ ์ž๋™ํ™” ํ”„๋กœ์ ํŠธ

by ๋Œ๋งน96 2025. 11. 26.
๋ฐ˜์‘ํ˜•
๐ŸŽฏ ์™œ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‚˜์š”?
์‚ฌ๋‚ด ์—…๋ฌด๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ํ•˜๋ฃจ์—๋„ ์ˆ˜์‹ญ ํ†ต์˜ ์ž๋™ ๋ฉ”์ผ์ด ์Ÿ์•„์ง‘๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์•Œ๋ฆผ, ๋ณด๊ณ ์„œ, ๊ณต์ง€์‚ฌํ•ญ ๋“ฑ... ์ค‘์š”ํ•œ ๋ฉ”์ผ์„ ๋†“์น˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋งค๋ฒˆ ํ™•์ธํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋ชจ๋“  ๋ฉ”์ผ์„ ์ผ์ผ์ด ์ฝ๊ธฐ์—” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์•„๊น์Šต๋‹ˆ๋‹ค.

"๋ฉ”์ผ์„ ์ž๋™์œผ๋กœ ์ฝ๊ณ  ์š”์•ฝํ•ด์ฃผ๋Š” AI ์–ด์‹œ์Šคํ„ดํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ?"

์ด๋Ÿฐ ์ƒ๊ฐ์—์„œ ์‹œ์ž‘ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฐ”๋กœ Message Assistant์ž…๋‹ˆ๋‹ค.

๐Ÿ“ธ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ
Message Assistant๋Š” ๋„ค์ด๋ฒ„ ๋ฉ”์ผ์„ ์ž๋™์œผ๋กœ ์ฝ์–ด์™€์„œ Google Gemini AI๋กœ ์š”์•ฝํ•ด์ฃผ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋ฉ”์‹ ์ €์ฒ˜๋Ÿผ ์ง๊ด€์ ์ธ UI๋กœ ๋ฉ”์ผ์„ ํ™•์ธํ•˜๊ณ , AI๊ฐ€ ํ•ต์‹ฌ ๋‚ด์šฉ๋งŒ ์ถ”๋ ค์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ
1. ๐Ÿ“ง ๋„ค์ด๋ฒ„ ๋ฉ”์ผ ์ž๋™ ์—ฐ๋™
IMAP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค์ด๋ฒ„ ๋ฉ”์ผ ์„œ๋ฒ„์™€ ์ง์ ‘ ์—ฐ๊ฒฐ
์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฉ”์ผ์„ ๊ฐ€์ ธ์™€์„œ ํ‘œ์‹œ
2๋‹จ๊ณ„ ์ธ์ฆ์„ ์ง€์›ํ•˜์—ฌ ๋ณด์•ˆ์„ฑ ํ™•๋ณด
2. ๐Ÿค– AI ๊ธฐ๋ฐ˜ ๋ฉ”์ผ ์š”์•ฝ
Google Gemini 1.5 Flash ๋ชจ๋ธ ์‚ฌ์šฉ
๊ฐ ๋ฉ”์ผ์˜ ํ•ต์‹ฌ ๋‚ด์šฉ์„ 3-4์ค„๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์š”์•ฝ
๋ฐœ์‹ ์ž, ์ œ๋ชฉ, ๋ณธ๋ฌธ์„ ๋ชจ๋‘ ๋ถ„์„ํ•˜์—ฌ ์ค‘์š” ์ •๋ณด ์ถ”์ถœ
3. ๐Ÿ’ฌ ์ฑ„ํŒ…๋ฐฉ ํ˜•์‹์˜ ์ง๊ด€์ ์ธ UI
๋ฐœ์‹ ์ž๋ณ„๋กœ ์ž๋™์œผ๋กœ ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ
๋ฉ”์‹ ์ €์ฒ˜๋Ÿผ ํŽธํ•˜๊ฒŒ ๋ฉ”์ผ ํ™•์ธ
๋‹คํฌ ๋ชจ๋“œ ๊ธฐ๋ฐ˜์˜ ์„ธ๋ จ๋œ ๋””์ž์ธ
4. ๐Ÿ”” ์ƒˆ ๋ฉ”์ผ ์•Œ๋ฆผ
์ƒˆ๋กœ์šด ๋ฉ”์ผ์ด ๋„์ฐฉํ•˜๋ฉด ์•Œ๋ฆผ์Œ ์žฌ์ƒ
์•Œ๋ฆผ on/off ํ† ๊ธ€ ๊ธฐ๋Šฅ
์‹œ๊ฐ์  ์•Œ๋ฆผ ํ‘œ์‹œ (๋ฒจ ์•„์ด์ฝ˜ ์ƒ‰์ƒ ๋ณ€๊ฒฝ)
5. โš™๏ธ ์‚ฌ์šฉ์ž ์„ค์ •
๊ฐ€์ ธ์˜ฌ ๋ฉ”์ผ ๊ฐœ์ˆ˜ ์„ค์ • (10/20/50/100๊ฐœ)
ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๋ฉ”์ผ์„ ๋กœ๋“œํ•˜์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”
๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ
Frontend
React + Vite: ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ Hot Module Replacement
Tailwind CSS: ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ธฐ๋ฐ˜์˜ ํšจ์œจ์ ์ธ ์Šคํƒ€์ผ๋ง
Lucide React: ์•„๋ฆ„๋‹ค์šด ์•„์ด์ฝ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Backend
Express.js: ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ Node.js ์›น ํ”„๋ ˆ์ž„์›Œํฌ
imap-simple: IMAP ํ”„๋กœํ† ์ฝœ๋กœ ๋ฉ”์ผ ์„œ๋ฒ„ ์—ฐ๊ฒฐ
mailparser: ๋ฉ”์ผ ํŒŒ์‹ฑ ๋ฐ ๋ณธ๋ฌธ ์ถ”์ถœ
AI
Google Gemini API: ์ตœ์‹  ์ƒ์„ฑํ˜• AI ๋ชจ๋ธ
@google/generative-ai: ๊ณต์‹ Node.js SDK
๐ŸŽจ ์ฃผ์š” ํ™”๋ฉด ์„ค๋ช…
๋ฉ”์ธ ํ™”๋ฉด
์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”: ๋ฐœ์‹ ์ž๋ณ„ ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก

๊ฐ ์ฑ„ํŒ…๋ฐฉ์—๋Š” ๋ฐœ์‹ ์ž ์ด๋ฆ„๊ณผ ์ตœ๊ทผ ๋ฉ”์ผ ๊ฐœ์ˆ˜ ํ‘œ์‹œ
ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ๋ฐœ์‹ ์ž์˜ ๋ฉ”์ผ ๋ชฉ๋ก ํ‘œ์‹œ
์˜ค๋ฅธ์ชฝ ์ฑ„ํŒ… ์˜์—ญ: ์„ ํƒํ•œ ์ฑ„ํŒ…๋ฐฉ์˜ ๋ฉ”์ผ ๋‚ด์šฉ

์›๋ณธ ๋ฉ”์ผ ๋‚ด์šฉ๊ณผ AI ์š”์•ฝ์ด ํ•จ๊ป˜ ํ‘œ์‹œ
์‹œ๊ฐ„์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์ตœ์‹  ๋ฉ”์ผ์ด ์•„๋ž˜์— ํ‘œ์‹œ
์ƒ๋‹จ ํ—ค๋”:

์ƒˆ๋กœ๊ณ ์นจ ๋ฒ„ํŠผ์œผ๋กœ ๋ฉ”์ผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
์•Œ๋ฆผ ํ† ๊ธ€ ๋ฒ„ํŠผ
์„ค์ • ๋ฒ„ํŠผ
์„ค์ • ๋ชจ๋‹ฌ
๋ฉ”์ผ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฐœ์ˆ˜ ์„ ํƒ
์„ค์ • ์ €์žฅ ๋ฐ ์ฆ‰์‹œ ์ ์šฉ
๐Ÿ’ก ํ–ฅํ›„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์„ ๊ธฐ๋Šฅ๋“ค
ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์—ฌ๋Ÿฌ ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. ๋…์ž ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ๋„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

1. ๐Ÿท๏ธ ๋ฉ”์ผ ์ž๋™ ๋ถ„๋ฅ˜ ๋ฐ ๋ผ๋ฒจ๋ง
AI๊ฐ€ ๋ฉ”์ผ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜
"๊ธด๊ธ‰", "์—…๋ฌด", "๊ณต์ง€", "์ŠคํŒธ" ๋“ฑ์˜ ๋ผ๋ฒจ ์ž๋™ ๋ถ€์—ฌ
์ค‘์š”๋„์— ๋”ฐ๋ฅธ ์šฐ์„ ์ˆœ์œ„ ํ‘œ์‹œ
2. ๐Ÿ“Š ๋ฉ”์ผ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ
์ผ๋ณ„/์ฃผ๋ณ„ ๋ฉ”์ผ ์ˆ˜์‹  ํ†ต๊ณ„
๋ฐœ์‹ ์ž๋ณ„ ๋ฉ”์ผ ๋นˆ๋„ ์ฐจํŠธ
๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›๋Š” ๋ฉ”์ผ ์œ ํ˜• ๋ถ„์„
3. ๐Ÿ” ์Šค๋งˆํŠธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž์—ฐ์–ด ์งˆ์˜ ์ง€์›
"์ง€๋‚œ์ฃผ ๊น€๊ณผ์žฅ๋‹˜์ด ๋ณด๋‚ธ ์˜ˆ์‚ฐ ๊ด€๋ จ ๋ฉ”์ผ" ๊ฐ™์€ ์งˆ๋ฌธ์œผ๋กœ ๊ฒ€์ƒ‰
AI๊ฐ€ ๋ฌธ๋งฅ์„ ์ดํ•ดํ•˜์—ฌ ๊ด€๋ จ ๋ฉ”์ผ ์ฐพ๊ธฐ
4. ๐Ÿ“ ์ž๋™ ์‘๋‹ต ์ œ์•ˆ
AI๊ฐ€ ๋ฉ”์ผ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜์—ฌ ์ ์ ˆํ•œ ๋‹ต์žฅ ์ดˆ์•ˆ ์ž‘์„ฑ
์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ†ค(๊ณต์‹์ /์นœ๊ทผํ•œ/๊ฐ„๊ฒฐํ•œ)์œผ๋กœ ์‘๋‹ต ์ƒ์„ฑ
์›ํด๋ฆญ์œผ๋กœ ๋‹ต์žฅ ์ „์†ก
5. ๐Ÿ”— ๋‹ค๋ฅธ ๋ฉ”์ผ ์„œ๋น„์Šค ์ง€์›
Gmail, Outlook, Daum ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฉ”์ผ ์„œ๋น„์Šค ์—ฐ๋™
์—ฌ๋Ÿฌ ๊ณ„์ •์„ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๊ด€๋ฆฌ
ํ†ตํ•ฉ ๋ฐ›์€ํŽธ์ง€ํ•จ ๊ธฐ๋Šฅ
6. ๐Ÿ“ฑ ๋ชจ๋ฐ”์ผ ์•ฑ ๋ฒ„์ „
React Native๋กœ iOS/Android ์•ฑ ๊ฐœ๋ฐœ
ํ‘ธ์‹œ ์•Œ๋ฆผ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋ฉ”์ผ ํ™•์ธ
์˜คํ”„๋ผ์ธ์—์„œ๋„ ์ด์ „ ๋ฉ”์ผ ์—ด๋žŒ ๊ฐ€๋Šฅ
7. ๐Ÿค ํŒ€ ํ˜‘์—… ๊ธฐ๋Šฅ
์ค‘์š”ํ•œ ๋ฉ”์ผ์„ ํŒ€์›๊ณผ ๊ณต์œ 
๋ฉ”์ผ์— ๋Œ€ํ•œ ๋Œ“๊ธ€ ๋ฐ ํ† ๋ก  ๊ธฐ๋Šฅ
์—…๋ฌด ํ• ๋‹น ๋ฐ ์ง„ํ–‰ ์ƒํ™ฉ ์ถ”์ 
8. ๐ŸŽฏ ์Šค๋งˆํŠธ ํ•„ํ„ฐ๋ง
์ฝ์ง€ ์•Š์€ ๋ฉ”์ผ๋งŒ ๋ณด๊ธฐ
ํŠน์ • ๊ธฐ๊ฐ„ ๋‚ด ๋ฉ”์ผ๋งŒ ํ•„ํ„ฐ๋ง
์ฒจ๋ถ€ํŒŒ์ผ์ด ์žˆ๋Š” ๋ฉ”์ผ๋งŒ ๋ชจ์•„๋ณด๊ธฐ
9. ๐Ÿ“Ž ์ฒจ๋ถ€ํŒŒ์ผ ๊ด€๋ฆฌ
์ฒจ๋ถ€ํŒŒ์ผ ์ž๋™ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋ถ„๋ฅ˜
ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ์—ฐ๋™ (Google Drive, Dropbox)
์ฒจ๋ถ€ํŒŒ์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ
10. ๐Ÿ” ๋ณด์•ˆ ๊ฐ•ํ™”
์ข…๋‹จ๊ฐ„ ์•”ํ˜ธํ™” (E2E Encryption)
์ƒ์ฒด ์ธ์ฆ (์ง€๋ฌธ, ์–ผ๊ตด ์ธ์‹)
์ž๋™ ๋กœ๊ทธ์•„์›ƒ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ
๐Ÿš€ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฐฐ์šด ์ 
1. IMAP ํ”„๋กœํ† ์ฝœ์˜ ์ดํ•ด
์ฒ˜์Œ์—๋Š” ๋ฉ”์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๊ฐ„๋‹จํ•  ์ค„ ์•Œ์•˜์ง€๋งŒ, IMAP ํ”„๋กœํ† ์ฝœ์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋„ค์ด๋ฒ„์˜ 2๋‹จ๊ณ„ ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

2. AI ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง
Gemini API์— ์–ด๋–ค ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ฃผ๋А๋ƒ์— ๋”ฐ๋ผ ์š”์•ฝ์˜ ํ’ˆ์งˆ์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์‹œํ–‰์ฐฉ์˜ค ๋์— "ํ•ต์‹ฌ ๋‚ด์šฉ์„ 3-4์ค„๋กœ ์š”์•ฝํ•˜๋˜, ๋ฐœ์‹ ์ž์™€ ์ฃผ์š” ์•ก์…˜ ์•„์ดํ…œ์„ ํฌํ•จํ•˜๋ผ"๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

3. React ์ƒํƒœ ๊ด€๋ฆฌ
์ฑ„ํŒ…๋ฐฉ์„ ์„ ํƒํ•  ๋•Œ๋งˆ๋‹ค ๋ฉ”์ผ์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณผ์ •์—์„œ race condition ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. useEffect์˜ cleanup ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด์ „ ์š”์ฒญ์„ ์ทจ์†Œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

4. ๋ณด์•ˆ์˜ ์ค‘์š”์„ฑ
API ํ‚ค์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. 
.gitignore
๋ฅผ ์ œ๋Œ€๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ํฐ ๋ฌธ์ œ๊ฐ€ ๋  ๋ป”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ
message-assistant/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ ChatArea.jsx      # ๋ฉ”์ผ ํ‘œ์‹œ ์˜์—ญ
โ”‚   โ”‚   โ”œโ”€โ”€ Sidebar.jsx        # ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก
โ”‚   โ”‚   โ”œโ”€โ”€ SettingsModal.jsx  # ์„ค์ • ๋ชจ๋‹ฌ
โ”‚   โ”‚   โ””โ”€โ”€ Layout.jsx         # ์ „์ฒด ๋ ˆ์ด์•„์›ƒ
โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ””โ”€โ”€ gemini.js          # Gemini API ์—ฐ๋™
โ”‚   โ””โ”€โ”€ App.jsx                # ๋ฉ”์ธ ์•ฑ
โ”œโ”€โ”€ server.js                  # Express ๋ฐฑ์—”๋“œ
โ”œโ”€โ”€ .env                       # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (git ์ œ์™ธ)
โ””โ”€โ”€ README.md                  # ํ”„๋กœ์ ํŠธ ์„ค๋ช…
๐ŸŽ“ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•
ํ”„๋กœ์ ํŠธ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? GitHub์—์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

GitHub ์ €์žฅ์†Œ: https://github.com/sdm6410/message-assistant

๋น ๋ฅธ ์‹œ์ž‘
# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/sdm6410/message-assistant.git
cd message-assistant
# ์˜์กด์„ฑ ์„ค์น˜
npm install
# ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
cp .env.example .env
# .env ํŒŒ์ผ์„ ์—ด์–ด์„œ API ํ‚ค์™€ ๋ฉ”์ผ ์ •๋ณด ์ž…๋ ฅ
# ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์‹คํ–‰ (ํ„ฐ๋ฏธ๋„ 1)
node server.js
# ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰ (ํ„ฐ๋ฏธ๋„ 2)
npm run dev
์ž์„ธํ•œ ์„ค์ • ๋ฐฉ๋ฒ•์€ README.md๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

๐Ÿ’ญ ๋งˆ์น˜๋ฉฐ
์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์ˆœํžˆ ๋ฉ”์ผ์„ ์ฝ์–ด์ฃผ๋Š” ๋„๊ตฌ๋ฅผ ๋„˜์–ด์„œ, AI๊ฐ€ ์–ด๋–ป๊ฒŒ ์šฐ๋ฆฌ์˜ ์ผ์ƒ ์—…๋ฌด๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์‹คํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์•„์ง ๋ถ€์กฑํ•œ ์ ๋„ ๋งŽ๊ณ , ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ๋„ ๋งŽ์ง€๋งŒ, ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์—…๋ฌด ํšจ์œจ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜๋Š” ๊ฒƒ์„ ์ฒด๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„๋„ ๋น„์Šทํ•œ ๋ถˆํŽธํ•จ์„ ๊ฒช๊ณ  ๊ณ„์‹ ๊ฐ€์š”? ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋ฉด ์ข‹์„๊นŒ์š”? ๋Œ“๊ธ€๋กœ ์˜๊ฒฌ์„ ๋‚˜๋ˆ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ™


GitHub: https://github.com/sdm6410/message-assistant
๋ฐ˜์‘ํ˜•