Skip to content

Latest commit

ย 

History

104 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NoteFlow Frontend

Frontend-React Build-Vite App-Shell-Electron Router Editor ๊ธฐ๊ฐ„

๋งˆํฌ๋‹ค์šด ํŽธ์ง‘, ์Œ์„ฑ ์ž…๋ ฅ(STT), OCR, ํŒŒ์ผ ์—…๋กœ๋“œ, ์†Œ์…œ ๋กœ๊ทธ์ธ(๊ตฌ๊ธ€ยท๋„ค์ด๋ฒ„ยท์นด์นด์˜ค)์„ ๊ฐ–์ถ˜ ๋…ธํŠธ/์ง€์‹ ๊ด€๋ฆฌ์šฉ ํ”„๋ก ํŠธ์—”๋“œ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํŽธ์˜๋ฅผ ์œ„ํ•ด Vite(์›น)์™€ Electron(๋ฐ์Šคํฌํ†ฑ ์…ธ)์„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๋ชฉ์ฐจ


๊ธฐ์ˆ  ์Šคํƒ

React Vite Electron

React Router Toast UI Editor Milkdown Tiptap

Tailwind CSS Google OAuth Naver/Kakao OAuth


ํ™”๋ฉด

๊ฐ„ํŽธ ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ๋ฌธ์„œ ์ œ๊ณต ํ™”๋ฉด
ํ•™์Šต ํ†ต๊ณ„ ๋ฐ ๋ถ„์„ ์ž์œ ๋กœ์šด ํ…Œ๋งˆ ์„ ํƒ ๊ธฐ๋Šฅ
Image to Text ๊ธฐ๋Šฅ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋…น์Œ ๋ฐ ๋ณ€ํ™˜
์š”์•ฝ ๊ธฐ๋Šฅ ์˜ˆ์ƒ ๋ฌธ์ œ ์ž๋™ ์ƒ์„ฑ


ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • ์ธ์ฆ/์˜จ๋ณด๋”ฉ: ์•„์ด๋””ยท๋น„๋ฒˆ ๋กœ๊ทธ์ธ, ์†Œ์…œ ๋กœ๊ทธ์ธ(๊ตฌ๊ธ€/๋„ค์ด๋ฒ„/์นด์นด์˜ค), ํšŒ์›๊ฐ€์ž… ๋ผ์šฐํŠธ ์ œ๊ณต.
  • ๋…ธํŠธ ๋ฆฌ์ŠคํŠธ: ํด๋”๋ณ„/์ „์ฒด ๋ณด๊ธฐ, ๊ฒ€์ƒ‰ยทํ•„ํ„ฐ, ์ฆ๊ฒจ์ฐพ๊ธฐ ํ† ๊ธ€, ์ตœ๊ทผ/์ฆ๊ฒจ์ฐพ๊ธฐ ํƒญ.
  • ์—๋””ํ„ฐ: Toast UI/Milkdown/Tiptap ์กฐํ•ฉ์œผ๋กœ ๋งˆํฌ๋‹ค์šด ํŽธ์ง‘ยท๋ฏธ๋ฆฌ๋ณด๊ธฐยทํ•˜์ด๋ผ์ดํŠธ ์ง€์›.
  • ํŒŒ์ผ ์—…๋กœ๋“œ: ์ด๋ฏธ์ง€/ํŒŒ์ผ ๋“œ๋ž˜๊ทธยท์„ ํƒ ์—…๋กœ๋“œ โ†’ ์ž๋™ ๋…ธํŠธ ์ƒ์„ฑ ๋ฐ ๋ฏธ๋””์–ด ์ž„๋ฒ ๋“œ.
  • ์Œ์„ฑ ์ž…๋ ฅ(STT): Web Speech API ๊ธฐ๋ฐ˜ ํ•œ๊ตญ์–ด ์—ฐ์† ์ž…๋ ฅ โ†’ ํŽธ์ง‘๊ธฐ์— ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜.
  • OCR: ์ด๋ฏธ์ง€ โ†’ ํ…์ŠคํŠธ ๋ณ€ํ™˜(API ์—ฐ๋™) ํ›„ ์ƒˆ ๋…ธํŠธ ์ƒ์„ฑ ๋ฐ ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ.
  • ์š”์•ฝ/๋ฌธ์ œ์ƒ์„ฑ: ๋ฐฑ์—”๋“œ ์—ฐ๋™์œผ๋กœ ๊ธด ๋ฌธ์„œ ์š”์•ฝยท์˜ˆ์ƒ๋ฌธ์ œ ์ž๋™ ์ƒ์„ฑ ํ›„ ๋…ธํŠธ ์ €์žฅ.
  • ๋ ˆ์ด์•„์›ƒ: Sidebar/Topbar/Bottombar, ๋‹จ์ถ• ์•ก์…˜(ActionDock), ํ† ์ŠคํŠธ/์ƒํƒœํ‘œ์‹œ.

์•„ํ‚คํ…์ฒ˜

flowchart LR
  A[React + Vite]
  B[Backend API]
  G[Google OAuth]
  N[Naver OAuth]
  K[Kakao OAuth]
  E[Electron Shell]

  A --> B
  A -. OAuth .-> G
  A -. OAuth .-> N
  A -. OAuth .-> K
  E --> A
Loading

