basilry.kim νλ‘ νΈμλλ Next.js 13 κΈ°λ°μ νλμ μΈ λΈλ‘κ·Έ μΉ μ ν리μΌμ΄μ μ λλ€. μ¬ννκ³ μ§κ΄μ μΈ UI/UXλ₯Ό μ 곡νλ©°, μ¬μ©μ κ²½νμ μ΅μ°μ μΌλ‘ κ³ λ €ν λμμΈμ κ°μΆκ³ μμ΅λλ€.
- β μλ² μ¬μ΄λ λ λλ§(SSR)μ ν΅ν λΉ λ₯Έ μ΄κΈ° λ‘λ©
- β λͺ¨λ°μΌ μΉνμ μΈ λ°μν λμμΈ
- β λ€ν¬ λͺ¨λ μ§μ
- β νλΆν λ§ν¬λ€μ΄ μλν°
- β μ΄λ―Έμ§ μ΅μ ν λ° μ§μ° λ‘λ©
- νλ μμν¬: Next.js 13 (App Router)
- μΈμ΄: TypeScript 5.x
- μν κ΄λ¦¬: Zustand 4.x
- μ€νμΌλ§: SCSS (Sass), classNames
- HTTP ν΄λΌμ΄μΈνΈ: Axios
- μλν°: TipTap
- μ½λ νμ§: ESLint, Prettier
- IDE: IntelliJ
- ν¨ν€μ§ κ΄λ¦¬: npm
- λ°°ν¬: AWS EC2
src/
βββ app/ # Next.js 13 App Router
β βββ (contents)/ # μ£Όμ 컨ν
μΈ νμ΄μ§
β β βββ post/ # ν¬μ€νΈ κ΄λ ¨ νμ΄μ§
β β βββ projects/ # νλ‘μ νΈ κ΄λ ¨ νμ΄μ§
β βββ globals.css # μ μ μ€νμΌ
β βββ layout.tsx # λ£¨νΈ λ μ΄μμ
βββ components/ # μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ
β βββ atom/ # κΈ°λ³Έ UI μ»΄ν¬λνΈ
β βββ layout/ # λ μ΄μμ κ΄λ ¨ μ»΄ν¬λνΈ
β βββ template/ # ν
νλ¦Ώ μ»΄ν¬λνΈ
β βββ ui/ # UI κ΄λ ¨ μ»΄ν¬λνΈ
βββ interface/ # TypeScript μΈν°νμ΄μ€
βββ lib/ # μ νΈλ¦¬ν° ν¨μ λ° μ€μ
β βββ api/ # API κ΄λ ¨ μ½λ
β βββ stores/ # Zustand μ€ν μ΄
β βββ utils/ # μ νΈλ¦¬ν° ν¨μ
βββ styles/ # μ€νμΌ νμΌ
βββ components/ # μ»΄ν¬λνΈλ³ μ€νμΌ
βββ pages/ # νμ΄μ§λ³ μ€νμΌ
- λ°μν ν€λ λ° μ¬μ΄λλ°
- λ€ν¬ λͺ¨λ μ ν
- μ¬μ©μ μΈμ¦ μν νμ
- ν¬μ€νΈ λͺ©λ‘ 보기 (νμ΄μ§λ€μ΄μ )
- ν¬μ€νΈ μμΈ λ³΄κΈ°
- ν¬μ€νΈ μμ± λ° μμ (TipTap μλν°)
- μ΄λ―Έμ§ μ λ‘λ λ° ν¬λ‘ κΈ°λ₯
- μ’μμ κΈ°λ₯
- λ‘κ·ΈμΈ/λ‘κ·Έμμ
- νλ‘ν κ΄λ¦¬
- μ¬μ©μλ³ μμ± κΈ λ³΄κΈ°
- Node.js 18 μ΄μ
- npm 9 μ΄μ
# μ μ₯μ ν΄λ‘
git clone https://github.com/username/kbslBlog.git
# λλ ν 리 μ΄λ
cd kbslBlog
# μμ‘΄μ± μ€μΉ
npm install
# κ°λ° μλ² μ€ν
npm run dev
# μ΄μ μλ² μ€ν
npm run pm2νλ‘μ νΈ λ£¨νΈμ .env.local νμΌμ μμ±νκ³ νμν νκ²½ λ³μλ₯Ό μ€μ νμΈμ.
- β λ©μΈ νμ΄μ§ 리ν©ν λ§
- β κ²½λ ₯ νμ΄μ§ 리ν©ν λ§
- β λ μ΄μμ κ΅¬μ± (ν€λ, μ¬μ΄λλ°, νΈν°)
- β λ€ν¬ λͺ¨λ ꡬν
- β ν¬μ€νΈ λͺ©λ‘ λ° μμΈ νμ΄μ§
- β TipTap μλν° κ΅¬ν
- β μ΄λ―Έμ§ μ λ‘λ λ° ν¬λ‘ κΈ°λ₯
- π νλ‘μ νΈ νμ΄μ§ 리ν©ν λ§
- π μ΄λ―Έμ§ μ΅μ ν
- π λ‘κ·ΈμΈ μμ€ν ꡬν
- π ν¬μ€νΈ μμ± νμ΄μ§
- β³ μ¬μ©μ νλ‘ν νμ΄μ§
- β³ κ²μ κΈ°λ₯ κ°μ
- β³ μ±λ₯ μ΅μ ν
- β³ λκΈ μμ€ν ꡬν
-
3μ 21μΌ ~ 3μ 20μΌ
- μ΄λ―Έμ§ νλ‘μ URL μ²λ¦¬ λ‘μ§ κ°μ
- μΈλ€μΌ μ΄λ―Έμ§ ν¬λ‘ κΈ°λ₯ μΆκ°
-
3μ 19μΌ ~ 3μ 18μΌ
- TipTap μλν°μ μ΄λ―Έμ§ λλκ·Έ μ€ λλ‘ κΈ°λ₯ μΆκ°
- μλν° ν¬μ»€μ€ μ΄μ μμ
- lowlight λ²μ μ λ°μ΄νΈ λ° κ΄λ ¨ μ½λ μμ
-
3μ 17μΌ ~ 3μ 15μΌ
- ν¬μ€νΈ λͺ©λ‘ νμ΄μ§μ λ‘λ© μΈλμΌμ΄ν° μΆκ°
- ν¬μ€νΈ μμΈ νμ΄μ§ μ΄λ―Έμ§ λ‘λ© μ΅μ ν
- μ’μμ κΈ°λ₯ ꡬν
-
3μ 14μΌ ~ 3μ 13μΌ
- ν¬μ€νΈ λ±λ‘ νμ΄μ§ ꡬν
- μ΄λ―Έμ§ μ λ‘λ μ»΄ν¬λνΈ κ°λ°
- TipTap μλν° κ΅¬κΈ λλΌμ΄λΈ μ΄λ―Έμ§ νμ₯ ꡬν
-
3μ 12μΌ ~ 3μ 11μΌ
- ν¬μ€νΈ μμΈ νμ΄μ§ ꡬν
- λ§ν¬λ€μ΄ νμ± λ‘μ§ κ΅¬ν
- μ΄λ―Έμ§ λ‘λ© νλ μ΄μ€νλ μΆκ°
-
3μ 10μΌ ~ 3μ 9μΌ
- ν¬μ€νΈ λͺ©λ‘ νμ΄μ§ ꡬν
- νμ΄μ§λ€μ΄μ μ»΄ν¬λνΈ κ°λ°
- μΈλ€μΌ μ΄λ―Έμ§ μ²λ¦¬ λ‘μ§ κ΅¬ν
-
3μ 8μΌ ~ 3μ 3μΌ
- TipTap μλν° μ΄κΈ° μ€μ
- μλν° ν΄λ° ꡬν
- μλν° μ»¨ν μΈ μ μ₯ λ‘μ§ κ΅¬ν
-
2μ 27μΌ ~ 2μ 7μΌ
- νλ‘μ νΈ νμ΄μ§ κ°λ° 1μ°¨ μλ£
- λ€ν¬ λͺ¨λ ν λ§ κ΅¬ν
- Zustand μν κ΄λ¦¬ μΈν
-
2μ 6μΌ ~ 2μ 1μΌ
- κ²½λ ₯ νμ΄μ§ 리ν©ν λ§ μλ£
- λ©μΈ νμ΄μ§ 리ν©ν λ§ μλ£
- axios μΈμ€ν΄μ€ μ€μ λ° API μ°λ μ€λΉ
-
1μ 31μΌ ~ 1μ 25μΌ
- AWS EC2 λ°°ν¬ μ€μ
- Next.js 13 μ± λΌμ°ν° λ§μ΄κ·Έλ μ΄μ
- νλ‘μ νΈ ν΄λ ꡬ쑰 μ¬μ€κ³
-
3μ 3μΌ ~ 3μ 1μΌ
- λ°©λͺ λ‘ κΈ°λ₯ κ°λ° μλ£ (giscus νμ©)
- ν°νΈ λ³κ²½ - Pretendard
- Github Pages λ°°ν¬
-
1μ ~ 2μ
- Career νμ΄μ§ κ°λ°
- Visitor νμ΄μ§ κ°λ°
- Projects νμ΄μ§ κ°λ° 1μ°¨ μλ£
-
12μ 17μΌ ~ 12μ 16μΌ
- λ μ΄μμ κ°λ° 1μ°¨ μλ£
- Header, Sidebar, Footer κ°λ°
-
9μ 9μΌ
- μλν° λΌμ΄λΈλ¬λ¦¬ μ ν - quill
- axios κΈ°λ³Έ μ€μ
- μ 체 νλ‘μ νΈ λ μ΄μμ ꡬμ±
- λ€μ΄λ² 무λ£ν°νΈ μ μ© - λ§λ£¨λΆλ¦¬
-
9μ 3μΌ
- νλ‘μ νΈ κΈ°μ μ€ν μ΄μ μ€μ
- Next.js 13 μ€μΉ λ° νμ λΌμ΄λΈλ¬λ¦¬ μ€μΉ
- prettier, eslint μ€μ
μ΄ νλ‘μ νΈλ MIT λΌμ΄μΌμ€λ₯Ό λ°λ¦ λλ€. μμΈν λ΄μ©μ LICENSE νμΌμ μ°Έμ‘°νμΈμ.
- basilry - μ΄κΈ° μμ - GitHub
Β© 2025 kbslBlog. All rights reserved.