- μ¬μ©μκ° μ±
컀λ²λ₯Ό μ§μ μμ±νκ³ μμ ν μ μλ μΉ κΈ°λ° λΆ μ»€λ² μ μ μλΉμ€μ
λλ€.
- λ‘κ·ΈμΈ ν μ±
λͺ©λ‘μ νμΈνκ³ , λΆ μ»€λ² μμ±Β·μμ Β·μμΈ νμΈκΉμ§ λͺ¨λ κ³Όμ μ μΉμμ μ²λ¦¬ν μ μμ΅λλ€.
- Next.js Β· TypeScript Β· Tailwind Β· MUIλ‘ μ μλμμ΅λλ€.
π©μλΉμ€ ν΅μ¬ κ°μΉ
μ΄ μλΉμ€λ μ΄μΌκΈ°κ° κ°μ§ κ°μ κ³Ό λΆμκΈ°λ₯Ό μκ°μ μΈ μΈμ΄λ‘ λ°κΎΈμ΄, λꡬλ μμ μ μΈκ³λ₯Ό μλ¦λ€μ΄ 컀λ²λ‘ ννν μ μκ² ν©λλ€.
볡μ‘ν λμμΈ λꡬ μμ΄λ μ€ν 리λ§μΌλ‘ κ°κ°μ μΈ μΆμ κ·Έλν½μ΄ νμνλ©°, μ°½μμκ° μνκ³Ό λ κΉμ΄ μ°κ²°λλ κ²½νμ μ 곡ν©λλ€.
λ°°ν¬ URL: λ°°ν¬ μ£Όμ μ
λ ₯νμΈμ.
(λ°°ν¬ ν λ§ν¬λ₯Ό μ
λ ₯νμΈμ)
π κΈ°μ μ€ν (Tech Stack)
β¨
β¨
Framework : Next.js (App Router)
Language : TypeScript
UI : Tailwind CSS, MUI (Material UI)
Package Manager : npm
π μ£Όμ νμ΄μ§ (Pages)
1. π λ‘κ·ΈμΈ νμ΄μ§
μ¬μ©μ μΈμ¦ κΈ°λ₯ μ 곡
λ‘κ·ΈμΈ ν μ±
λͺ©λ‘ νμ΄μ§λ‘ μ΄λ
2. π μ±
λͺ©λ‘ νμ΄μ§
μμ±λ μ±
λͺ©λ‘ μ‘°ν
μ±
μμΈ νμ΄μ§λ‘ μ΄λ κ°λ₯
μ μ±
μ»€λ² μμ± λ²νΌ μ 곡
3. π¨ μ±
μ»€λ² μμ± νμ΄μ§
κΈ°λ³Έ ν
νλ¦Ώ κΈ°λ° μ»€λ² μμ±
μ»€λ² μ€νμΌ μ ν, μ λͺ©/μ μ μ
λ ₯
μμ±λ 컀λ²λ ν보 3κ° μ€μ 1κ° μ΄λ―Έμ§ μ ννμ¬ μ μ₯
[LLMλͺ¨λΈλ‘ λμμΈ ν
μ€νΈ κ°μ΄λ μμ²]
4. βοΈ μ±
μ»€λ² μμ νμ΄μ§
κΈ°μ‘΄ μ»€λ² λ°μ΄ν° λΆλ¬μ€κΈ°
ν
μ€νΈ/μμ/λ μ΄μμ μμ κ°λ₯
μμ ν λ€μ μ μ₯νκ±°λ 미리보기 κ°λ₯
5. π μ±
μμΈ νμ΄μ§
μ±
μ 보 + μμ±λ μ»€λ² μ΄λ―Έμ§ 보μ¬μ€
μμ νμ΄μ§ μ΄λ λ° μμ λ²νΌ μ 곡
βμ°λ¦¬ ν둬ννΈμ λ
μμ λ§€λ ₯
νΉμ§
μ€λͺ
μ€ν 리 κΈ°λ° μΆμ κ·Έλν½ λ³ν
ν
μ€νΈ β κ°μ β μκ°/ννλ‘ λ³ννλ λ
μ°½μ ꡬ쑰
μλ¨ 25% 곡백 λ£°
μ€μ λΆ μ»€λ² UIμ μ΅μ νλ κ³ μ κ·μΉ
μ λ κΈμ§ μμ μμ€ν
3D, ν
μ€νΈ, λͺ¨ν μΆλ ₯ λ¬Έμ λ₯Ό μμ ν μ°¨λ¨
μμ 2D μΆμ κ·Έλν½
μ¦μ μΆνΒ·λμμΈμ μ°κΈ° μ ν©
μ₯λ₯΄ λΆμκΈ° μ΅μ°μ λ°μ
μΆμμ μ΄μ§λ§ μ£Όμ μ± μ μ§
μ¬μ©μ μμ²μ βμΆμ μμβλ§ λ°μ
μμ μ μΈ κ²°κ³Ό + μ¬μ©μ 컀μ€ν°λ§μ΄μ§ κ°λ₯
νΉμ§
μ€λͺ
λμμΈ ν
μ€νΈ κ°μ΄λ
λμμΈμ μμ²ν΄μΌ ν μ§ λ§λ§νλ€λ©΄ ν
μ€νΈλ‘ κ°μ΄λ λ°μ
βοΈ μ€μΉ λ° μ€ν (Installation & Setup)
μ μ₯μ ν΄λ‘
git clone https://github.com/NoMoreChaos/mini-4th-frontend.git
cd mini-4th-frontend
ν¨ν€μ§ μ€μΉ
νκ²½ λ³μ μ€μ
.env.localνμΌ μμ± ν μλμ κ°μ΄ μ
λ ₯:
NEXT_PUBLIC_API_BASE_URL=
OPENAI_API_KEY=
κ°λ° μλ² μ€ν
π οΈ API ꡬ쑰 (μμ)
Method
Endpoint
Description
POST
/api/user/login
κ³μ λ‘κ·Έ
GET
/api/books
μ±
λͺ©λ‘ μ‘°ν
POST
/api/books
μ μ±
λ±λ‘
GET
/api/books/detail
μ±
μμΈ μ‘°ν
GET
/api/books/modify/{book id}
μ±
μ 보 μμ
PUT
/api/books/modify/{book id}
μ±
μ 보 μμ
DELETE
/api/books/delete
μ±
μμ
π νλ‘μ νΈ ν΄λ ꡬ쑰
src/
βββ api/
β
βββ app/
β βββ api/ # Next.js API Routes
β βββ bookCreate/ # μ±
μ»€λ² μμ± νμ΄μ§
β βββ bookEdit/ # μ±
μ»€λ² μμ νμ΄μ§
β βββ components/ # μ¬μ¬μ© κ°λ₯ UI μ»΄ν¬λνΈ
β βββ data/ # λλ―Έ λ°μ΄ν° / μ μ λ°μ΄ν°
β βββ detail/ # μ±
μμΈ νμ΄μ§
β βββ login/ # λ‘κ·ΈμΈ νμ΄μ§
β βββ favicon.ico
β βββ globals.css # μ μ μ€νμΌ(Tailwind ν¬ν¨)
β βββ layout.tsx # κ³΅ν΅ λ μ΄μμ λ° Provider μ€μ
β βββ page.tsx # ν νμ΄μ§ (λͺ©λ‘)
β βββ providers.tsx # MUI λ± μ μ Provider λͺ¨μ
β
βββ hooks/ # 컀μ€ν
React Hooks
βββ types/ # TypeScript νμ
μ μ
πμ°λ¦¬ μλΉμ€λ‘ μΈν΄ λ§λλ λ¬Έμ ν΄κ²°μ
β
AIκ° μ€ν 리 κΈ°λ°μΌλ‘ μ¦μ μΆμ κ·Έλν½ μ»€λ²λ₯Ό μμ±νμ¬ λμμ΄λ μλ’° λΉμ© μμ΄ λ°λ‘ μμ± κ°λ₯
β
λꡬλ μ λ¬Έκ° μμ€μ μΆμμ λΆμ»€λ² μκ°ν κ°λ₯
β
μ μ© ν둬ννΈ κ·μΉμ μ¬μ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°(μ΄μν ννμ ν
μ€νΈ, νμ§ μμ±)
β
μμ± μ΄λ―Έμ§, μμ μ λ³΄κ° ν κ³³μμ κ΄λ¦¬λμ΄ νλ‘μ νΈ μ΄μμ΄ μ¬μμ§
β
λ²μ λΉκ΅ μ΄λ €μ -> μ»€λ² νμ΄μ§μμ μ¬λ¬ μ»€λ² λΉκ΅ λ° μ¬μμ