Skip to content

Latest commit

ย 

History

History
57 lines (47 loc) ยท 2.51 KB

File metadata and controls

57 lines (47 loc) ยท 2.51 KB

EverTale_FE

๐Ÿ… ์บก์Šคํ†ค ๋””์ž์ธ ๊ฒฝ์ง„ ๋Œ€ํšŒ ์€์ƒ ์ˆ˜์ƒ (2025.12) ๐Ÿ…
๐Ÿ… ์กธ์—… ํ”„๋กœ์ ํŠธ ํฌ์Šคํ„ฐ ์„ธ์…˜ ์šฐ์ˆ˜์ƒ ์ˆ˜์ƒ (2025.12) ๐Ÿ…

๐Ÿ’ป ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

EverTale Frontend๋Š” ์•„์ด-๋ถ€๋ชจ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋™ํ™”๋ฅผ ์ œ๊ณตํ•˜๋Š” Web App์˜ ์‚ฌ์šฉ์ž ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. remix ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์„ RESTful API ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€๊ณ , Route ๊ธฐ๋ฐ˜ UI ์„ค๊ณ„, ์„œ๋ฒ„ ๋ฆฌ๋‹ค์ด๋ ‰์…˜, loader/action์„ ํ†ตํ•ด ๋ฐฑ์—”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.


๐ŸŒ Frontend ๊ธฐ์ˆ  ์Šคํƒ

๋ถ„๋ฅ˜ ์‚ฌ์šฉ ๊ธฐ์ˆ  ์„ค๋ช…
Framework Remix ์„œ๋ฒ„ ์ค‘์‹ฌ ๋ Œ๋”๋ง(SSR) ๋ฐ ๋ผ์šฐํŒ… ๊ธฐ๋ฐ˜ UI ํ”„๋ ˆ์ž„์›Œํฌ
UI React ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜ ์‚ฌ์šฉ์ž ํ™”๋ฉด ๊ตฌ์„ฑ
Build Tool Vite ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฐ ๋นŒ๋“œ ์ตœ์ ํ™”
Canvas HTML5 Canvas ์‚ฌ์šฉ์ž ๊ทธ๋ฆผ ์ฒ˜๋ฆฌ ๋ฐ YOLO ๊ฒฐ๊ณผ(๋ฐ”์šด๋”ฉ ๋ฐ•์Šค) ์˜ค๋ฒ„๋ ˆ์ด
Detection DOM API ํด๋ฆญ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€ ๋‚ด ์ƒ๋Œ€ ์ขŒํ‘œ๋ฅผ ๊ณ„์‚ฐ
API Strategy REST API HTTP ๊ธฐ๋ฐ˜ JSON ์š”์ฒญยท์‘๋‹ต์„ ํ†ตํ•œ ์„œ๋ฒ„์™€์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹ 

๐Ÿ“ Directory ๊ตฌ์กฐ (Frontend)

app/
 โ”œโ”€ routes.js
 โ”œโ”€ components/
 โ”œโ”€ styles/
 โ”œโ”€ api/
 โ”œโ”€ auth/
 โ””โ”€ (๊ฐ ํŽ˜์ด์ง€๋ณ„ ํ™”๋ฉด ํŒŒ์ผ)
  • routes: Remix ๋ผ์šฐํŒ… ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฃผ์†Œ ๊ธฐ๋ฐ˜์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋ฉฐ, loader/action์„ ํ†ตํ•ด ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ.
  • components: React UI ์ปดํฌ๋„ŒํŠธ ์ง‘ํ•ฉ์ด๋ฉฐ, ๊ณตํ†ต UI ์š”์†Œ ๋˜๋Š” ์กฐํ•ฉ ์š”์†Œ๋“ค์„ ํฌํ•จ.
  • Styles: ์ „์—ญ ์Šคํƒ€์ผ ๋ฐ UI ์Šคํƒ€์ผ ๊ด€๋ จ css ํŒŒ์ผ๋“ค์ด ์œ„์น˜.
  • api: ๋ฐฑ์—”๋“œ RESTful API์™€ ํ†ต์‹ ํ•˜๋Š” fetch wrapper ๋˜๋Š” API abstraction ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋จ. HTTP ํ†ต์‹  ๋กœ์ง์„ ์ •๋ฆฌํ•ด์„œ route ๋˜๋Š” component์—์„œ ํ˜ธ์ถœ.
  • auth: ํ”„๋ก ํŠธ์—์„œ ์ธ์ฆ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋ฉฐ, auth.js๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•จ. ํ† ํฐ์„ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋ฉฐ, Remix session๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€.
  • ๊ฐ ํŽ˜์ด์ง€๋ณ„ ํ™”๋ฉด: URL ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ๋ Œ๋”๋ง๋˜๋Š” Remix Route ํŽ˜์ด์ง€์ด๋ฉฐ, ํŽ˜์ด์ง€๋ณ„ loader/action์„ ํ†ตํ•ด ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ.

API ์—ฐ๋™ ๋ฐฉ์‹

  • Remix loader โ†’ GET
  • Remix action โ†’ POST
  • ํ† ํฐ ํฌํ•จ Authorization Header
  • RESTful endpoint ์‚ฌ์šฉ
fetch('/api/story', {
 method: 'GET',
 headers: {
   Authorization: `Bearer ${token}`
 }
})