κ΄κ³ 곡λͺ¨μ μΆνμμ AIμ μ λ¬Έκ°κ° λΆμνμ¬ μ 곡νλ μ€μ ν μμ 리ν¬νΈ νλ«νΌμ λλ€.
μμν λ μλ€μ κ΄κ³ 곡λͺ¨μ (DCA, YCC) μΆνμμ AIμ μ λ¬Έκ°κ° μ¬μΈ΅ λΆμνμ¬ μ 곡νλ μ€μ ν μμ 리ν¬νΈ μλΉμ€μ λλ€.
- π¨ 곡λͺ¨μ μΆνμ μ μΆ λ° κ΄λ¦¬: DCA, YCC 곡λͺ¨μ μ§μμ μ μΆ λ° κ΄λ¦¬
- π AI κΈ°λ° νκ° λ¦¬ν¬νΈ: μΆνμμ νκ° κΈ°μ€, κ°μ /μ½μ μ λ μ΄λ μ°¨νΈμ μ μλ‘ μκ°ν
- π νΈλ λ λΆμ: μμμ νΈλ λ λΆμ λ° λΉκ΅ κΈ°λ₯
- π¬ μ λ¬Έκ° νΌλλ°±: νμ μμ μμμ λΆμ λ° νΌλλ°± μ 곡
- π μμ λ‘κ·ΈμΈ: ꡬκΈ, μΉ΄μΉ΄μ€, λ€μ΄λ² OAuth μΈμ¦ μ§μ
- π± λ°μν λμμΈ: λͺ¨λ°μΌ/λ°μ€ν¬ν± μ΅μ ν
- Next.js 15 (App Router, Turbopack)
- React 19
- TypeScript 5 (strict mode)
- Tailwind CSS 4
- TanStack React Query 5 - μλ² μν κ΄λ¦¬ λ° μΊμ±
- Zustand - ν΄λΌμ΄μΈνΈ μν κ΄λ¦¬
- Zod - μ€ν€λ§ κΈ°λ° νΌ κ²μ¦
- @use-funnel/browser - λ€λ¨κ³ νΌ νλ‘μ° κ΄λ¦¬
- Framer Motion - μ λλ©μ΄μ
- Lottie React - λ‘λ© μ λλ©μ΄μ
- Recharts - λ°μ΄ν° μκ°ν (λ μ΄λ μ°¨νΈ)
- MSW (Mock Service Worker) - API λͺ¨νΉ
- ESLint - μ½λ νμ§ κ΄λ¦¬
- pnpm - ν¨ν€μ§ κ΄λ¦¬μ
susanghan-fe/
βββ src/
β βββ app/ # Next.js App Router νμ΄μ§
β β βββ _apis/ # API ν΄λΌμ΄μΈνΈ λ° μ€ν€λ§
β β βββ application/ # 곡λͺ¨μ μ§μ νμ΄μ§
β β βββ home/ # ν/λλ© νμ΄μ§
β β βββ login/ # λ‘κ·ΈμΈ νμ΄μ§
β β βββ mypage/ # λ§μ΄νμ΄μ§
β β βββ oauth/ # OAuth μ½λ°±
β β βββ reports/ # 리ν¬νΈ μ‘°ν νμ΄μ§
β β βββ sign-up/ # νμκ°μ
νμ΄μ§
β βββ components/ # κ³΅ν΅ μ»΄ν¬λνΈ
β βββ hooks/ # 컀μ€ν
ν
β βββ libs/ # λΌμ΄λΈλ¬λ¦¬ μ€μ
β βββ store/ # Zustand μ€ν μ΄
β βββ utils/ # μ νΈλ¦¬ν° ν¨μ
- JWT κΈ°λ° μΈμ¦ (Access Token, Refresh Token)
- Axios μΈν°μ ν°λ₯Ό ν΅ν μλ ν ν° κ°±μ λ° λμ μμ² νμ μ²λ¦¬
- ν ν° λ§λ£ μ μλ λ‘κ·Έμμ λ° λ¦¬λ€μ΄λ μ
- OAuth μμ λ‘κ·ΈμΈ (ꡬκΈ, μΉ΄μΉ΄μ€, λ€μ΄λ²)
AuthGuardμ»΄ν¬λνΈλ‘ λΌμ°νΈ 보νΈ
@use-funnel/browserλ₯Ό νμ©ν μ μ²μ/νμκ°μ λ€λ¨κ³ νλ‘μ°- URL κΈ°λ° μν κ΄λ¦¬λ‘ λ€λ‘κ°κΈ°/μλ‘κ³ μΉ¨ λμ
- Zod μ€ν€λ§λ₯Ό νμ©ν λ¨κ³λ³ κ²μ¦
- 컀μ€ν
ν
useIsMobileλ‘ λλ°μ΄μ€ κ°μ§ - User Agent, ν°μΉ λλ°μ΄μ€, νλ©΄ ν¬κΈ° μ’ ν© νλ¨
- λλ°μ΄μ±μ ν΅ν 리μ¬μ΄μ¦ μ΄λ²€νΈ μ΅μ ν
- Rechartsλ₯Ό νμ©ν λ μ΄λ μ°¨νΈ κ΅¬ν
- DCA/YCC λνλ³ νκ° νλͺ© μκ°ν
- λ°μν μ°¨νΈ (λͺ¨λ°μΌ/λ°μ€ν¬ν± λμ)
- Framer Motionμ νμ©ν Hero μΉμ μΊλ¬μ
- Intersection Observerλ₯Ό νμ©ν μ€ν¬λ‘€ κΈ°λ° μ λλ©μ΄μ
- React Query μΊμ± μ λ΅μΌλ‘ λΆνμν λ€νΈμν¬ μμ² κ°μ
- Next.js App Routerλ₯Ό νμ©ν μλ² μ¬μ΄λ λ λλ§
- Turbopackμ νμ©ν λΉ λ₯Έ κ°λ° λΉλ
μμν λ μλ€ - 곡λͺ¨μ μμμ λΉλ°μ νν€μΉλ€ π