๊ฐ์ธ ๋ธ๋ก๊ทธ ์ด์์ ์ํ ๊ด๋ฆฌ์ ๋์๋ณด๋์ ๋๋ค. ๊ฒ์๋ฌผ ์์ฑ ๋ฐ ๊ด๋ฆฌ๋ถํฐ ํต๊ณ ๋ถ์๊น์ง ๋ธ๋ก๊ทธ ๊ด๋ฆฌ์ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๐ ๋งํฌ๋ค์ด ๊ธฐ๋ฐ ๊ฒ์๋ฌผ ์์ฑ ๋ฐ ํธ์ง
- ๐ ๋ฐฉ๋ฌธ์ ํต๊ณ ๋ฐ ๋ฐ์ดํฐ ๋ถ์
- ๐ท๏ธ ์นดํ ๊ณ ๋ฆฌ ๋ฐ ํ๊ทธ ์์คํ
- ๐ค NextAuth ๊ธฐ๋ฐ ์ฌ์ฉ์ ์ธ์ฆ
- ๐ ๊ฒ์๋ฌผ ๊ฒ์ ๋ฐ ํํฐ๋ง
- ๐ ๋คํฌ/๋ผ์ดํธ ๋ชจ๋ ์ง์
- ๐ฑ ๋ฐ์ํ์ผ๋ก ๋ชจ๋ ๋๋ฐ์ด์ค ์ง์
- Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS 4
- UI ์ปดํฌ๋ํธ: Shadcn/ui, Lucide React, Heroicons
- ์ํ ๊ด๋ฆฌ: Zustand, TanStack Query
- ์ฐจํธ: Chart.js, Recharts
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: MongoDB, Mongoose
- ์ธ์ฆ: NextAuth.js with MongoDB Adapter
- ๋งํฌ๋ค์ด: React Markdown, Remark GFM
- React Markdown๊ณผ Remark GFM์ ํ์ฉํ ๋งํฌ๋ค์ด ์๋ํฐ
- ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ ์ฝ๋ ํ์ด๋ผ์ดํ
- ๊ฒ์๋ฌผ ์ํ ๊ด๋ฆฌ (์์์ ์ฅ, ๋ฐํ)
- ๋๊ธ ๊ด๋ฆฌ (๋น๊ณต๊ฐ, ์์ )
- Chart.js์ Recharts๋ฅผ ํ์ฉํ ์๊ฐ์ ๋ฐ์ดํฐ ํํ
- ์ผ๋ณ/์๋ณ ๋ฐฉ๋ฌธ์ ํต๊ณ ์ถ์
- ์ธ๊ธฐ ๊ฒ์๋ฌผ ๋ฐ ๊ฒ์ ํค์๋ ๋ถ์
- ์ค์๊ฐ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ
- NextAuth.js ๊ธฐ๋ฐ์ ์์ ํ ์ธ์ฆ
- MongoDB ์ด๋ํฐ๋ฅผ ํตํ ์ธ์ ๊ด๋ฆฌ
- ์๋ฒ ์ปดํฌ๋ํธ: Next.js 15 App Router ํ์ฉ
- ๋ฐ์ดํฐ ํ์นญ: TanStack Query๋ก ์บ์ฑ ๋ฐ ๋๊ธฐํ
- ์บ์ ๋ฌดํจํ: REVALIDATE_SECRET์ ํตํ ๋ธ๋ก๊ทธ ์บ์ ์๋ ๋ฌดํจํ