μ°λ¦¬ κ°μ‘±μ μΈμ΄λ‘ μ΄μΌκΈ°κ° μμλκ³ μμ±λλ 곡κ°.
MORETALE Frontendλ AI λν μμ±λΆν° λμκ΄, λ¨μ΄μ₯, ν΄μ¦, 리μλ μμ€ν κΉμ§ λͺ¨λ κΈ°λ₯μ μ§κ΄μ μΈ νλ¦κ³Ό μ¦κ±°μ΄ μΈν°λμ μΌλ‘ μ°κ²°ν©λλ€.
λ€λ¬Έν κ°μ μ΄λ¦°μ΄λ€μ΄ μΈμ΄μ μ₯λ²½μ λμ΄ κ°μ‘±κ³Ό ν¨κ» μ΄μΌκΈ°λ₯Ό μ½κ³ , λ£κ³ , λ°°μ°λ©° μ±μ₯ν μ μλλ‘ μ΄μ€μΈμ΄ κΈ°λ°μ μ¬μ©μ κ²½νμ μ 곡ν©λλ€.
![]() Yeonjae Lee |
|---|
| Sookmyung Women's University |
| Member, Frontend |
MORETALE Frontendλ μ¬μ©μ μΈμ¦, νλ‘ν κ΄λ¦¬, AI λν μμ±, λμκ΄, ν΄μ¦, λ¨μ΄μ₯, TTS μ¬μ, κΏλ¨μ§ 보μ μμ€ν λ± μ¬μ©μκ° μ§μ κ²½ννλ λͺ¨λ κΈ°λ₯μ μ 곡νλ React κΈ°λ° μΉ μ ν리μΌμ΄μ μ λλ€.
Backendμ μ°λνμ¬ μ¬μ©μ μμ²μ μ²λ¦¬νκ³ , μμ±λ λν, ν΄μ¦, λ¨μ΄μ₯, μμ± μ½ν μΈ λ₯Ό μ§κ΄μ μΈ UIμ μΈν°λμ μΌλ‘ μ 곡ν©λλ€. λν μ΄μ€μΈμ΄ λν μ½κΈ°, ν΄μ¦ νμ΄, λ¨μ΄ νμ΅, 리μλ νλ κ³Όμ μ νλμ μ¬μ©μ κ²½νμΌλ‘ μμ°μ€λ½κ² μ°κ²°ν©λλ€.
MORETALEμ λ€λ¬Έν κ°μ μ΄λ¦°μ΄μ λΆλͺ¨κ° ν¨κ» μ¬μ©ν μ μλ μ΄μ€μΈμ΄ λν μμ± μλΉμ€λ₯Ό λͺ©νλ‘ ν©λλ€.
Frontendλ μΈμ΄μ μ₯λ²½ μμ΄ μ΄μΌκΈ°λ₯Ό μ½κ³ , λ£κ³ , λ°°μ°λ©° μ±μ₯ν μ μλ μ¬μ©μ κ²½νμ μ 곡νλ μν μ μνν©λλ€.
| Role | Type |
|---|---|
| Language | |
| Framework | |
| Build Tool | |
| Styling | |
| Routing | |
| API Client | |
| Authentication | |
| Deployment |
Google OAuth2 κΈ°λ° λ‘κ·ΈμΈμ μ§μν©λλ€.
- Google OAuth2 λ‘κ·ΈμΈ μ°λ
- λ‘κ·ΈμΈ μν κ΄λ¦¬ λ° JWT μ μ₯
- Access Token μΈμ¦ μ²λ¦¬
- μ¬μ©μ μΈμ¦ μν μ μ§
- λ‘κ·ΈμΈ, λ‘κ·Έμμ λ° νν΄ κΈ°λ₯ μ 곡
μ¬μ©μμ μ 보λ₯Ό μ€μ νκ³ κ΄λ¦¬ν μ μλ νλ‘ν κΈ°λ₯μ μ 곡ν©λλ€.
- μ¬μ©μ νλ‘ν μμ± λ° μμ
- μ£Ό μΈμ΄ λ° λ³΄μ‘° μΈμ΄ μ€μ
- μ¬μ©μ λ§μΆ€ λν μμ±μ μν νλ‘ν μ 보 μ λ ₯
AIκ° μμ±ν λνλ₯Ό μ½κ³ νμ΅ν μ μλ λν κ²½νμ μ 곡ν©λλ€.
- AI λν μμ± μμ²
- μμ± μ§ν μν νμΈ
- μμ±λ λν μ‘°ν
- νμ§ λ° μΌλ¬μ€νΈ κΈ°λ° λν κ°μ
- μΈμ΄λ³ λ¬Έμ₯ TTS μμ± λ£κΈ°
- Web Speech API κΈ°λ° λ¨μ΄ μμ± λ£κΈ°
- λ¨μ΄ μ μ₯ λ° μμ
λν μ λ¨μ΄λ₯Ό νμ΅ν μ μλλ‘ λ¨μ΄μ₯ κΈ°λ₯μ κ΄λ¦¬ν©λλ€.
- λνλ³ λ¨μ΄ μ μ₯ λ° μ‘°ν
- λ¨μ΄ μλ―Έ λ° λ²μ μ 보 νμΈ
- Web Speech API κΈ°λ° λ¨μ΄ μμ± λ£κΈ°
μμ±λ λνλ₯Ό κΈ°λ°μΌλ‘ ν΄μ¦ κΈ°λ₯μ μ 곡ν©λλ€.
- λν κΈ°λ° ν΄μ¦ νμ΄
- ν΄μ¦ λ¬Έμ λ° μ νμ§ νμΈ
- μ¬μ©μ μ λ΅ μ μΆ
- μ λ΅ μ¬λΆ λ° μ±μ κ²°κ³Ό νμΈ
μ¬μ©μμ νλμ λ°λ₯Έ 보μμ νμΈν μ μλ κΏλ¨μ§ κΈ°λ₯μ μ 곡ν©λλ€.
- κΏλ¨μ§ 보μ λ νμΈ
- λν μ½κΈ° λ° ν΄μ¦ νμ΄ κ²°κ³Όμ μ°λ
- νμ΅ λκΈ° λΆμ¬λ₯Ό μν 리μλ κ²½ν μ 곡
MORETALE Frontendλ Vercel κΈ°λ°μΌλ‘ λ°°ν¬λ©λλ€.
GitHub Repository
β
Vercel
β
Vite Build
β
Production Deployment
GitHub Repositoryμ Vercelμ μ°λνμ¬ λ°°ν¬λ₯Ό μλννμ΅λλ€.
main λΈλμΉμ λ³κ²½ μ¬νμ΄ λ°μλλ©΄ Vercelμμ μλμΌλ‘ νλ‘μ νΈλ₯Ό λΉλνκ³ λ°°ν¬ν©λλ€.
λ°°ν¬λ μ ν리μΌμ΄μ
μ μ΅μ λ²μ μΌλ‘ μ¦μ λ°μλλ©°, μ¬μ©μλ λ³λμ μ
λ°μ΄νΈ μμ΄ μλ‘μ΄ κΈ°λ₯κ³Ό κ°μ μ¬νμ μ΄μ©ν μ μμ΅λλ€.
Vercel νκ²½ λ³μλ₯Ό νμ©νμ¬ API μλ² μ£Όμ λ° μλΉμ€ μ€μ μ κ΄λ¦¬ν©λλ€.
λΉλ μ νκ²½ λ³μ(VITE_API_BASE_URL)λ₯Ό μ£Όμ νμ¬ κ°λ° νκ²½κ³Ό μ΄μ νκ²½μ λΆλ¦¬νκ³ , Backend μλ²μ μμ νκ² ν΅μ ν μ μλλ‘ κ΅¬μ±νμ΅λλ€.
git clone https://github.com/GDGoC-quadS-Team1/MoreTale-frontend.git
cd MoreTale-frontendνλ‘μ νΈ μ€νμ νμν ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
npm installλ£¨νΈ λλ ν°λ¦¬μ .env νμΌμ μμ±νκ³ νμν κ°μ μ
λ ₯ν©λλ€.
μ£Όμ νκ²½λ³μλ λ€μκ³Ό κ°μ΅λλ€.
VITE_API_BASE_URL=http://localhost:8080κ°λ° μλ²λ₯Ό μ€νν©λλ€.
npm run devνλ‘λμ
λΉλλ₯Ό μμ±ν©λλ€.
λΉλ κ²°κ³Όλ¬Όμ dist λλ ν°λ¦¬μ μμ±λ©λλ€.
npm run buildλΉλ κ²°κ³Όλ₯Ό λ‘컬μμ νμΈν μ μμ΅λλ€.
npm run previewμ ν리μΌμ΄μ μ΄ μ μμ μΌλ‘ μ€νλλ©΄ μλ μ£Όμλ‘ μ κ·Όν μ μμ΅λλ€.
http://localhost:5173
MoreTale-frontend
βββ public
β βββ favicon.svg
β
βββ src
β βββ apis
β β βββ user.ts
β β βββ tale.ts
β β βββ stories.ts
β β βββ library.ts
β β βββ vocabulary.ts
β β βββ quiz.ts
β β
β βββ assets
β β βββ fonts
β β β βββ Pretendard-*.ttf
β β βββ images
β β
β βββ components
β β βββ profile
β β β βββ ProfileForm.tsx
β β β βββ ProfileEditModal.tsx
β β βββ BookCard.tsx
β β βββ Header.tsx
β β βββ InputField.tsx
β β βββ Slogan.tsx
β β βββ YellowButton.tsx
β β
β βββ lib
β β βββ api.ts
β β βββ auth.ts
β β βββ speechSynthesis.ts
β β βββ taleGenerationSession.ts
β β
β βββ pages
β β βββ tale
β β β βββ IntroPage.tsx
β β β βββ PromptPage.tsx
β β β βββ LanguagePage.tsx
β β β βββ LoadingPage.tsx
β β β βββ CompletePage.tsx
β β β βββ ReadPage.tsx
β β β
β β βββ library
β β β βββ LibraryPage.tsx
β β β βββ VocaListPage.tsx
β β β βββ VocabularyPage.tsx
β β β
β β βββ quiz
β β β βββ QuizListPage.tsx
β β β βββ QuizPlayPage.tsx
β β β
β β βββ LoginPage.tsx
β β βββ OnboardingPage.tsx
β β βββ ProfileComplete.tsx
β β βββ HomePage.tsx
β β βββ MyPage.tsx
β β
β βββ App.tsx
β βββ main.tsx
β βββ App.css
β βββ index.css
β βββ vite-env.d.ts
β
βββ .env (not included in github repo)
βββ index.html
βββ vite.config.ts
βββ vercel.json
βββ package.json
βββ tsconfig.json
βββ tsconfig.app.json
βββ tsconfig.node.json
βββ eslint.config.js
βββ README.md
- React, TypeScript κΈ°λ° νλ‘ νΈμλ ꡬ쑰 μ€κ³
- Styled Components κΈ°λ° UI μ»΄ν¬λνΈ λ° λμμΈ μμ€ν ꡬμΆ
- Google OAuth2 λ‘κ·ΈμΈ λ° JWT κΈ°λ° μΈμ¦ νλ¦ κ΅¬ν
- μ΄μ€μΈμ΄ λν μμ±, λ¨μ΄ νμ΅, ν΄μ¦ νλ‘μ° κ΅¬ν
- Web Speech API κΈ°λ° λ¨μ΄ TTS κΈ°λ₯ ꡬν
- BackendΒ·AI μλ² API μ°λ λ° λ°μ΄ν° μ²λ¦¬ λ‘μ§ κ΅¬ν
- Vercel κΈ°λ° CI/CD λ° λ°°ν¬ νκ²½ ꡬμ±
