Skip to Content
Nextra 4.0 is released πŸŽ‰

🌐 Web App

κ°œμš”

apps/web은 Next.js 기반의 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ, Turborepo ν™˜κ²½μ—μ„œ λ‹€μ–‘ν•œ λ‚΄λΆ€ νŒ¨ν‚€μ§€(@repo/*)λ₯Ό ν™œμš©ν•˜λŠ” μ˜ˆμ‹œ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈ 기반 ꡬ쑰, μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜, Vitest 기반 ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ κ°–μΆ”κ³  μžˆμŠ΅λ‹ˆλ‹€.

이 μ›Œν¬μŠ€νŽ˜μ΄μŠ€λŠ” Turborepo ν…œν”Œλ¦Ώβ€‰μ— 기본적으둜 ν¬ν•¨λ˜μ–΄ μžˆλŠ” Next.js 앱을 기반으둜 μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
μ—¬κΈ°μ„œ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 ν™•μž₯ν•˜κ³ , 이 λͺ¨λ…Έλ ˆν¬ ν”„λ‘œμ νŠΈμ˜ λ‚΄λΆ€ νŒ¨ν‚€μ§€λ“€μ„ ν†΅ν•©ν•˜μ—¬ μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ— ν•„μš”ν•œ ꡬ쑰λ₯Ό κ°–μΆ”κΈ° μœ„ν•œ μ˜ˆμ‹œμ˜ 역할을 ν•©λ‹ˆλ‹€.
μ°Έκ³  : Turborepo Next.js ν…œν”Œλ¦Ώ > apps > web 

πŸ› οΈ 제곡 κΈ°λŠ₯

  • Next.js 기반 SSR/CSR: μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)κ³Ό ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§(CSR)을 λͺ¨λ‘ μ§€μ›ν•©λ‹ˆλ‹€.
  • λ‚΄λΆ€ νŒ¨ν‚€μ§€ 톡합: Turborepo의 λ‹€μ–‘ν•œ λ‚΄λΆ€ νŒ¨ν‚€μ§€(@repo/*)λ₯Ό ν™œμš©ν•˜μ—¬ UI, μœ ν‹Έλ¦¬ν‹°, API ν΄λΌμ΄μ–ΈνŠΈ 등을 ν†΅ν•©ν•©λ‹ˆλ‹€.
  • μ»΄ν¬λ„ŒνŠΈ 기반 ꡬ쑰: μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈμ™€ μ»¨ν…Œμ΄λ„ˆ ꡬ쑰λ₯Ό μ±„νƒν•˜μ—¬ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 λ†’μ˜€μŠ΅λ‹ˆλ‹€.
  • ν™˜κ²½λ³„ μ„€μ • 뢄리: 개발/운영 ν™˜κ²½μ— 따라 μ„€μ • νŒŒμΌμ„ λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • ν…ŒμŠ€νŠΈ μžλ™ν™”: Vitest 기반의 μœ λ‹›/톡합 ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
  • Docker 지원: Dockerfile을 톡해 μ†μ‰½κ²Œ 배포 및 ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“‚ μ£Όμš” 디렉토리 ꡬ쑰

  • app/: Next.js 13+ App Router 기반의 νŽ˜μ΄μ§€ 및 λ ˆμ΄μ•„μ›ƒ 파일이 μœ„μΉ˜ν•©λ‹ˆλ‹€.
  • components/: 곡톡 UI μ»΄ν¬λ„ŒνŠΈκ°€ μœ„μΉ˜ν•©λ‹ˆλ‹€.
  • containers/: νŽ˜μ΄μ§€λ³„ μ£Όμš” μ»¨ν…Œμ΄λ„ˆ μ»΄ν¬λ„ŒνŠΈκ°€ μœ„μΉ˜ν•©λ‹ˆλ‹€.
  • configs/: ν™˜κ²½λ³„ μ„€μ • 및 곡톡 μ„€μ • 파일이 μœ„μΉ˜ν•©λ‹ˆλ‹€.
  • utils/: μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ λͺ¨μŒμž…λ‹ˆλ‹€.
  • tests/: Vitest 기반 ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ μœ„μΉ˜ν•©λ‹ˆλ‹€.
  • public/: 정적 μžμ‚°(이미지, 폰트 λ“±)이 μœ„μΉ˜ν•©λ‹ˆλ‹€.
  • next.config.js: Next.js μ„€μ • 파일
  • tsconfig.json: TypeScript μ„€μ • 파일
  • vitest.config.ts: Vitest ν…ŒμŠ€νŠΈ ν™˜κ²½ μ„€μ • 파일

βš™οΈ Next.js 및 Turborepo μ„€μ •

  • next.config.js: Turborepo ν™˜κ²½μ—μ„œ λ‚΄λΆ€ νŒ¨ν‚€μ§€(@repo/*)λ₯Ό alias둜 μ—°κ²°ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€. ν™˜κ²½ λ³€μˆ˜, 이미지 μ΅œμ ν™”, μ™ΈλΆ€ API ν”„λ‘μ‹œ λ“± λ‹€μ–‘ν•œ Next.js μ˜΅μ…˜μ„ μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • tsconfig.json: Turborepo의 νƒ€μž…μŠ€ν¬λ¦½νŠΈ 베이슀 섀정을 상속받아, 경둜 alias 및 strict μ˜΅μ…˜μ„ μ μš©ν•©λ‹ˆλ‹€.

πŸ§ͺ Vitest ν…ŒμŠ€νŠΈ ν™˜κ²½

  • vitest.config.ts: Next.js ν™˜κ²½μ— 맞좘 Vitest μ„€μ • 파일둜, λ‚΄λΆ€ νŒ¨ν‚€μ§€μ™€μ˜ 톡합 ν…ŒμŠ€νŠΈ, μ»€μŠ€ν…€ setup 파일, 컀버리지 리포트 등을 μ§€μ›ν•©λ‹ˆλ‹€.
  • tests/: μ‹€μ œ ν…ŒμŠ€νŠΈ μ½”λ“œμ™€ ν…ŒμŠ€νŠΈ μœ ν‹Έλ¦¬ν‹°κ°€ μœ„μΉ˜ν•©λ‹ˆλ‹€.

🐳 Dockerfile 제곡

  • Dockerfile: Next.js 앱을 ν”„λ‘œλ•μ…˜ λΉŒλ“œ ν›„, Node.js ν™˜κ²½μ—μ„œ μ‹€ν–‰ν•˜λŠ” λ©€ν‹°μŠ€ν…Œμ΄μ§€ Dockerfile을 μ œκ³΅ν•©λ‹ˆλ‹€. μ˜μ‘΄μ„± μ„€μΉ˜, λΉŒλ“œ, μ‹€ν–‰ 단계λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μ΅œμ ν™”ν•©λ‹ˆλ‹€.

Dockerfile을 ν™œμš©ν•˜λ©΄ CI/CD νŒŒμ΄ν”„λΌμΈμ—μ„œ μ†μ‰½κ²Œ Next.js 앱을 λΉŒλ“œν•˜κ³  배포 λ˜λŠ” ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.
Dockerfile 을 μ΄μš©ν•œ μ‹€μ œ ν…ŒμŠ€νŠΈ μ—μ„œμ˜ μ‚¬μš© μ˜ˆμ‹œλŠ” μ•„λž˜μ˜ 2 개 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”:

πŸ”— μ—°κ²°λœ λ‚΄λΆ€ νŒ¨ν‚€μ§€

이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ‹€μŒ Turborepo λ‚΄λΆ€ νŒ¨ν‚€μ§€μ™€ μ—°λ™λ©λ‹ˆλ‹€:

dependencies

devDependencies


Last updated on