Skip to content

DahnTa/DahnTa_FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

32 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ˆ StockSim - ์‹ค์ „ ํˆฌ์ž ์‹œ๋ฎฌ๋ ˆ์ด์…˜

Firebase์™€ ์™ธ๋ถ€ API ์—†์ด ๋กœ์ปฌ ์ƒํƒœ ๊ด€๋ฆฌ๋งŒ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฃผ์‹ ํˆฌ์ž ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐ŸŽฎ 20์ผ๊ฐ„์˜ ํˆฌ์ž ์‹œ๋ฎฌ๋ ˆ์ด์…˜: ์‹ค์ „๊ณผ ๊ฐ™์€ ์ฃผ์‹ ๊ฑฐ๋ž˜ ๊ฒฝํ—˜
  • ๐Ÿ“Š ์‹ค์‹œ๊ฐ„ ์ฐจํŠธ: Recharts๋ฅผ ํ™œ์šฉํ•œ ์•„๋ฆ„๋‹ค์šด ๊ฐ€๊ฒฉ ์ฐจํŠธ
  • ๐Ÿค– AI ํˆฌ์ž ์กฐ์–ธ(์‚ฌ์ „ ์ €์žฅ): ๋ฐฑ์—”๋“œ์— ์ €์žฅ๋œ Gemini ๋ถ„์„ 5์ข… ์ œ๊ณต
    • ํ†ตํ•ฉ ๋ถ„์„ (Gemini)
    • ๋‰ด์Šค ๋ถ„์„ (Gemini)
    • Reddit ๋ถ„์„ (Gemini)
    • ์žฌ๋ฌด์ œํ‘œ ๋ถ„์„ (Gemini)
    • ๊ฑฐ์‹œ๊ฒฝ์ œ ๋ถ„์„ (Gemini)
  • ๐Ÿ’ผ ํฌํŠธํด๋ฆฌ์˜ค ๊ด€๋ฆฌ: ๋ณด์œ  ์ฃผ์‹, ๊ฑฐ๋ž˜ ๋‚ด์—ญ, ๊ด€์‹ฌ ์ข…๋ชฉ ๊ด€๋ฆฌ
  • ๐ŸŽจ ๋‹คํฌ/๋ผ์ดํŠธ ๋ชจ๋“œ: ํ…Œ๋งˆ ์ „ํ™˜ ์ง€์›
  • ๐Ÿ“ฑ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ: ๋ชจ๋ฐ”์ผ, ํƒœ๋ธ”๋ฆฟ, ๋ฐ์Šคํฌํ†ฑ ๋ชจ๋‘ ์ง€์›

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 18.x ์ด์ƒ
  • npm ๋˜๋Š” yarn

์„ค์น˜

# ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd stock-sim-local

# ์˜์กด์„ฑ ์„ค์น˜
npm install

์‹คํ–‰

# ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘
npm run dev

๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:3000 ์ ‘์†

๋นŒ๋“œ

# ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ
npm run build

# ๋นŒ๋“œ ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
npm run preview

๐ŸŽฎ ๊ฒŒ์ž„ ๋ฐฉ๋ฒ•

  1. ๋กœ๊ทธ์ธ: ๋ฐ๋ชจ ๊ณ„์ • (ID: 1111, PW: 1111)์œผ๋กœ ๋กœ๊ทธ์ธ
  2. ์ฃผ์‹ ์„ ํƒ: ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์›ํ•˜๋Š” ์ฃผ์‹ ํด๋ฆญ
  3. AI ๋ถ„์„: 3๊ฐ€์ง€ AI ์„ฑ๊ฒฉ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ํˆฌ์ž ์กฐ์–ธ ๋ฐ›๊ธฐ
  4. ๋งค์ˆ˜/๋งค๋„: ์ฃผ๋ฌธ ํŒจ๋„์—์„œ ์ˆ˜๋Ÿ‰ ์ž…๋ ฅ ํ›„ ๊ฑฐ๋ž˜
  5. ๋‹ค์Œ ๋‚  ์ง„ํ–‰: ํ•˜๋ฃจ๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ์‹œ์žฅ ๋ณ€ํ™” ๊ด€์ฐฐ
  6. 20์ผ ์™„๋ฃŒ: ์ตœ์ข… ์ˆ˜์ต๋ฅ  ํ™•์ธ ๋ฐ ์ƒˆ ๊ฒŒ์ž„ ์‹œ์ž‘

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

