Skip to content

soominn/muhanmantle-front

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

17 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ ๋ฌดํ•œ๋งจํ‹€ ํ”„๋ก ํŠธ์—”๋“œ (Muhanmantle Front)

ํ•œ๊ตญ์–ด ๋‹จ์–ด ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์‹ฑ๊ธ€ ํ”Œ๋ ˆ์ด ๊ฒŒ์ž„ - ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

React ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ SPA(Single Page Application)์ด๋ฉฐ,
FastText ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ API์™€ ํ†ต์‹ ํ•˜์—ฌ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๋ฐ ์‹œ๊ฐํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ์œ ์ € ์ธํ„ฐ๋ž™์…˜์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์ง์ ‘ ๊ตฌ์ถ•ํ•œ Nginx ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ •์  ํŒŒ์ผ์„ ์„œ๋น™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”— ์„œ๋น„์Šค ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง  ๋ฐฑ์—”๋“œ GitHub


๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ๋‹จ์–ด ์œ ์‚ฌ๋„ ๊ฒŒ์ž„์˜ UI์™€ ์ธํ„ฐ๋ž™์…˜์„ ๋‹ด๋‹นํ•˜๋Š” React ๊ธฐ๋ฐ˜ ์›น ํ”„๋ก ํŠธ์—”๋“œ
  • REST API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ 
  • ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ… ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•œ SPA ๊ตฌ์กฐ ๊ตฌํ˜„
  • ์ž์ฒด Nginx ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด ์ •์  ํŒŒ์ผ ๋ฐฐํฌ ๋ฐ API ์š”์ฒญ ํ”„๋ก์‹œ ์ฒ˜๋ฆฌ

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
์–ธ์–ด TypeScript, HTML, CSS
ํ”„๋ ˆ์ž„์›Œํฌ React 19 + Vite 7
์ƒํƒœ ๊ด€๋ฆฌ React hooks (useGameState)
์Šคํƒ€์ผ๋ง Tailwind CSS 4
๋ฐฐํฌ ๋ฐฉ์‹ Nginx + dist/ ์ •์  ์„œ๋น™
API ํ†ต์‹  fetch (/api/game)
ํ…Œ์ŠคํŠธ Vitest

๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ

  • โŒจ๏ธ ๋‹จ์–ด ์ž…๋ ฅ ๋ฐ ์œ ์‚ฌ๋„ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™”

    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋‹จ์–ด์— ๋Œ€ํ•ด ๋ฐฑ์—”๋“œ API๋กœ ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ ์š”์ฒญ
    • ๊ฒฐ๊ณผ๊ฐ’์„ ํผ์„ผํŠธ ๋ฐ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ์‹œ๊ฐํ™”
  • ๐Ÿ“˜ ๊ฒŒ์ž„ ํ๋ฆ„ ์ฒ˜๋ฆฌ

    • ๊ฒŒ์ž„ ์‹œ์ž‘ โ†’ ์ž…๋ ฅ โ†’ ๊ฒฐ๊ณผ ์ถœ๋ ฅ โ†’ ๋ฆฌ์…‹ ๋“ฑ์˜ UX ํ๋ฆ„์„ React๋กœ ๊ตฌ์„ฑ
  • ๐Ÿ”„ API ์—ฐ๋™ ๋ฐ ์—๋Ÿฌ ๋Œ€์‘

    • fetch ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ REST API ์š”์ฒญ ์ฒ˜๋ฆฌ
    • ์‘๋‹ต ์ƒํƒœ์— ๋”ฐ๋ฅธ ์กฐ๊ฑด ๋ถ„๊ธฐ ๋ฐ ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋กœ์ง ๊ตฌํ˜„
    • ๋”ฉ ์ค‘ ์ƒํƒœ ํ‘œ์‹œ, ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
  • ๐Ÿ“ฑ ๋ฐ˜์‘ํ˜• ์„ค๊ณ„

    • ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ”Œ๋ ˆ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก CSS ์„ค๊ณ„

