๊ฐ๋ฐ ๋ธ๋ก๊ทธ์ AI ์ฑ๋ด ์๋น์ค๋ฅผ ํฌํจํ ์น ์๋น์ค ํ๋ก์ ํธ์
๋๋ค.
๐ ๊ฐ๋ฐ ๋ธ๋ก๊ทธ ๋ฐ๋ก๊ฐ๊ธฐ
๐ AI ์ฑ๋ด ์๋น์ค ๋ฐ๋ก๊ฐ๊ธฐ
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊น์ข
์ฐ์ ๊ฐ๋ฐ ๋ธ๋ก๊ทธ์
๋๋ค. ๊ฐ๋ฐ ๊ด๋ จ ๊ณต๋ถ ๋ฐ ์ด์๋ฅผ ๊ณต์ ํ๊ณ ์ ์ง์ Next.js๋ก ๊ฐ๋ฐํ ๋ธ๋ก๊ทธ์
๋๋ค.
๐ ์ฌ์ดํธ ๋ฐ๋ก๊ฐ๊ธฐ

- ๐ ๋งํฌ๋ค์ด ๊ธฐ๋ฐ์ ๋ธ๋ก๊ทธ ํฌ์คํ
- ๐ ๊ฒ์๋ฌผ ๊ฒ์ ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ
- ๐ ๊ฒ์๋ฌผ ์ข์์ ์์คํ
- ๐ฌ ๋๊ธ ์์คํ (๋ฑ๋ก/์์ /์ญ์ )
- ๐ ๋คํฌ/๋ผ์ดํธ ๋ชจ๋ ์ง์
- ๐ฑ ๋ฐ์ํ ์น ๋์์ธ
- ๐ฏ SEO ์ต์ ํ
- Frontend: Next.js, TypeScript, Styled Components
- ์ํ ๊ด๋ฆฌ: Recoil
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: MongoDB
- ๋ฐฐํฌ: Vercel
- ์ปจํ ์ธ : React-Markdown
- ๋งํฌ๋ค์ด ๋ฌธ๋ฒ์ ์ง์ํ์ฌ ํ๋ถํ ํฌ๋งทํ ์ด ๊ฐ๋ฅํ ๊ฒ์๋ฌผ ์์ฑ
- ๊ฒ์๋ฌผ ์นดํ ๊ณ ๋ฆฌ ๋ถ๋ฅ ๋ฐ ํ๊ทธ ์์คํ
- ๊ฒ์๋ฌผ ์กฐํ์ ๋ฐ ์ข์์ ์ ํธ๋ํน
- ์ต์ ์, ์ธ๊ธฐ์ ๋ฑ ๋ค์ํ ์ ๋ ฌ ์ต์ ์ ๊ณต
- ์ ๋ชฉ, ๋ด์ฉ, ํ๊ทธ ๊ธฐ๋ฐ์ ํตํฉ ๊ฒ์ ๊ธฐ๋ฅ
- ์นดํ ๊ณ ๋ฆฌ๋ณ ํํฐ๋ง
- ์ค์๊ฐ ๊ฒ์์ด ํ์ด๋ผ์ดํ
- ๋์ ๋ฉํ ํ๊ทธ ์์ฑ
- ์ฌ์ดํธ๋งต ์๋ ์์ฑ
- ๊ฒ์ ์์ง ์ต์ ํ๋ URL ๊ตฌ์กฐ
- ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง: Next.js์ SSR์ ํ์ฉํ ์ด๊ธฐ ๋ก๋ฉ ์ฑ๋ฅ ์ต์ ํ
- ์ด๋ฏธ์ง ์ต์ ํ: Next.js Image ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํ ์ด๋ฏธ์ง ์ต์ ํ
- ์ค์ผ๋ ํค UI: ๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์
Google์ Gemini API๋ฅผ ํ์ฉํ ๋ํํ AI ์ฑ๋ด ์๋น์ค์
๋๋ค. ์ค์๊ฐ ๋ํ๋ ๋ฌผ๋ก , ์์ฑ ์๋ต๊ณผ ๋ฉํฐ๋ฏธ๋์ด ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๐ ์ฌ์ดํธ ๋ฐ๋ก๊ฐ๊ธฐ

- ๐ฌ Gemini API ์คํธ๋ฆฌ๋ฐ์ ํ์ฉํ ์ค์๊ฐ ๋ํ
- ๐ฃ๏ธ Google Cloud TTS๋ฅผ ํตํ ์์ฑ ์๋ต
- ๐ผ๏ธ ์ด๋ฏธ์ง ๋ถ์ ๊ธฐ๋ฅ
- ๐ต ์์ฑ ํ์ผ ์ฒ๋ฆฌ
- ๐พ ๋ธ๋ผ์ฐ์ ์ ์ฅ์๋ฅผ ํ์ฉํ ๋ํ ๋ด์ญ ์ ์ง
- ๐ ๋คํฌ/๋ผ์ดํธ ๋ชจ๋ ์ง์
- ๐ฑ ๋ชจ๋ ๋๋ฐ์ด์ค๋ฅผ ์ํ ๋ฐ์ํ ๋์์ธ
- Frontend: Next.js, TypeScript, Styled Components
- ์ํ ๊ด๋ฆฌ: Recoil
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: MongoDB
- AI/ํด๋ผ์ฐ๋: Google Cloud Services (Gemini API, TTS)
- Gemini API์ ์คํธ๋ฆฌ๋ฐ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์๋ต์ด ์์ฑ๋๋ ์ฆ์ ์ฌ์ฉ์์๊ฒ ํ์
- ํ๋ฃจ 40,000 ํ ํฐ ์ ํ ๋ด์์ ์์ ๋ก์ด ๋ํ ๊ฐ๋ฅ
- ๋ํ ๋ด์ฉ์ ๋ธ๋ผ์ฐ์ ์ ์ฅ์์ ์๋ ์ ์ฅ๋์ด ์ธ์ ๋ ์ง ์ด์ ๋ํ ํ์ธ ๊ฐ๋ฅ
Google Cloud TTS๋ฅผ ํ์ฉํ์ฌ AI์ ํ ์คํธ ์๋ต์ ์์ฐ์ค๋ฌ์ด ์์ฑ์ผ๋ก ๋ณํํฉ๋๋ค.
- ์ค์๊ฐ ์๋ต: ์คํธ๋ฆฌ๋ฐ ๋ฐฉ์์ผ๋ก ์๋ต ๋๊ธฐ ์๊ฐ ์ต์ํ
- ๋ ๋๋ง ์ต์ ํ: ๊ธด ๋ํ์์๋ ์ํํ UI ํ์
- ํจ์จ์ ์ธ ์ํ ๊ด๋ฆฌ: Recoil์ ํ์ฉํ ์ต์ ํ๋ ์ํ ๊ด๋ฆฌ
- ๋ฐ์ดํฐ ์ง์์ฑ: Local Storage๋ฅผ ํ์ฉํ ๋ํ ๋ด์ญ ์ ์ง