NET ZERO-FitFitμ μ§μ κ°λ₯ν ν¨μ μλΉλ₯Ό μ₯λ €νκ³ , μ¬μ©μλ€μ΄ μμ μ 체νμ λ§λ μ·μ κ°μμΌλ‘ μ μ΄λ΄μΌλ‘μ¨ λΆνμν μλ₯ ꡬ맀μ λ°νμ μ€μ΄λ κ²μ λͺ©νλ‘ ν©λλ€. νμ λ°°μΆ μ κ°(Net Zero)μ κΈ°μ¬νλ μΉνκ²½ ν¨μ νλ«νΌμ μ§ν₯ν©λλ€.
ν¨μ μ°μ μ μ μΈκ³ νμ λ°°μΆμ ν° λΉμ€μ μ°¨μ§ν©λλ€. νΉν μ¨λΌμΈ μΌνμ νμ±νλ‘ μΈν΄ μ¬μ΄μ¦ λ―Έμ€ λ±μΌλ‘ μΈν λ°νκ³Ό νκΈ°κ° νκ²½μ μ μν₯μ λ―ΈμΉκ³ μμ΅λλ€. μ ν¬λ AI κ°μ νΌν κΈ°μ κ³Ό μ€κ³ κ±°λ νμ±ν, **μΉνκ²½ 보μ μμ€ν (Leaf)**μ κ²°ν©νμ¬ μ¬λ―Έμκ³ κ°μΉ μλ μλΉ κ²½νμ μ 곡νκ³ μ ν©λλ€.
- π AI κ°μ νΌν λ£Έ: λ΄ μ μ μ¬μ§κ³Ό μ· μ΄λ―Έμ§λ₯Ό ν©μ±νμ¬ κ°μμΌλ‘ μ·μ μ μ΄λ³Ό μ μμ΅λλ€.
- π μ§λ κΈ°λ° μ€κ³ κ±°λ: λ΄ μ£Όλ³μ μ¬μ©μλ€κ³Ό μμ νκ² μ€κ³ μλ₯λ₯Ό κ±°λν μ μμ΅λλ€.
- π¬ μ€μκ° μ±ν : νλ§€μμ ꡬ맀μ κ°μ κ°νΈν μν΅μ μ§μν©λλ€.
- π€ μ±λ΄ μλΉμ€: μλΉμ€ μ΄μ© μλ΄ λ° κΆκΈν μ μ λΉ λ₯΄κ² ν΄κ²°ν΄μ€λλ€.
- πΏ μΉνκ²½ ν¬μΈνΈ(Leaf): ν΄μ¦ νκΈ°, μ€κ³ κ±°λ λ±μΌλ‘ ν¬μΈνΈλ₯Ό λͺ¨μ ννμ λ°μ μ μμ΅λλ€.
- π μν κ²μ λ° μΉ΄ν κ³ λ¦¬: μνλ μ·μ μ½κ³ λΉ λ₯΄κ² μ°Ύμ μ μμ΅λλ€.
- λ³Έ νλ‘μ νΈλ Chrome λΈλΌμ°μ λ° λͺ¨λ°μΌ νκ²½μ μ΅μ νλμ΄ μμ΅λλ€.
- μΌλΆ κΈ°λ₯(AI νΌν )μ μλ² μνμ λ°λΌ μ§μ°λ μ μμ΅λλ€.
| μ΄λ¦ | μν |
|---|---|
| μ΄μ£Όν | FE Developer |
| λ°ν΄μ | BE Developer |
| λ°μκ²½ | BE Developer |
| μ¬νλ―Ό | BE Developer & AI Developer |
| μ νμ§ | AI Developer |
| μ΅μμ° | AI Developer |
(νμ μ 보λ₯Ό μμ ν΄μ£ΌμΈμ)
| Web | Mobile Web |
|---|---|
src
βββ api # API μμ² ν¨μ λͺ¨μ
βΒ Β βββ authApi.js # μΈμ¦ κ΄λ ¨ API (λ‘κ·ΈμΈ, νμκ°μ
λ±)
βΒ Β βββ chatApi.js # μ±ν
κ΄λ ¨ API (λ©μμ§ μ μ‘, μ‘°ν)
βΒ Β βββ chatbotApi.js # μ±λ΄ κ΄λ ¨ API
βΒ Β βββ clothesApi.js # μλ₯ κ΄λ ¨ API (μν λ±λ‘, μ‘°ν)
βΒ Β βββ common.js # κ³΅ν΅ API μ€μ λ° ν¨μ
βΒ Β βββ fittingApi.js # κ°μ νΌν
κ΄λ ¨ API
βΒ Β βββ memberApi.js # νμ μ 보 κ΄λ ¨ API
βΒ Β βββ orderApi.js # μ£Όλ¬Έ λ° κ±°λ λ΄μ API
βΒ Β βββ quizApi.js # ν΄μ¦ κ΄λ ¨ API
βΒ Β βββ recommendationApi.js # μΆμ² μμ€ν
κ΄λ ¨ API
βββ App.css # μ± μ μ CSS νμΌ
βββ App.jsx # μ±μ λ©μΈ λΌμ°ν
λ° λ μ΄μμ μ€μ μ»΄ν¬λνΈ
βββ assets # μ μ 리μμ€ (μ΄λ―Έμ§, μμ΄μ½ λ±)
βΒ Β βββ advertisement1.png # κ΄κ³ λ°°λ μ΄λ―Έμ§
βΒ Β βββ bnkBank.png # λΆμ°μν μμ΄μ½
βΒ Β βββ earth_quiz.png # ν΄μ¦ μ§κ΅¬ μ΄λ―Έμ§
βΒ Β βββ earth.png # μ§κ΅¬ μμ΄μ½
βΒ Β βββ fitfit.png # νν λ‘κ³ μ΄λ―Έμ§
βΒ Β βββ hanaBank.png # νλμν μμ΄μ½
βΒ Β βββ ibkBank.png # κΈ°μ
μν μμ΄μ½
βΒ Β βββ kakao_login_medium_wide.png # μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ λ²νΌ μ΄λ―Έμ§
βΒ Β βββ kakaoBank.png # μΉ΄μΉ΄μ€λ±
ν¬ μμ΄μ½
βΒ Β βββ kBank.png # μΌμ΄λ±
ν¬ μμ΄μ½
βΒ Β βββ kbBank.png # κ΅λ―Όμν μμ΄μ½
βΒ Β βββ kebBank.png # νλμν(ꡬ μΈν) μμ΄μ½
βΒ Β βββ kfccBank.png # μλ§μκΈκ³ μμ΄μ½
βΒ Β βββ logo-fitfit copy.png # λ‘κ³ μ¬λ³Έ
βΒ Β βββ logo-fitfit.png # λ©μΈ λ‘κ³
βΒ Β βββ nhBank.png # λνμν μμ΄μ½
βΒ Β βββ postBank.png # μ°μ²΄κ΅ μμ΄μ½
βΒ Β βββ scBank.png # SCμ μΌμν μμ΄μ½
βΒ Β βββ shinhanBank.png # μ νμν μμ΄μ½
βΒ Β βββ space.png # μ°μ£Ό λ°°κ²½ μ΄λ―Έμ§
βΒ Β βββ suhyupBank.png # μν μμ΄μ½
βΒ Β βββ tossBank.png # ν μ€λ±
ν¬ μμ΄μ½
βΒ Β βββ userLocation.png # μ¬μ©μ μμΉ νμ μμ΄μ½
βΒ Β βββ wooriBank.png # μ°λ¦¬μν μμ΄μ½
βββ components # 곡ν΅μΌλ‘ μ¬μ©λλ UI μ»΄ν¬λνΈ
βΒ Β βββ BottomNavBar.jsx # νλ¨ λ€λΉκ²μ΄μ
λ° (λ©μΈ λ©λ΄ μ΄λ)
βΒ Β βββ PhotoPickerModal.jsx # μ¬μ§ μ ν λͺ¨λ¬ (μΉ΄λ©λΌ/μ¨λ²)
βββ constants # μμ λ°μ΄ν° λͺ¨μ
βΒ Β βββ categories.js # μν μΉ΄ν
κ³ λ¦¬ μ μ
βΒ Β βββ termContent.js # μ½κ΄ λ΄μ© μ μ
βββ contexts # μ μ μν κ΄λ¦¬ (Context API)
βΒ Β βββ MapContext.jsx # μ§λ κ΄λ ¨ μν 컨ν
μ€νΈ
βΒ Β βββ SellFormContext.jsx # νλ§€κΈ μμ± νΌ μν 컨ν
μ€νΈ
βΒ Β βββ SignupContext.jsx # νμκ°μ
μ§ν μν 컨ν
μ€νΈ
βββ Hello.jsx # ν
μ€νΈμ© Hello μ»΄ν¬λνΈ
βββ hooks # 컀μ€ν
ν
λͺ¨μ
βΒ Β βββ useRequireAuth.js # λ‘κ·ΈμΈ μ¬λΆ νμΈ λ° λ¦¬λ€μ΄λ νΈ ν
βββ index.css # Tailwind CSS μ§μ
μ λ° κΈ°λ³Έ μ€νμΌ
βββ main.jsx # React μ± μ§μ
μ (DOM λ λλ§)
βββ pages # νμ΄μ§ λ¨μ μ»΄ν¬λνΈ ν΄λ
βΒ Β βββ auth # μΈμ¦ κ΄λ ¨ νμ΄μ§
βΒ Β βΒ Β βββ AuthStartPage.css # μμ νμ΄μ§ μ€νμΌ
βΒ Β βΒ Β βββ AuthStartPage.jsx # μμ νμ΄μ§ (λ‘κ·ΈμΈ/νμκ°μ
λΆκΈ°)
βΒ Β βΒ Β βββ kakao # μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ κ΄λ ¨
βΒ Β βΒ Β βββ KakaoRedirect.jsx # μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ μ½λ°± μ²λ¦¬ νμ΄μ§
βΒ Β βββ category # μΉ΄ν
κ³ λ¦¬ κ΄λ ¨ νμ΄μ§
βΒ Β βΒ Β βββ CategoryPage.jsx # μΉ΄ν
κ³ λ¦¬ λͺ©λ‘ νμ΄μ§
βΒ Β βΒ Β βββ CategoryResultPage.jsx # μΉ΄ν
κ³ λ¦¬ μ ν κ²°κ³Ό 리μ€νΈ νμ΄μ§
βΒ Β βΒ Β βββ components # μΉ΄ν
κ³ λ¦¬ νμ΄μ§ λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ AccessoriesCategory.jsx # μ‘μΈμ리 μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ BagsCategory.jsx # κ°λ°© μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ BottomsCategory.jsx # νμ μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ CategoryClothesList.jsx # μΉ΄ν
κ³ λ¦¬ μλ₯ λͺ©λ‘ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ DressesCategory.jsx # μνΌμ€ μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ OuterwearCategory.jsx # μμ°ν° μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ RecommendedCategory.jsx # μΆμ² μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ ShoesCategory.jsx # μ λ° μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ TopsCategory.jsx # μμ μΉ΄ν
κ³ λ¦¬ μ»΄ν¬λνΈ
βΒ Β βββ Chat # μ±ν
κ΄λ ¨ νμ΄μ§
βΒ Β βΒ Β βββ ChatPage.jsx # μ±ν
λ°© λͺ©λ‘ νμ΄μ§
βΒ Β βΒ Β βββ ChatRoomPage.jsx # κ°λ³ 1:1 μ±ν
λ°© νμ΄μ§
βΒ Β βββ Closet # μ·μ₯ κ΄λ ¨ νμ΄μ§
βΒ Β βΒ Β βββ Closet.jsx # λ΄ μ·μ₯ λ©μΈ νμ΄μ§ (λ±λ‘λ μ· νμΈ)
βΒ Β βΒ Β βββ components # μ·μ₯ νμ΄μ§ λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βΒ Β βββ ClosetTab.jsx # μ·μ₯ ν μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ FittingRoomPage.jsx # κ°μ νΌν
λ£Έ νμ΄μ§ (AI νΌν
μ€ν)
βΒ Β βββ LoadingPage.jsx # λ‘λ© νλ©΄ νμ΄μ§
βΒ Β βββ MainPage # λ©μΈνλ©΄ νμ΄μ§
βΒ Β βΒ Β βββ components # λ©μΈνλ©΄ λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βΒ Β βββ AdSection.jsx # κ΄κ³ μΉμ
βΒ Β βΒ Β βΒ Β βββ MainNavBar.jsx # λ©μΈ μλ¨ λ€λΉκ²μ΄μ
λ°
βΒ Β βΒ Β βΒ Β βββ NewTab.jsx # μ μν ν 컨ν
μΈ
βΒ Β βΒ Β βΒ Β βββ PopularRankingSection.jsx # μΈκΈ° λνΉ μΉμ
βΒ Β βΒ Β βΒ Β βββ PopularTab.jsx # μΈκΈ° μν ν 컨ν
μΈ
βΒ Β βΒ Β βΒ Β βββ ProductCard.jsx # μν μΉ΄λ μ»΄ν¬λνΈ (μΈλ€μΌ, κ°κ²© λ±)
βΒ Β βΒ Β βΒ Β βββ RecommendTab.jsx # μΆμ² μν ν 컨ν
μΈ
βΒ Β βΒ Β βΒ Β βββ SaleTab.jsx # μΈμΌ μν ν 컨ν
μΈ
βΒ Β βΒ Β βΒ Β βββ SearchBar.jsx # κ²μλ° μ»΄ν¬λνΈ
βΒ Β βΒ Β βΒ Β βββ WelcomeModal.jsx # νμ λͺ¨λ¬ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ MainPage.jsx # λ©μΈ νμ΄μ§ μ§μ
μ
βΒ Β βββ map # μ§λ κ΄λ ¨ νμ΄μ§
βΒ Β βΒ Β βββ LocationSearchModal.jsx # μμΉ κ²μ λͺ¨λ¬
βΒ Β βΒ Β βββ MapPage.jsx # μ§λ νμ΄μ§ (λ΄ μ£Όλ³ μν μ°ΎκΈ°)
βΒ Β βΒ Β βββ useKakaoLoader.jsx # μΉ΄μΉ΄μ€λ§΅ λ‘λ ν
βΒ Β βββ MyPage # λ§μ΄νμ΄μ§
βΒ Β βΒ Β βββ AccountManagePage.jsx # κ³μ κ΄λ¦¬ νμ΄μ§
βΒ Β βΒ Β βββ BodyInfoPage.jsx # 체ν μ 보 κ΄λ¦¬ νμ΄μ§
βΒ Β βΒ Β βββ ChatbotPage.jsx # μ±λ΄ μλ΄ νμ΄μ§
βΒ Β βΒ Β βββ components # λ§μ΄νμ΄μ§ λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βΒ Β βββ CleanTransactionModal.jsx # ν΄λ¦° κ±°λ μλ΄ λͺ¨λ¬
βΒ Β βΒ Β βΒ Β βββ HistoryPageLayout.jsx # λ΄μ νμ΄μ§ λ μ΄μμ
βΒ Β βΒ Β βΒ Β βββ PurchaseHistoryList.jsx # ꡬ맀 λ΄μ 리μ€νΈ
βΒ Β βΒ Β βΒ Β βββ PurchaseHistoryTab.jsx # ꡬ맀 λ΄μ ν
βΒ Β βΒ Β βΒ Β βββ ReviewModal.jsx # 리뷰 μμ± λͺ¨λ¬
βΒ Β βΒ Β βΒ Β βββ SalesHistoryList.jsx # νλ§€ λ΄μ 리μ€νΈ
βΒ Β βΒ Β βΒ Β βββ SalesHistoryTab.jsx # νλ§€ λ΄μ ν
βΒ Β βΒ Β βββ LeafManagePage.jsx # 리ν(ν¬μΈνΈ) κ΄λ¦¬ νμ΄μ§
βΒ Β βΒ Β βββ MyPage.jsx # λ§μ΄νμ΄μ§ λ©μΈ νλ©΄
βΒ Β βΒ Β βββ ProfileEditPage.jsx # νλ‘ν νΈμ§ νμ΄μ§
βΒ Β βΒ Β βββ PurchaseHistoryPage.jsx # ꡬ맀 λ΄μ μ 체 νμ΄μ§
βΒ Β βΒ Β βββ QuizPage # ν΄μ¦ κ΄λ ¨ νμ΄μ§ ν΄λ
βΒ Β βΒ Β βΒ Β βββ QuizPage.jsx # ν΄μ¦ λ©μΈ νμ΄μ§
βΒ Β βΒ Β βΒ Β βββ QuizQuestionPage.jsx # ν΄μ¦ λ¬Έμ νμ΄ νμ΄μ§
βΒ Β βΒ Β βββ SalesHistoryPage.jsx # νλ§€ λ΄μ μ 체 νμ΄μ§
βΒ Β βΒ Β βββ SellPage # μν νλ§€ λ±λ‘ ν΄λ
βΒ Β βΒ Β βΒ Β βββ components # νλ§€ νμ΄μ§ λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βΒ Β βΒ Β βββ BasicInfoSection.jsx # κΈ°λ³Έ μ 보 μ
λ ₯ μΉμ
βΒ Β βΒ Β βΒ Β βΒ Β βββ DatePickerModal.jsx # λ μ§ μ ν λͺ¨λ¬
βΒ Β βΒ Β βΒ Β βΒ Β βββ DirectTransactionSection.jsx # μ§κ±°λ μ€μ μΉμ
βΒ Β βΒ Β βΒ Β βΒ Β βββ PhotoUploadSection.jsx # μ¬μ§ μ
λ‘λ μΉμ
βΒ Β βΒ Β βΒ Β βΒ Β βββ PriceSection.jsx # κ°κ²© μ€μ μΉμ
βΒ Β βΒ Β βΒ Β βΒ Β βββ SizeSection.jsx # μ¬μ΄μ¦ μ€μ μΉμ
βΒ Β βΒ Β βΒ Β βΒ Β βββ SpecialSaleSection.jsx # νΉκ° μ€μ μΉμ
βΒ Β βΒ Β βΒ Β βΒ Β βββ StyleSection.jsx # μ€νμΌ νκ·Έ μ€μ μΉμ
βΒ Β βΒ Β βΒ Β βΒ Β βββ VirtualFittingSection.jsx # κ°μνΌν
νμ© μ€μ
βΒ Β βΒ Β βΒ Β βββ EditSellPage.jsx # νλ§€κΈ μμ νμ΄μ§
βΒ Β βΒ Β βΒ Β βββ SellPage.jsx # νλ§€κΈ λ±λ‘ νμ΄μ§
βΒ Β βΒ Β βββ WithdrawalPage.jsx # νμ νν΄ νμ΄μ§
βΒ Β βββ Payment # κ²°μ κ΄λ ¨ νμ΄μ§
βΒ Β βΒ Β βββ PaymentPage.jsx # κ²°μ μ§ν νμ΄μ§
βΒ Β βββ ProductDetailPage # μν μμΈ νμ΄μ§
βΒ Β βΒ Β βββ components # μμΈ νμ΄μ§ λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βΒ Β βββ ProductActionButtons.jsx # ꡬ맀/μ±ν
λ²νΌ
βΒ Β βΒ Β βΒ Β βββ ProductDescription.jsx # μν μμΈ μ€λͺ
βΒ Β βΒ Β βΒ Β βββ ProductDetailHeader.jsx # μμΈ νμ΄μ§ ν€λ
βΒ Β βΒ Β βΒ Β βββ ProductImageCarousel.jsx # μν μ΄λ―Έμ§ μ¬λΌμ΄λ
βΒ Β βΒ Β βΒ Β βββ ProductInfoSection.jsx # μν μ 보 μΉμ
βΒ Β βΒ Β βΒ Β βββ ProductSizeSection.jsx # μ€μΈ‘ μ¬μ΄μ¦ μΉμ
βΒ Β βΒ Β βΒ Β βββ SellerInfoBox.jsx # νλ§€μ μ 보 λ°μ€
βΒ Β βΒ Β βββ ProductDetailPage.jsx # μν μμΈ νμ΄μ§ λ©μΈ
βΒ Β βββ SearchPage # κ²μ κ΄λ ¨ νμ΄μ§
βΒ Β βΒ Β βββ components # κ²μ νμ΄μ§ λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βΒ Β βββ PriceFilterDropdown.jsx # κ°κ²© νν°
βΒ Β βΒ Β βΒ Β βββ RegionFilterDropdown.jsx # μ§μ νν°
βΒ Β βΒ Β βΒ Β βββ StyleFilterDropdown.jsx # μ€νμΌ νν°
βΒ Β βΒ Β βββ SearchPage.jsx # κ²μ κ²°κ³Ό νμ΄μ§
βΒ Β βββ signup # νμκ°μ
κ΄λ ¨ νμ΄μ§
βΒ Β βββ components # νμκ°μ
λ΄λΆ μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ BirthDateSelector.css # μλ
μμΌ μ ν μ€νμΌ
βΒ Β βΒ Β βββ BirthDateSelector.jsx # μλ
μμΌ μ ν μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ GenderSelector.css # μ±λ³ μ ν μ€νμΌ
βΒ Β βΒ Β βββ GenderSelector.jsx # μ±λ³ μ ν μ»΄ν¬λνΈ
βΒ Β βΒ Β βββ InputWithCheckButton.css # μ€λ³΅νμΈ λ²νΌ ν¬ν¨ μ
λ ₯μ°½ μ€νμΌ
βΒ Β βΒ Β βββ InputWithCheckButton.jsx # μ€λ³΅νμΈ λ²νΌ ν¬ν¨ μ
λ ₯μ°½
βΒ Β βΒ Β βββ LabeledInput.css # λΌλ²¨ ν¬ν¨ μ
λ ₯μ°½ μ€νμΌ
βΒ Β βΒ Β βββ LabeledInput.jsx # λΌλ²¨ ν¬ν¨ μ
λ ₯μ°½
βΒ Β βΒ Β βββ PasswordFields.css # λΉλ°λ²νΈ μ
λ ₯ νλ μ€νμΌ
βΒ Β βΒ Β βββ PasswordFields.jsx # λΉλ°λ²νΈ μ
λ ₯ νλ
βΒ Β βββ SignupPage.jsx # νμκ°μ
λ©μΈ νμ΄μ§
βΒ Β βββ SignupStep1.css # λ¨κ³1 μ€νμΌ
βΒ Β βββ SignupStep1.jsx # λ¨κ³1 (μ½κ΄λμ)
βΒ Β βββ SignupStep2.css # λ¨κ³2 μ€νμΌ
βΒ Β βββ SignupStep2.jsx # λ¨κ³2 (μ 보μ
λ ₯)
βΒ Β βββ SignupStep3.css # λ¨κ³3 μ€νμΌ
βΒ Β βββ SignupStep3.jsx # λ¨κ³3 (μλ£)
βΒ Β βββ styles # νμκ°μ
κ³΅ν΅ μ€νμΌ
βΒ Β βΒ Β βββ common.css # κ³΅ν΅ CSS
βΒ Β βββ TermsDetailPage.css # μ½κ΄ μμΈ μ€νμΌ
βΒ Β βββ TermsDetailPage.jsx # μ½κ΄ μμΈ λ΄μ© νμ΄μ§
βΒ Β βββ TermsPage.css # μ½κ΄ λͺ©λ‘ μ€νμΌ
βΒ Β βββ TermsPage.jsx # μ½κ΄ λͺ©λ‘ νμ΄μ§
βββ reducers # Redux Reducer λͺ¨μ
βΒ Β βββ auth.js # μΈμ¦ κ΄λ ¨ 리λμ
βΒ Β βββ counter.js # μΉ΄μ΄ν° 리λμ (μμ μ©)
βΒ Β βββ index.js # λ£¨νΈ λ¦¬λμ κ²°ν©
βββ store.js # Redux Store μ€μ νμΌ
βββ styles # μ€νμΌ κ΄λ ¨ ν΄λ
βΒ Β βββ global.css # μ μ CSS νμΌ
βββ utils # μ νΈλ¦¬ν° ν¨μ ν΄λ
βββ formatters.js # λ μ§/κΈμ‘ ν¬λ§·ν
ν¨μ
βββ imageCompression.js # μ΄λ―Έμ§ μμΆ μ νΈλ¦¬ν°
βββ imageUtils.js # μ΄λ―Έμ§ μ²λ¦¬ κ΄λ ¨ ν¨μ
- Node.js 18+
- npm 9+
$ npm install.env νμΌμ μμ±νκ³ νμν νκ²½ λ³μλ₯Ό μ€μ νμΈμ.
VITE_API_URL=your_api_url
VITE_KAKAO_API_KEY=your_kakao_key
...To run the project locally:
$ npm run dev- Fork the Project
- Create your Feature Branch (
git checkout -b feat/AmazingFeature) - Commit your Changes (
git commit -m 'feat: some AmazingFeature') - Push to the Branch (
git push origin feat/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
μ΄ νλ‘μ νΈλ ν΅μ¬ κΈ°λ₯μ ꡬννκΈ° μν΄ λ€μκ³Ό κ°μ μ€νμμ€ λΌμ΄λΈλ¬λ¦¬μ ν¨ν€μ§λ€μ νμ©νκ³ μμ΅λλ€:
| Category | Package(s) | Description |
|---|---|---|
| Core Framework | react, react-dom, vite |
μΉ μΈν°νμ΄μ€ κ΅¬μΆ λ° κ³ μ±λ₯ λΉλ νκ²½ μ 곡 |
| State Management | redux-toolkit, react-redux |
μ μ μν κ΄λ¦¬ λ° ν¨μ¨μ μΈ λ°μ΄ν° νλ¦ μ μ΄ |
| Data Fetching | react-query, axios |
μλ² λ°μ΄ν° νμΉ, μΊμ± λ° λΉλκΈ° HTTP ν΅μ |
| Real-time Comm. | stompjs, sockjs-client |
μΉμμΌ κΈ°λ°μ μ€μκ° μ±ν κΈ°λ₯ ꡬν |
| Routing | react-router-dom |
μ μΈμ λΌμ°ν μ ν΅ν νμ΄μ§ κ° μ΄λ κ΄λ¦¬ |
| Map & Location | react-kakao-maps-sdk |
μΉ΄μΉ΄μ€λ§΅ API μ°λμ ν΅ν μ§λ κΈ°λ° κ±°λ μ 보 μ 곡 |
| UI Components | react-icons, sweetalert2, react-hot-toast |
μμ΄μ½ μμ€ν λ° μ€λ λ°± μλ¦Ό/λͺ¨λ¬ UI μ 곡 |
| UI & UX | react-confetti, react-day-picker, react-markdown |
λνν μ λλ©μ΄μ , λ μ§ μ ν λ° λ§ν¬λ€μ΄ λ λλ§ μ§μ |
| Utilities | browser-image-compression |
μ΄λ―Έμ§ μ λ‘λ μ΅μ νλ₯Ό μν λΈλΌμ°μ λ¨ μ΄λ―Έμ§ μμΆ |
| Styling | tailwindcss, postcss, autoprefixer |
μ νΈλ¦¬ν° νΌμ€νΈ νλ μμν¬λ₯Ό μ΄μ©ν νλμ μΈ λμμΈ κ΅¬ν |
| Development | eslint, globals |
μ½λ νμ§ μ μ§ λ° μΌκ΄λ μ½λ© 컨벀μ μ μ© |
λ¬Έμμ¬νμ Issuesμ λ±λ‘ν΄μ£Όμκ±°λ leejuhan0527@gmail.comμΌλ‘ μ΄λ©μΌμ 보λ΄μ£ΌμΈμ.
