μΈκ³μμ κ°μ₯ μν₯λ ₯ μλ λ² μ€νΈμ λ¬λ₯Ό νλμ
λ΄μ νμμ¦μμ μ μ ν λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ λ€μν μ₯λ₯΄μ λ² μ€νΈμ λ¬λ₯Ό νμν μ μλ μΉ μ ν리μΌμ΄μ
π Live Demo
- ν½μ , λ Όν½μ , λΉμ¦λμ€ λ± 15κ° μ΄μμ μ₯λ₯΄
- λ°μν μΉ΄λ 그리λ λ μ΄μμ
- λΆλλ¬μ΄ νΈλ² μ λλ©μ΄μ μ 곡
- μ€μκ° λ² μ€νΈμ λ¬ μμ (books-api)
- μ μ, μΆνμ¬, μ€κ±°λ¦¬, νμ§ μ΄λ―Έμ§ ν¬ν¨
- μμ λ³λ λ° μ°μ λ² μ€νΈμ λ¬ μ μ§ μ£Ό μ νμ
- Amazon, Barnes & Noble, Books-A-Million λ± μν΄λ¦ μ΄λ
- μ¬μ©μ± λμ μ§κ΄μ λ²νΌ UI
- λͺ¨λ°μΌ μ΅μ ν λ° νλΈλ¦Ώ/λ°μ€ν¬ν λμ
- Next.js κΈ°λ° SSRλ‘ μ΄κΈ° λ‘λ© μ΅μ ν
- μ€μΌλ ν€ UIμ μλ¬ νΈλ€λ§ νμ΄μ§ μ 곡
- SEO μΉνμ λ©νλ°μ΄ν° μ€μ
- Next.js 15 - App Router κΈ°λ° SSR μ§μ
- TypeScript - μ μ νμ μ ν΅ν μμ ν μ½λ μμ±
- CSS Modules - μ»΄ν¬λνΈ λ¨μ μ€νμΌλ§
- Books API - μΉ΄ν κ³ λ¦¬ λ°μ΄ν° λ° μ΅μ λ² μ€νΈμ λ¬ μμ μ 곡
src/
βββ app/
β βββ (home)/ # μΉ΄ν
κ³ λ¦¬ 그리λ
β βββ list/[id]/ # μ νλ μΉ΄ν
κ³ λ¦¬μ λμ λͺ©λ‘
β βββ about/ # μλΉμ€ μκ° νμ΄μ§
β βββ layout.tsx # μ 체 λ μ΄μμ
β βββ error.tsx # μλ¬ λ°μ΄λ리
β βββ not-found.tsx # 404 νμ΄μ§
βββ components/
β βββ BookCard.tsx # λμ μΉ΄λ
β βββ CategoryCard.tsx # μΉ΄ν
κ³ λ¦¬ μΉ΄λ
β βββ BuyLink.tsx # ꡬ맀 λ²νΌ
β βββ Header.tsx # ν€λ
β βββ Footer.tsx # νΈν°
β βββ ErrorDisplay.tsx # μλ¬ λ©μμ§ νμ
βββ lib/
β βββ api.ts # API νΈμΆ ν¨μ
β βββ utils/ # μ νΈλ¦¬ν° ν¨μ
βββ types/ # νμ
μ μ
βββ styles/ # μ μ μ€νμΌ
- SSR κΈ°λ° λ λλ§μΌλ‘ SEO λ° μ΄κΈ° λ‘λ© μλ κ°μ
- Next.js μλ μΊμ± λ° ISR μ μ©
- μ¬μ©μ μΉνμ μΈ μλ¬ λ°μ΄λ리 ꡬμΆ
- Lora ν°νΈ κΈ°λ°μ μ½κΈ° μ’μ νμ΄ν¬κ·ΈλνΌ
- λ² μ΄μ§ & λΈλΌμ΄ κΈ°λ°μ μμ μΉνμ μμ ꡬμ±
- μ»΄ν¬λνΈ λ¨μ μ€νμΌ κ΄λ¦¬λ‘ μΌκ΄μ± μ μ§
- κ³΅κ° API κΈ°λ°μ μ΅μ λ² μ€νΈμ λ¬ λ°μ΄ν°
- μμ λ³ν μκ°ν λ° μ μ§ κΈ°κ° νμ
- λ€μν μ₯λ₯΄λ³ νμ μ 곡