๐Ÿ–ฅ๏ธ ๋ฐฐํฌ ํ™˜๊ฒฝ

  • ๋กœ์ปฌ ๋นŒ๋“œ ํ›„ Nginx๋กœ ์ •์  ํŒŒ์ผ ์„œ๋น™
    • npm run build ๋ช…๋ น์œผ๋กœ dist/ ํด๋” ์ƒ์„ฑ ํ›„, Nginx์—์„œ ์„œ๋น™
  • ํ”„๋ก ํŠธ์™€ ๋ฐฑ์—”๋“œ ํ†ตํ•ฉ ๋ฐฐํฌ ๊ตฌ์„ฑ
    • ์ •์  ํŒŒ์ผ์€ Nginx์˜ location / ์„ค์ •์„ ํ†ตํ•ด ๋ฐฐํฌ๋จ
    • API ์š”์ฒญ์€ location /api ์„ค์ •์„ ํ†ตํ•ด ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ํ”„๋ก์‹œ ์ฒ˜๋ฆฌ
  • ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ: muhanmantle.com ๋„๋ฉ”์ธ Route 53 ์—ฐ๋™
  • API ์ฃผ์†Œ: public/config.json ({}์ด๋ฉด ๊ฐ™์€ ๋„๋ฉ”์ธ /api ํ”„๋ก์‹œ ์‚ฌ์šฉ)

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

cd muhanmantle-front
npm install
npm run dev          # http://localhost:5173
npm test             # Vitest
npm run build        # dist/ ์ƒ์„ฑ

๋ฐฑ์—”๋“œ๋ฅผ http://127.0.0.1:8000์—์„œ ๋„์šด ๋’ค, Vite๊ฐ€ /api๋ฅผ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค (vite.config.ts).


๐Ÿงฉ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
CORS ์˜ค๋ฅ˜ ๋ฐฑ์—”๋“œ CORS_ORIGINS์— ํ”„๋ก ํŠธ origin ์ถ”๊ฐ€
API ์—ฐ๊ฒฐ ์‹คํŒจ ๋ฐฑ์—”๋“œ ๊ธฐ๋™ ์—ฌ๋ถ€, config.json์˜ BACKEND_URL ํ™•์ธ

๐Ÿ“‚ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

muhanmantle-front/
โ”œโ”€โ”€ index.html               # Vite ์—”ํŠธ๋ฆฌ HTML
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ favicon.ico
โ”‚   โ”œโ”€โ”€ config.json          # (์„ ํƒ) BACKEND_URL
โ”‚   โ”œโ”€โ”€ manifest.json
โ”‚   โ””โ”€โ”€ robots.txt
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ api/                 # config, gameSession
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ hooks/               # useGameState
โ”‚   โ”œโ”€โ”€ types/
โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”œโ”€โ”€ App.tsx
โ”‚   โ”œโ”€โ”€ main.tsx
โ”‚   โ””โ”€โ”€ main.css
โ”œโ”€โ”€ vite.config.ts
โ”œโ”€โ”€ tsconfig.json
โ””โ”€โ”€ package.json

๐Ÿ“ˆ ํ–ฅํ›„ ๊ฐœ์„  ์˜ˆ์ •

  • ๋กœ๋”ฉ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ UX ์ „ํ™˜ ๊ฐœ์„ 
  • ์ž…๋ ฅ ๊ธฐ๋ก ํžˆ์Šคํ† ๋ฆฌ UI ์ถ”๊ฐ€
  • ๋ชจ๋ฐ”์ผ ํ„ฐ์น˜ ์ธํ„ฐ๋ž™์…˜ ์ตœ์ ํ™”

๐Ÿ™‹โ€โ™€๏ธ ๊ฐœ๋ฐœ์ž ์ •๋ณด

๐ŸŽจ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ: ์กฐ์ˆ˜๋ฏผ (Soomin Cho)

About

๐ŸŽฎ ํ•œ๊ตญ์–ด ๋‹จ์–ด ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์‹ฑ๊ธ€ ํ”Œ๋ ˆ์ด ๊ฒŒ์ž„ '๋ฌดํ•œ๋งจํ‹€'์˜ ํ”„๋ก ํŠธ์—”๋“œ ์ €์žฅ์†Œ | React 19, Vite 7, TypeScript, Tailwind CSS 4, Nginx

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors