κ°λ³κ² λκΈ°κ³ λΉ λ₯΄κ² μ μ°°νλ, μνΌ κΈ°λ° κ²½λ§€ν μ€κ³ κ±°λ νλ«νΌ
PLIPμ μΈμ€ν μ€ν 리μ²λΌ μΉ΄λλ₯Ό λκΈ°λ©° κ°λ³κ² νμνκ³ ,
ν΄λ¦ ν λ²μΌλ‘ μ¦μ μ μ°°ν μ μλ κ²μ΄λ―ΈνΌμΌμ΄μ κΈ°λ° κ²½λ§€ν μ΄μ»€λ¨Έμ€ μλΉμ€μ λλ€.
μ μ λ μνΌμ²λΌ λΉ λ₯΄κ² λκΈ°λ©° μνμ λ°κ²¬νκ³ μ€μκ° κ²½μΒ·νμ΄λ¨ΈΒ·λμ°° κ²½ν λ± λͺ°μ μ μΈ UXλ₯Ό ν΅ν΄ μλ‘μ΄ μΌν νλ¦μ κ²½νν μ μμ΅λλ€.
PLIP νλ‘ νΈμλλ βκ²½μ κΈ°λ° κ²½λ§€ κ²½νβ μ λ μ§κ΄μ μ΄κ³ μμνκ² μ λ¬νκΈ° μν΄ λ€μκ³Ό κ°μ UX λͺ©νλ₯Ό κ°μ§κ³ κ°λ°λμμ΅λλ€.
-
μ€μμ΄ν κΈ°λ° νμ κ²½ν κ·Ήλν β framer-motionμ νμ©ν μΉ΄λ μ€ν μΈν°λμ ꡬν
-
3μ΄ λ§μ μ΄ν΄ κ°λ₯ν μ μ°° UX β λ°ν μνΈ κΈ°λ°μ μ¦μ μ μ°° νλ‘μ°
-
κ²½μμ΄ λ³΄μ΄λ μ€μκ° κ²½λ§€ νλ¦ β λ¨μ μκ°, μ μ°° νμ€ν 리, μ μ°° λνΉμ μ§κ΄μ μΌλ‘ ꡬμ±
-
κ°νΈν νλ§€ νλ‘μ° β μ΄λ―Έμ§ μ λ‘λλΆν° κ²½λ§€ λ±λ‘κΉμ§μ λ¨κ³ μ΅μν
-
μλ¦Ό Β· μ±ν Β· λ§μ΄νμ΄μ§ κΈ°λ₯μ ν΅ν μ 체 μ¬μ©μ μ¬μ μμ± β SSE notificationμ μ΄μ©ν μ¦μ μλ¦Ό μλΉμ€ λ° ν μ€νΈ λ©μμ§ μ 곡
"λꡬλ λΆλ΄ μμ΄ μ¦κΈ°κ³ μ°Έμ¬ν μ μλ μμνκ³ μ§κ΄μ μΈ κ²½λ§€ν μΌν κ²½νμ λ§λλ κ²"
π΄ 1. λ©μΈ νμ΄μ§ β μΉ΄λ μ€ν νμ κ²½ν (framer-motion)
- μΈμ€ν μ€ν 리/ν΄λ μΉ΄λ ꡬ쑰λ₯Ό λͺ¨ν°λΈλ‘ ν μ€μμ΄ν UX
- framer-motion gesture, drag νμ©
- λ€μ μΉ΄λλ‘μ λΆλλ¬μ΄ μ ν
- μν μ€ν¬λ‘€ μμ΄ λΉ λ₯Έ νμ κ°λ₯
π½ 2. λ°ν μνΈ κΈ°λ° μ μ°° νλ‘μ°
- μ μ°° UIλ₯Ό νλ©΄ νλ¨μ κ³ μ λ Bottom Sheetλ‘ κ΅¬μ±
- νμ¬ μ΅κ³ κ°, λ¨μ μκ° μ€μ¬μ λ―Έλλ© UI
- μ€μκ° μ μ°° λ°μ
π 3. μν μμΈ νμ΄μ§
- μ΄λ―Έμ§ μ€μμ΄νΌ
- μν μ€λͺ , μν, μ§μ, ꡬμ±ν λ± μμΈ μ 보
- μ 체 μ μ°° νμ€ν 리 μ‘°ν
- νλ§€μμ μ μ°°μ κ°μ κ³΅κ° Q&A κΈ°λ₯
π 4. μ€μκ° μλ¦Ό(Notification)
- μλ¦Ό 리μ€νΈ λ° ν μ€νΈ λ©μμ§ μ 곡
- μλ‘μ΄ μ μ°°/κ²½λ§€ μ’ λ£ μ΄λ²€νΈ νμ
π¬ 5. μ±ν μμ€ν
- νλ§€μμμ 1:1 μ±ν
- λμ°° μ΄ν κ±°λ μ§ν
πββοΈ 6. λ§μ΄νμ΄μ§
- κ²½λ§€ λ±λ‘
- λ±λ‘ν κ²½λ§€ 리μ€νΈ
- ν¬μΈνΈ μΆ©μ
- 보μ¦κΈ κ΄λ¦¬
- λμ°°/μ°Έμ¬ λ΄μ κ΄λ¦¬
π 7. κ²μ κΈ°λ₯
- μΉ΄ν κ³ λ¦¬ κΈ°λ° κ²μ
- μ΅κ·Ό κ²μμ΄ μ μ₯
1) μνΌ κΈ°λ° νμ UX
κΈ°μ‘΄ μ€κ³ κ±°λλ κ²μΒ·νν°Β·μ€ν¬λ‘€ μ€μ¬μ΄λΌ λ°κ²¬μ μ¦κ±°μμ΄ λΆμ‘±ν©λλ€.
PLIPμ μΈμ€ν/ν±ν‘ UI κ°μ±μ μ°¨μ©ν μΉ΄λ μ€ν μ€μμ΄ν UXλ‘ βκ°λ³κ² λκΈ°λ©° μ°μ°ν λ°κ²¬νλβ κ²½νμ μ 곡ν©λλ€.
2) λ€κ³ Β·μ±ν λΆλ΄ μλ κ±°λ ꡬ쑰
κΈ°μ‘΄ μ€κ³ κ±°λμ ν΅μ¬ νΌλ‘λ
- μμΈ νμΈ
- λ°λ³΅λλ μ§λ¬Έ
- λ€κ³
- κ±°λ μ₯μ/μκ° μ‘°μ¨
μ΄λΌλ μ μ΄ μ μ μ‘°μ¬μμ λͺ ννκ² λλ¬λ¬μ΅λλ€.
PLIPμ μ μ°° κΈ°λ° κ°κ²© νμ±, κ³΅κ° Q&Aλ₯Ό ν΅ν΄ μ μ°° νλ‘μΈμ€λ₯Ό μ΅μννμκ³ ,
βλΆνμν μν΅ μμ΄ λΉ λ₯΄κ² κ±°λλλβ μ€κ³ κ±°λ μμ€ν μ ꡬμΆνμμ΅λλ€.
3) μ¦μ μ μ°° & μλ λμ°°μ λ°μ§κ°
PLIPμ νλμ¬λ¦¬λ₯Ό λ°μν΄
- λ¨μ μκ°
- μ μ°° λνΉ
- μ€μκ° κ²½μ νμ€ν 리 λ₯Ό μ§κ΄μ μΌλ‘ 보μ¬μ£Όλ©° λͺ°μ κ°μ κ·Ήλννμμ΅λλ€.
4) 보μ¦κΈ κΈ°λ° νμ§ κ΄λ¦¬ & μ λ’°μ± ν보
PLIPμ μ μ°°κ° 10%λ₯Ό 보μ¦κΈμΌλ‘ μ€μ ν΄ λμ°° ν ꡬ맀 κ±°λΆλ₯Ό λ°©μ§νμ¬ λ¬΄μ± μν μ μ°°μ μ€μ΄κ³ μλΉμ€μ μ λ’°μ±μ ν보νμ΅λλ€.
5) λꡬλ μ½κ² μ¬λ¦΄ μ μλ νλ§€ νλ‘μ°
μ¬μ§ μ λ‘λ β μ€λͺ μμ± β κ²½λ§€ μκ° μ€μ
λ¨ 3λ¨κ³μ νλ‘μ°λ§μΌλ‘ μμ 물건λ λΆλ΄ μμ΄ μ¬λ¦΄ μ μλ νκ²½μ μ‘°μ±νμ΅λλ€.
PLIPμ βλΉ λ₯Έ νμ + μ¦μ μ
μ°°β UX κΈ°λ°μΌλ‘
κ΅¬λ§€λ‘ μ΄μ΄μ§λ μλκ° λΉ λ₯΄κΈ° λλ¬Έμ λ€μν μμ΅ν κ΅¬μ‘°κ° κ°λ₯ν©λλ€.
μ μ°° λ° λ³΄μ¦κΈ κ²°μ λ₯Ό μν ν¬μΈνΈ μΆ©μ μ μμ‘ μμλ£λ₯Ό λΆκ³Όν©λλ€.
- λͺ¨λ°μΌ κ²μΒ·κ²½λ§€ μλΉμ€μμ μΌλ°μ μΌλ‘ μ¬μ©λλ ν΅μ¬ μμ΅ λͺ¨λΈ
- μΆ©μ β μ μ°° β νλΆ/μ¬μ©μ μνκ΅¬μ‘°λ‘ μμ μ μΈ λ§€μΆ λ°μ
κ²½λ§€ λμ°° μ νλ§€μμκ² μμλ£λ₯Ό λΆκ³Όν©λλ€.
- κ³ μ μμλ£
- λμ°°κ° λΉμ¨ κΈ°λ° μμλ£
μν λ ΈμΆμ λμ΄κ³ μΆμ νλ§€μλ₯Ό μν μ λ£ μ΅μ μ λλ€.
- π μλ¨ κ³ μ (Boost)
- π·οΈ ν νΌλ μμ λ ΈμΆ
- β μΉ΄ν
κ³ λ¦¬ 리μ€νΈ λ΄ κ°μ‘° λ
ΈμΆ
μ€κ³ κ±°λ νλ«νΌμμ κ°μ₯ κ°λ ₯ν μμ΅ λͺ¨λΈ μ€ νλμ λλ€.
PLIPμ βκ²½λ§€ν μ¬λ―Έβ νΉμ±μ νμ©ν λΈλλΒ·ν¬λ¦¬μμ΄ν° νμ κ²½λ§€μ λλ€.
- νμ ν κ΅Ώμ¦Β·μ½λΌλ³΄ μ ν
- MZ νκΉ λΈλλμ λμ μλμ§ μ°½μΆ
β λΈλλμ ν¬λ€ + κ²½λ§€ κ²½μμ¬λ¦¬κ° κ²°ν©νλ©° λμ μ°Έμ¬μ¨ λ° λ§€μΆ κΈ°λ.
νλ«νΌ νΈλν½μ νμ©ν κ΄κ³ μμ΅ λͺ¨λΈμ λλ€.
- π° μΉ΄λ νΌλ μ€κ° λ ΈμΆ κ΄κ³ (Feed Ad)
- π·οΈ νΉμ μΉ΄ν κ³ λ¦¬ μ€ν°μ μν
- π― μ¬μ©μ μ·¨ν₯ κΈ°λ° μΆμ² μκ³ λ¦¬μ¦ κ΄κ³
μλΉμ€ κ³ λν μ΄ν μ€κ° κ²°μ /μ‘κΈ λͺ¨λΈλ‘ νμ₯ κ°λ₯ν©λλ€.
- μμ κ±°λ(μμ€ν¬λ‘)
- μμλ£ κΈ°λ° μ‘κΈ/κ²°μ μλΉμ€
- κ±°λ μλ£ νλ¦ μμ ν
| κ΅¬λΆ | μ¬μ© κΈ°μ |
|---|---|
| Frontend Framework | React, TypeScript, Vite |
| UI/Interaction | Tailwind CSS, CSS Modules, Global CSS, Framer Motion |
| State & Data Management | TanStack Query, Zustand, React Hooks |
| Routing & Networking | React Router DOM, Axios |
| Build & Deployment | Vite, Vercel |
| Version Control | Git, GitHub |
| Code Quality | ESLint, Prettier, Husky, GitHub Actions |
| Design & Collaboration | Figma, Notion |
μλλ μ€μ νλ‘μ νΈ κ΅¬μ‘°λ₯Ό μ 리ν ννμ λλ€.
src/
βββ apis/
β βββ auction/
β β βββ auctionDeckApi.ts
β β βββ createBidApi.ts
β β βββ postSwipeApi.ts
β βββ auth/
β βββ chat/
β βββ item/
β β βββ bid/
β β βββ detail/
β βββ my/
β βββ notification/
β βββ search/
β βββ instance.ts
β
βββ assets/
β βββ fonts/
β βββ images/
β βββ svgs/
β
βββ components/
β βββ chat/
β βββ common/
β βββ item/
β βββ mainpage/
β βββ my/
β βββ notification/
β
βββ constants/
β βββ category.ts
β βββ newAuction.ts
β βββ pointHistory.ts
β βββ profileImage.ts
β
βββ hooks/
β βββ auction/
β βββ auth/
β βββ chat/
β βββ googleAnalytics/
β βββ item/
β βββ my/
β βββ notification/
β βββ search/
β βββ swipe/
β
βββ layouts/
β βββ LayoutWithFooter.tsx
β βββ MainLayout.tsx
β
βββ pages/
β βββ alarm/
β βββ bidItem/
β βββ chat/
β βββ home/
β βββ itemDetail/
β βββ login/
β βββ my/
β βββ notFound/
β βββ search/
β
βββ router/
β βββ ReactQueryProvider.tsx
β βββ RequireAuth.tsx
β βββ Router.tsx
β
βββ store/
β βββ useAuthStore.ts
β βββ useNotificationStore.ts
β βββ useUserStore.ts
β
βββ styles/
β βββ fonts.css
β βββ global.css
β βββ imageSwiper.css
β
βββ utils/
β βββ dateUtils.ts
β βββ priceUtils.ts
β
βββ App.tsx
βββ main.tsx
Branch Types
- main β λ°°ν¬μ© μμ λ²μ
- dev β κ°λ° μ§ν μ€ λ²μ
- feat/ β κΈ°λ₯ λ¨μ κ°λ°
- hotfix/ β κΈ΄κΈ λ²κ·Έ μμ
Naming Convention
- feat/μ΄μλ²νΈ-μμ λͺ
- hotfix/μ΄μλ²νΈ-μμ λͺ
- λ¨Έμ§ ν λΈλμΉλ μμ±μκ° μμ
[FEAT] μλ‘μ΄ κΈ°λ₯ κ°λ°
[FIX] λ²κ·Έ μμ
[REFACTOR] μ½λ 리ν©ν λ§
[STYLE] μ½λ μ€νμΌ λ³κ²½
[DESIGN] UI λμμΈ λ³κ²½
[CHORE] μ€μ /μμν μμ
[DEL] λΆνμν μ½λ μμ
[MOVE] νμΌ μ΄λ
[RENAME] νμΌ μ΄λ¦ λ³κ²½
[DOCS] λ¬Έμ μμ
[TEST] ν
μ€νΈ μ½λ
- μ»΄ν¬λνΈ/νμ΄μ§: PascalCase
- hooks/utils: camelCase
- assets: μλ¬Έμ
- import κ²½λ‘: μ λκ²½λ‘(@/) μ¬μ©
- ν΄λλͺ : camelCase
Figma λμμΈ κΈ°μ€ 393px λͺ¨λ°μΌ νλ μ κΈ°λ° κ΅¬ν (μΉ΄λ νμ μ€μ¬μ κ²μ΄λ―ΈνΌμΌμ΄μ UX λ°μ)
| νμ΄μ§ | μ€λͺ |
|---|---|
| Home / SwipeFeed | μνΌμ²λΌ μΉ΄λλ₯Ό μ€μμ΄νλ‘ λκΈ°λ©° μλ‘μ΄ κ²½λ§€ λ¬Όνμ λ°κ²¬νλ νμν λ©μΈ νλ©΄. β보λ₯β κΈ°λ₯μ ν΅ν΄ λ€μ λ³΄κ³ μΆμ μνμ κ΄λ¦¬ν μ μμ. |
| Bid BottomSheet | λ²νΌ ν λ²μΌλ‘ μ¦μ μ°Έμ¬ κ°λ₯ν λ¨μνλ μ μ°° UX. λ¨μ μκ°Β·νμ¬ μ΅κ³ κ° λ± μ΅μ μ λ³΄λ§ λ³΄μ¬μ£Όλ μ§κ΄μ ꡬ쑰. |
| ItemDetail Page | μν μμΈ μ€λͺ , μ 체 μ μ°° νμ€ν 리, νλ§€μ μ 보κΉμ§ νλμ νμΈ. μ±ν μμ΄λ λμΌ μ§λ¬Έ λ°λ³΅μ λ§λ Q&A κΈ°λ° μν΅ μμ€ν . |
| Bidding Status / My Bids | μ§ν μ€Β·μ’ λ£λ κ²½λ§€λ₯Ό ꡬλΆν΄ 보μ¬μ£Όκ³ , λμ°°Β·μ€ν¨ κ²°κ³Όλ₯Ό λͺ νν μλ €μ€. μ€μκ° κ²½μ νλ¦κ³Ό λ΄ μ μ°°κ° μμΉλ₯Ό μ§κ΄μ μΌλ‘ νμ κ°λ₯. |
| Win Result & Chat Page | λμ°° μ§ν νλ§€μμ λ°λ‘ μ΄μ΄μ§λ μ±ν νλ©΄. κ±°λ μλ£ λ²νΌμ ν΅ν΄ ꡬ맀 νμ ν νλ‘μΈμ€κ° μ’ λ£λ¨. |
| MyPage | ν¬μΈνΈΒ·λ³΄μ¦κΈ λ΄μ, λμ κ²½λ§€ λͺ©λ‘ κ΄λ¦¬, μ κ²½λ§€ λ±λ‘ κΈ°λ₯ μ 곡. μ¬μ§ μ λ‘λ β μ€λͺ μμ± β κ²½λ§€ μκ° μ€μ μμΌλ‘ ꡬμ±λ κ°λ¨ν νλ§€ νλ‘μ°. |
| Add Auction Page | μ΅λ 10μ₯μ μ¬μ§ μ λ‘λ, μΉ΄ν κ³ λ¦¬/μν μ ν, κ²½λ§€ μκ° μ€μ λ± λꡬλ μ½κ² μ¬λ¦΄ μ μλ κ²½λ§€ λ±λ‘ νλ‘μΈμ€ μ 곡. |
| Point / Deposit System | μ μ°°κ°μ 10%λ₯Ό 보μ¦κΈμΌλ‘ μ€μ ν΄ λ¬΄λΆλ³ν μ μ°°μ λ°©μ§. ꡬ맀 κ±°λΆ μ 보μ¦κΈ μ°¨κ° μλ΄ λ° κ²°μ /μΆ©μ κΈ°λ₯ μ 곡. |
βκ°λ³κ² μ¬λ¦¬κ³ , κ°λ³κ² μ¬κ³ , λΉ λ₯΄κ² μ¦κΈ°λ μλ‘μ΄ μ€κ³ κ±°λ λ¬Ένβ
PLIPμ κΈ°μ‘΄ μ€κ³ κ±°λμ λλ¦° μν΅, κ°κ²© λ€κ³ , λ°λ³΅ μ§λ¬Έ λ± λ³΅μ‘νκ³ νΌλ‘ν κ³Όμ μ μ κ±°νκ³ , μνΌμ²λΌ λΉ λ₯΄κ² νμνκ³ λ²νΌ ν λ²μΌλ‘ μ¦μ μ μ°°νλ μμ ν μλ‘μ΄ μΌν κ²½νμ μ 곡ν©λλ€.
μ°λ¦¬λ νμ(Discovery) κ³Ό κ²½μ(Gamification) μ΄ κ²°ν©λ UXλ₯Ό ν΅ν΄ μ¬μ©μκ° μΌμ μμμ μμ°μ€λ½κ² μ¦κ±°μκ³Ό λͺ°μ κ°μ λλΌλ©° μ¬μν 물건λ μ½κ² μ¬κ³ ν μ μλ νκ²½μ λ§λ€κ³ μ ν©λλ€.
PLIPμ λͺ©νλ λ¨μν μ€κ³ κ±°λ νλ«νΌμ΄ μλ, μ¦ν₯μ νμμ΄ μ£Όλ μ¬λ―Έμ 곡μ ν κ²½μμ μ€λ¦΄μ λ΄μ μλ‘μ΄ μ»€λ¨Έμ€ κ²½νμ ꡬμΆνλ κ²μ λλ€.
λ©μμ΄μ¬μμ²λΌ 13κΈ° Hoo Make This!ν
κ°λ³κ² λκΈ°κ³ λΉ λ₯΄κ² μ
μ°°νλ μνΌ κΈ°λ° κ²½λ§€ν μ€κ³ κ±°λ νλ«νΌ, βPLIPβ