μ’μνλ μμ΄λμ νμνκ³ ν¬νν μ μλ ν¬λ€ νλ«νΌ
ν¬λ€μΌμ΄(Fandom-K)λ μμ΄λ ν¬λ€μ μν νλ«νΌμΌλ‘, μ’μνλ μμ΄λμ νμνκ³ ν¬νν μ μλ μ’ ν©μ μΈ ν¬λ€ νλ«νΌμ λλ€. ν¬λ€μ΄ ν¬λ λ§ μΆ©μ μ ν΅ν΄ νμκΈμ 보λ΄κ³ , μ΄λ¬μ μμ΄λ μΈκΈ° ν¬νμ μ°Έμ¬νλ©°, κ°μΈ κ΄μ¬ μμ΄λμ κ΄λ¦¬ν μ μμ΅λλ€.
2025/09/24 (μ) ~ 2025/10/16 (λͺ©)
- π° νμ μμ€ν : ν¬λ λ§μ μΆ©μ νμ¬ μμ΄λ νμ
- π³οΈ ν¬ν μμ€ν : μ΄λ¬μ μμ΄λ μΈκΈ° ν¬ν μ°Έμ¬
- π μ€μκ° μ°¨νΈ: ν¬ν μμλ³ μμ΄λ μ°¨νΈ νμΈ
- π€ λ§μ΄νμ΄μ§: κ΄μ¬ μμ΄λ κ΄λ¦¬ λ° κ°μΈν
β‘οΈ Fandom-K
β‘οΈ Fandom-K μμ° μμ
| κ΅¬λΆ | μ¬μ© κΈ°μ |
|---|---|
| Frontend | |
| Styling | |
| μν κ΄λ¦¬ | |
| HTTP ν΄λΌμ΄μΈνΈ | |
| Routing | |
| λ°°ν¬ | |
| νμ |
- Node.js 18.0 μ΄μ
- npm
# μ μ₯μ ν΄λ‘
git clone https://github.com/codeit-Five/FandomK.git
# νλ‘μ νΈ λλ ν λ¦¬λ‘ μ΄λ
cd FandomK
# μμ‘΄μ± μ€μΉ
npm install
# κ°λ° μλ² μ€ν
npm run dev
βββ π .github # GitHub μ€μ νμΌ
βββ π¦ src
β βββ π api # API λλ ν 리
β βββ π assets # μ μ 리μμ€
β β βββ π fonts # ν°νΈ λλ ν 리
β β βββ π image # μ΄λ―Έμ§ λλ ν 리
β β βββ π styles # μ μ μ€νμΌ
β βββ π components # κ³΅ν΅ μ»΄ν¬λνΈ λλ ν 리
β β βββ π Button # λ²νΌ μ»΄ν¬λνΈ
β β βββ π Header # ν€λ μ»΄ν¬λνΈ
β β βββ π IdolCard # μμ΄λ νλ‘ν μ»΄ν¬λνΈ
β β βββ π Modal # λͺ¨λ¬ μ»΄ν¬λνΈ
β β βββ π OptionCard # λΌλμ€ λ²νΌ μ»΄ν¬λνΈ
β βββ π hooks # Custom Hook λλ ν 리
β βββ π pages # νμ΄μ§ λλ ν 리
β β βββ π Landing
β β βββ π List # λͺ©λ‘ νμ΄μ§
β β β βββ π ChartSection
β β β βββ π CreditSection
β β β βββ π Donate
β β β βββ π DonateSection
β β β βββ π carousel # Carousel λλ ν 리
β β β βββ π skeleton # Skeleton UI λλ ν 리
β β βββ π MyPage
β β βββ π NotFoundPage
β βββ π stores # μν κ΄λ¦¬ λλ ν 리
β βββ π util # μ νΈλ¦¬ν° ν¨μ λλ ν 리
β βββ βοΈ App.jsx
β βββ βοΈ main.jsx
βββ βοΈ .env # νκ²½λ³μ
βββ π .eslintrc.json # ESLint μ€μ νμΌ
βββ π .prettierrc.json # Prettier μ€μ νμΌ
βββ π· favicon.svg # favorite icon
βββ π index.html # μ§μ
HTML
βββ π¦ jsconfig.json # νλ‘μ νΈ κ²½λ‘ λ³μΉ μ€μ νμΌ
βββ π¦ package-lock.json # μμ‘΄μ± κ³ μ νμΌ
βββ π¦ package.json # νλ‘μ νΈ λ©ν μ 보
βββ β¬οΈ vercel.json # Vercel λ°°ν¬ μ€μ
βββ β‘ vite.config.js # Vite μ€μ
// μμ΄λ λͺ©λ‘ μ‘°ν
GET /idols
// μμ΄λ μ°¨νΈ μ‘°ν (μ±λ³λ³)
GET /charts/{gender}
// νμνκΈ°
POST /donations
{
"deadline": "2025-09-26T14:54:53.282Z",
"targetDonation": 1000,
"subtitle": "μμ λ©μμ§",
"title": "νμ μ λͺ©",
"idolId": 1
}
// ν¬ννκΈ°
POST /votes
{
"idolId": 1
}- Fandom-Kμ λν μ λ°μ μΈ μ 보μ μ£Όμ κΈ°λ₯μ μκ°
- ν¬λ λ§ νμΈ : μ¬μ©μκ° κ°μ§κ³ μλ ν¬λ λ§μ νμΈ
- νμμ κΈ°λ€λ¦¬λ 쑰곡 : μμ΄λ νμ λ΄μ© λ° λͺ©ν λ¬μ±λ₯ , κΈ°κ°μ μ¬λΌμ΄λλ₯Ό ν΅ν΄ νμΈνκ³ μ°Έμ¬
- μ΄λ¬μ μ°¨νΈ : μΏ νλ₯Ό ν΅ν΄ μμ΄λ μμλ₯Ό λ°μνκ³ , μ€μκ° μ°¨νΈ λ³λμ νμΈ
- μ¬μ©μκ° μΆ©μ μ μνλ ν¬λ λ§ κΈμ‘μ μ ννκ³ μΆ©μ μ μ§ν
- νμν 쑰곡μ νμΈνκ³ μ¬μ©μκ° μ λ ₯ν ν¬λ λ§μ νμ
- ν¬λ λ§μ μ΄μ©ν΄ μ νν μμ΄λμκ² ν¬ννκ³ , κ²°κ³Όλ₯Ό λ°μ
- κ΄μ¬μ΄ μλ μμ΄λμ 리μ€νΈλ‘ κ΄λ¦¬νκ³ νμΈ
- μλͺ»λ κ²½λ‘λ‘ μ κ·Όνμ λ, μλ¬λ₯Ό μλ΄νκ³ μ΄μ λλ λ©μΈ νμ΄μ§λ‘ μ΄λ
![]() |
![]() |
![]() |
|---|---|---|
| κΉμ¬μΉ | κ°μ§ν | μ΄μ μ |
π₯οΈ κΉμ¬μΉ
-
μ΄κΈ° μΈν
- GitHub Issue, PR ν νλ¦Ώ μΈν
- λΌμ°ν μ€μ
-
κ³΅ν΅ μ»΄ν¬λνΈ
- κ³΅ν΅ Header μ»΄ν¬λνΈ κ΅¬ν
-
λλ© νμ΄μ§
- λλ© νμ΄μ§ ꡬν
-
λ§μ΄ νμ΄μ§
- localStorage κΈ°λ° κ΄μ¬ μμ΄λ κ΄λ¦¬ κΈ°λ₯
- 리μ€νΈλ‘ κ΄μ¬ μμ΄λ νμΈ
-
λ°°ν¬
-
λ°ν λ° λ°ν μλ£ μ μ
π₯οΈ κ°μ§ν
-
μ΄κΈ° μΈν
- νλ‘μ νΈ μν¬νλ‘μ° λ° κ°λ° 컨벀μ μ 리
- λλ ν 리 μ΄κΈ° μΈν
-
κ³΅ν΅ μ»΄ν¬λνΈ
- λ²νΌ κ³΅ν΅ μ»΄ν¬λνΈ κ΅¬ν
- μμ΄λ νλ‘ν κ³΅ν΅ μ»΄ν¬λνΈ κ΅¬ν
- λͺ¨λ¬ κ³΅ν΅ μ»΄ν¬λνΈ κ΅¬ν
- λΌλμ€ λ²νΌ κ³΅ν΅ μ»΄ν¬λνΈ κ΅¬ν
-
λͺ©λ‘ νμ΄μ§ ν¬λ λ§ νμ/νμμ κΈ°λ€λ¦¬λ 쑰곡
- μ€μΌλ ν€ λ‘λ© UI ꡬν (
react-loading-skeletonνμ©) - μΊλ¬μ
κΈ°λ₯ ꡬν (
embla-carousel-reactνμ©)
- μ€μΌλ ν€ λ‘λ© UI ꡬν (
-
NotFound νμ΄μ§
- NotFound νμ΄μ§ UI ꡬν
-
λ¬Έμν
- README.md μ 리
π₯οΈ μ΄μ μ
-
μ΄κΈ° μΈν
- λλ ν 리 μ΄κΈ° μΈν
- κ³΅ν΅ style μ μ
-
API ν΅μ
- AXIOSλ₯Ό νμ©ν API ν΅μ ꡬν
- μλ΅ μΈν°μ ν°λ₯Ό ν΅ν μλ¬ μ²λ¦¬ ν΅μΌν
- toast μλ¦Ό ꡬν
-
ν¬λ λ§ μν κ΄λ¦¬
Zustandλ₯Ό νμ©νμ¬ ν¬λ λ§ μ μ μν κ΄λ¦¬ ꡬν
-
λͺ©λ‘ νμ΄μ§ μ΄λ¬μ μ°¨νΈ
- μ¬μ/λ¨μ μμ΄λ μ°¨νΈ ν ꡬν
- μ΄ ν¬νμ κΈ°μ€ μμ μ λ ¬ κΈ°λ₯
- ν¬ννκΈ° λͺ¨λ¬ ꡬν
- React μ»΄ν¬λνΈ μ€κ³: μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ κ°λ°
- μν κ΄λ¦¬: Zustandλ₯Ό νμ©ν μ μ μν κ΄λ¦¬
- API ν΅μ : RESTful APIμμ ν¨μ¨μ μΈ λ°μ΄ν° ν΅μ
- ν νμ : Git λΈλμΉ μ λ΅ λ° μ½λ 리뷰 νλ‘μΈμ€
This project is licensed under the MIT License - see the LICENSE file for details.
μ΄ νλ‘μ νΈλ μ½λμ μ€νλ¦°νΈ Front-End 19κΈ° κ΅μ‘ κ³Όμ μ ν νλ‘μ νΈλ‘ μ μλμμ΅λλ€.