๋ผ์šฐํŒ…

  • ๊ณต๊ฐœ: /(๋กœ๊ทธ์ธ) ยท /signup ยท /home ยท /pricing ยท /docs
  • ์†Œ์…œ ์ฝœ๋ฐฑ: /naver/callback ยท /kakao/callback
  • ์•ฑ: /main ยท /main/:folderId ยท /notes/new ยท /notes/:id ยท /stt
  • ์ธ์ฆ ๊ฐ€๋“œ: ํ† ํฐ ๋ฏธ๋ณด์œ  ์‹œ ๋ณดํ˜ธ ๋ผ์šฐํŠธ ์ ‘๊ทผ ์‹œ / ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

๋กœ์ปฌ ์‹คํ–‰

1) ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 18+

2) ์„ค์น˜

# 1) Electron ์…ธ + ํˆด ์„ค์น˜ (๋ฃจํŠธ)
cd Frontend
npm i

# 2) React ์•ฑ ์„ค์น˜
cd react-app
npm i

3) ๊ฐœ๋ฐœ ์‹คํ–‰

# Electron ์…ธ๊ณผ Vite dev ์„œ๋ฒ„ ๋™์‹œ ์‹คํ–‰
cd Frontend
npm run dev

# ๋˜๋Š”: ์›น๋งŒ ์‹คํ–‰
cd Frontend/react-app
npm run dev  # default: http://localhost:5174

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

Frontend/react-app/.env

VITE_API_BASE_URL=http://localhost:8000
VITE_GOOGLE_CLIENT_ID=YOUR_GOOGLE_OAUTH_CLIENT_ID
VITE_NAVER_CLIENT_ID=YOUR_NAVER_CLIENT_ID
VITE_NAVER_REDIRECT_URI=http://localhost:5174/naver/callback
VITE_KAKAO_CLIENT_ID=YOUR_KAKAO_REST_API_KEY

ํ•„์ˆ˜ ํฌ์ธํŠธ

  • JWT ์ €์žฅ: localStorage.access_token์— ์ €์žฅ/์‚ฌ์šฉ
  • ๊ฐœ๋ฐœ ํฌํŠธ: Vite 5174 ยท Electron์ด ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ๋กœ๋“œ

ํด๋” ๊ตฌ์กฐ

Frontend/
โ”œโ”€โ”€ main.js                  # Electron ์ง„์ž… (๊ฐœ๋ฐœ ์…ธ ยท http://localhost:5174 ๋กœ๋“œ)
โ”œโ”€โ”€ package.json             # dev ์Šคํฌ๋ฆฝํŠธ(concurrently, wait-on, electron)
โ”œโ”€โ”€ preload.js               # (์˜ต์…˜) ํ”„๋ฆฌ๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ react-app/               # Vite ๊ธฐ๋ฐ˜ React ์•ฑ
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ App.tsx         # ๋ผ์šฐํŒ… ์—”ํŠธ๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ main.tsx        # ์•ฑ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ(Google OAuth Provider)
โ”‚   โ”‚   โ”œโ”€โ”€ components/     # ๋ ˆ์ด์•„์›ƒ/ํˆด๋ฐ”/์‚ฌ์ด๋“œ๋ฐ”/ํŽธ์ง‘๊ธฐ/๋ทฐ์–ด ๋“ฑ UI
โ”‚   โ”‚   โ”œโ”€โ”€ screen/         # Login/Signup/Main/NoteDetail/NewNote/STT/Docs ๋“ฑ
โ”‚   โ”‚   โ”œโ”€โ”€ css/            # ํ™”๋ฉดยท์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ ๋ฐ ํ† ํฐ
โ”‚   โ”‚   โ””โ”€โ”€ utils/          # fetch ๋กœ๊ฑฐ, ์œ ํ‹ธ
โ”‚   โ””โ”€โ”€ package.json        # Vite, React, ์—๋””ํ„ฐ ๊ด€๋ จ ์˜์กด์„ฑ
โ””โ”€โ”€ utils/
    โ””โ”€โ”€ qg_service.py       # (๊ฐœ๋ฐœ ๋ณด์กฐ) ๋ฌธ์ œ ์ƒ์„ฑ API ์˜ˆ์‹œ ์Šคํฌ๋ฆฝํŠธ

API ํ†ต์‹  ๊ทœ์•ฝ

  • ๋ฒ ์ด์Šค URL: VITE_API_BASE_URL
  • ์ธ์ฆ: Authorization: Bearer <access_token> ํ—ค๋” ์‚ฌ์šฉ
  • ์ฃผ์š” ์—”๋“œํฌ์ธํŠธ(์˜ˆ)
    • ์ธ์ฆ: POST /api/v1/login, POST /api/v1/login/google, POST /api/v1/register
    • ๋…ธํŠธ: GET/POST/PUT/DELETE /api/v1/notes, POST /api/v1/notes/{id}/favorite
    • ์š”์•ฝ: POST /api/v1/notes/{id}/summarize_sync?longdoc=true
    • ํŒŒ์ผ: POST /api/v1/files/upload, POST /api/v1/files/ocr?langs=kor+eng&max_pages=50

์ฃผ์˜

  • ๋ณธ ํ”„๋ก ํŠธ๋Š” ๋ฐฑ์—”๋“œ API์™€ ์—ฐ๋™๋˜์–ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. VITE_API_BASE_URL ๋ฐ OAuth ํด๋ผ์ด์–ธํŠธ ์„ค์ •์ด ์—†์œผ๋ฉด ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • Electron์€ ๊ฐœ๋ฐœ ์…ธ ์šฉ๋„๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ํŒจํ‚ค์ง• ์„ค์ •์€ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages