Skip to content

basilry/kbslBlog

Repository files navigation

πŸš€ basilry.kim | ν”„λ‘ νŠΈμ—”λ“œ

Next.js 13 TypeScript Zustand SCSS ESLint Prettier TipTap

πŸ“ ν”„λ‘œμ νŠΈ μ†Œκ°œ

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 에디터 κ΅¬ν˜„
  • βœ… 이미지 μ—…λ‘œλ“œ 및 크둭 κΈ°λŠ₯

μ§„ν–‰ 쀑인 μž‘μ—…

  • πŸ”„ ν”„λ‘œμ νŠΈ νŽ˜μ΄μ§€ λ¦¬νŒ©ν† λ§
  • πŸ”„ 이미지 μ΅œμ ν™”
  • πŸ”„ 둜그인 μ‹œμŠ€ν…œ κ΅¬ν˜„
  • πŸ”„ 포슀트 μž‘μ„± νŽ˜μ΄μ§€

μ˜ˆμ •λœ μž‘μ—…

  • ⏳ μ‚¬μš©μž ν”„λ‘œν•„ νŽ˜μ΄μ§€
  • ⏳ 검색 κΈ°λŠ₯ κ°œμ„ 
  • ⏳ μ„±λŠ₯ μ΅œμ ν™”
  • ⏳ λŒ“κΈ€ μ‹œμŠ€ν…œ κ΅¬ν˜„

πŸ“ 개발 기둝

2025λ…„

  • 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 μ•± λΌμš°ν„° λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
    • ν”„λ‘œμ νŠΈ 폴더 ꡬ쑰 μž¬μ„€κ³„

2024λ…„

  • 3μ›” 3일 ~ 3μ›” 1일

    • λ°©λͺ…둝 κΈ°λŠ₯ 개발 μ™„λ£Œ (giscus ν™œμš©)
    • 폰트 λ³€κ²½ - Pretendard
    • Github Pages 배포
  • 1μ›” ~ 2μ›”

    • Career νŽ˜μ΄μ§€ 개발
    • Visitor νŽ˜μ΄μ§€ 개발
    • Projects νŽ˜μ΄μ§€ 개발 1μ°¨ μ™„λ£Œ

2023λ…„

  • 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.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published