stock-sim-local/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/          # React ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ AuthScreen.jsx   # ๋กœ๊ทธ์ธ ํ™”๋ฉด
โ”‚   โ”‚   โ”œโ”€โ”€ Dashboard.jsx    # ์‹œ์žฅ ๋Œ€์‹œ๋ณด๋“œ
โ”‚   โ”‚   โ”œโ”€โ”€ StockDetail.jsx  # ์ฃผ์‹ ์ƒ์„ธ ํŽ˜์ด์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ MyPage.jsx        # ๋งˆ์ด ํŽ˜์ด์ง€
โ”‚   โ”‚   โ”œโ”€โ”€ Layout.jsx        # ๋ ˆ์ด์•„์›ƒ
โ”‚   โ”‚   โ”œโ”€โ”€ Header.jsx        # ํ—ค๋”
โ”‚   โ”‚   โ””โ”€โ”€ Modals.jsx        # ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ๋“ค
โ”‚   โ”œโ”€โ”€ utils/               # ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ marketData.js    # ์‹œ์žฅ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
โ”‚   โ”‚   โ”œโ”€โ”€ aiTemplates.js   # AI ๋ถ„์„ ํ…œํ”Œ๋ฆฟ
โ”‚   โ”‚   โ”œโ”€โ”€ aiPersonas.jsx   # AI ์„ฑ๊ฒฉ ์ •์˜
โ”‚   โ”‚   โ”œโ”€โ”€ formatters.js    # ํฌ๋งคํ„ฐ ํ•จ์ˆ˜
โ”‚   โ”‚   โ””โ”€โ”€ storage.js       # localStorage ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ App.jsx              # ๋ฉ”์ธ ์•ฑ
โ”‚   โ”œโ”€โ”€ main.jsx             # ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ
โ”‚   โ””โ”€โ”€ index.css            # ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ
โ”œโ”€โ”€ index.html
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ vite.config.js
โ””โ”€โ”€ tailwind.config.js

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

  • React 18: UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Vite: ๋นŒ๋“œ ๋„๊ตฌ
  • Tailwind CSS: ์Šคํƒ€์ผ๋ง
  • Recharts: ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Lucide React: ์•„์ด์ฝ˜
  • LocalStorage: ๋ฐ์ดํ„ฐ ์ €์žฅ

๐Ÿ”„ ์›๋ณธ๊ณผ์˜ ์ฐจ์ด์ 

์›๋ณธ gemini_code(origin).jsx์™€ ๋น„๊ตํ•˜์—ฌ ๋‹ค์Œ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

  • โŒ Firebase ์ œ๊ฑฐ: ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ localStorage์— ์ €์žฅ
  • โŒ Gemini API ์ œ๊ฑฐ: AI ๋ถ„์„๊ณผ ๋‰ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜๋œ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋Œ€์ฒด
  • โœ… ๋กœ์ปฌ ์ƒํƒœ ๊ด€๋ฆฌ: React useState + localStorage
  • โœ… ๋””์ž์ธ ๋™์ผ: ์›๋ณธ๊ณผ ์™„์ „ํžˆ ๋™์ผํ•œ UI/UX ์œ ์ง€
  • โœ… ๋ชจ๋“  ๊ธฐ๋Šฅ ์œ ์ง€: ๊ฒŒ์ž„์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๋กœ์ปฌ์—์„œ ๋™์ž‘

๐Ÿ“ ๋ฐ์ดํ„ฐ ์ €์žฅ

๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ localStorage์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:

  • stocksim_game_state: ๊ฒŒ์ž„ ์ƒํƒœ (ํฌํŠธํด๋ฆฌ์˜ค, ๊ฑฐ๋ž˜๋‚ด์—ญ ๋“ฑ)
  • stocksim_auth: ๋กœ๊ทธ์ธ ์ƒํƒœ

๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ localStorage๋ฅผ ํด๋ฆฌ์–ดํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ์•„์›ƒํ•˜์„ธ์š”.

๐ŸŽฏ ๊ฐœ๋ฐœ ์ฐธ๊ณ ์‚ฌํ•ญ

  • ์‹œ์žฅ ๋ฐ์ดํ„ฐ: Seeded Random์œผ๋กœ ์ƒ์„ฑ๋œ 365์ผ๊ฐ„์˜ ์ฃผ๊ฐ€ ๋ฐ์ดํ„ฐ
  • AI ๋ถ„์„: ์‹ค์‹œ๊ฐ„ ์ƒ์„ฑ์ด ์•„๋‹Œ, ๋ฐฑ์—”๋“œ์— ์‚ฌ์ „ ์ €์žฅ๋œ Gemini ๊ฒฐ๊ณผ๋ฅผ ๋…ธ์ถœ
  • ๋‰ด์Šค ์ƒ์„ฑ: ์ตœ๋Œ€ ๋ณ€๋™ํญ์„ ๋ณด์ธ ์ข…๋ชฉ ๊ธฐ๋ฐ˜์œผ๋กœ ํ—ค๋“œ๋ผ์ธ ์ƒ์„ฑ
  • ํ…Œ๋งˆ: isDarkMode state๋กœ ์ „์—ญ ํ…Œ๋งˆ ๊ด€๋ฆฌ

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ต์œก ๋ชฉ์ ์œผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿค ๊ธฐ์—ฌ

๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋‚˜ ๊ธฐ๋Šฅ ์ œ์•ˆ์€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!


์ฆ๊ฑฐ์šด ํˆฌ์ž ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋˜์„ธ์š”! ๐Ÿ“ˆ๐Ÿ’ฐ

About

๐ŸŽฎ ์ฃผ์‹ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์›น ๊ฒŒ์ž„!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages