Skip to content

invisible0000/upbit-autotrader-vscode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Upbit Auto Trading System

DDD ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ํ”„๋กœ๋•์…˜๊ธ‰ ์•”ํ˜ธํ™”ํ ์ž๋™๋งค๋งค ์‹œ์Šคํ…œ

Python 3.13+ PyQt6 DDD Architecture License: MIT

๐ŸŽ‰ DDD ๋ฆฌํŒฉํ† ๋ง 90% ์™„๋ฃŒ! ๊ฒฌ๊ณ ํ•œ ์•„ํ‚คํ…์ฒ˜์™€ ํ˜„๋Œ€์‹ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์œผ๋กœ ๋ฌด์žฅํ•œ ์•ˆ์ •์ ์ธ ์ž๋™๋งค๋งค ์‹œ์Šคํ…œ

๐Ÿ† WebSocket v5 Enterprise๊ธ‰ ์„ฑ๋Šฅ ๋‹ฌ์„ฑ! 189๊ฐœ ์ „์ฒด KRW ๋งˆ์ผ“ ๋™์‹œ ์ฒ˜๋ฆฌ, 82.9 msg/s ์•ˆ์ •์  ์„ฑ๋Šฅ ์ž…์ฆ

โœจ ์ฃผ์š” ํŠน์ง•

  • ๐Ÿ—๏ธ DDD 4๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜: Domain ์ˆœ์ˆ˜์„ฑ + Infrastructure ๋ถ„๋ฆฌ๋กœ ํ™•์žฅ์„ฑ ๊ทน๋Œ€ํ™”
  • ๐Ÿš€ Enterprise๊ธ‰ WebSocket v5: 189๊ฐœ KRW ๋งˆ์ผ“ ๋™์‹œ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ (๐Ÿฅ‡ Excellence ๋“ฑ๊ธ‰)
  • ๐Ÿ“Š 7๊ทœ์น™ ์ „๋žต ์‹œ์Šคํ…œ: RSI, ๋ถˆํƒ€๊ธฐ, ์ต์ ˆ, ํŠธ๋ ˆ์ผ๋ง ์Šคํƒ‘, ๋ฌผํƒ€๊ธฐ, ๊ธ‰๋ฝ/๊ธ‰๋“ฑ ๊ฐ์ง€
  • ๐ŸŽฏ ํŠธ๋ฆฌ๊ฑฐ ๋นŒ๋”: ์ง๊ด€์ ์ธ GUI๋กœ ๋ณต์žกํ•œ ๋งค๋งค ์กฐ๊ฑด ๊ตฌ์„ฑ
  • โšก ์‹ค์‹œ๊ฐ„ ์—ฐ๋™: Upbit API + WebSocket์œผ๋กœ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ๋ฐ˜์‘
  • ๐Ÿ”’ ํ”„๋กœ๋•์…˜ ๋ณด์•ˆ: ์•”ํ˜ธํ™”๋œ API ํ‚ค ๊ด€๋ฆฌ + Dry-Run ๊ธฐ๋ณธ ๋ชจ๋“œ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

1๏ธโƒฃ ํ”„๋กœ์ ํŠธ ํด๋ก  & ํ™˜๊ฒฝ ์„ค์ •

# PowerShell (Windows ๊ถŒ์žฅ) git clone https://github.com/invisible0000/upbit-autotrader-vscode.git cd upbit-autotrader-vscode # ํ˜„๋Œ€์‹ ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ • python -m venv .venv .venv\Scripts\Activate.ps1 # ์˜์กด์„ฑ ์„ค์น˜ (์‹ค์ œ ํ™˜๊ฒฝ ๊ฒ€์ฆ๋จ) pip install -r requirements.txt

2๏ธโƒฃ ์ฆ‰์‹œ ์‹คํ–‰

# GUI ์‹คํ–‰ (์ถ”์ฒœ) - 7๊ทœ์น™ ์ „๋žต ์ฆ‰์‹œ ํ™•์ธ ๊ฐ€๋Šฅ python run_desktop_ui.py

3๏ธโƒฃ API ํ‚ค ์„ค์ • (์„ ํƒ์‚ฌํ•ญ)

  • GUI โ†’ ์„ค์ • โ†’ API ํ‚ค ํƒญ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์„ค์ •
  • ๋˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜: $env:UPBIT_ACCESS_KEY, $env:UPBIT_SECRET_KEY

๐Ÿ—๏ธ DDD ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ

๐Ÿ“ upbit_auto_trading/ โ”œโ”€โ”€ ๐ŸŽจ ui/ # Presentation Layer โ”‚ โ”œโ”€โ”€ desktop/ # PyQt6 GUI โ”‚ โ””โ”€โ”€ common/ # ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ โ”œโ”€โ”€ ๐Ÿ”ง application/ # Application Layer โ”‚ โ”œโ”€โ”€ services/ # ๋น„์ฆˆ๋‹ˆ์Šค ์„œ๋น„์Šค โ”‚ โ””โ”€โ”€ use_cases/ # ์œ ์Šค์ผ€์ด์Šค โ”œโ”€โ”€ ๐Ÿ’Ž domain/ # Domain Layer (์ˆœ์ˆ˜) โ”‚ โ”œโ”€โ”€ entities/ # ๋„๋ฉ”์ธ ์—”ํ‹ฐํ‹ฐ โ”‚ โ”œโ”€โ”€ value_objects/ # ๊ฐ’ ๊ฐ์ฒด โ”‚ โ””โ”€โ”€ services/ # ๋„๋ฉ”์ธ ์„œ๋น„์Šค โ””โ”€โ”€ ๐Ÿ”Œ infrastructure/ # Infrastructure Layer โ”œโ”€โ”€ repositories/ # ๋ฐ์ดํ„ฐ ์ ‘๊ทผ โ”œโ”€โ”€ services/ # ์™ธ๋ถ€ ์„œ๋น„์Šค โ””โ”€โ”€ api/ # API ์—ฐ๋™ ๐Ÿ“ config/ # ์„ค์ • ๊ด€๋ฆฌ ๐Ÿ“ data/ # 3-DB ๋ถ„๋ฆฌ ์„ค๊ณ„ โ”œโ”€โ”€ settings.sqlite3 # ์•ฑ ์„ค์ • โ”œโ”€โ”€ strategies.sqlite3 # ์ „๋žต ๋ฐ์ดํ„ฐ โ””โ”€โ”€ market_data.sqlite3 # ์‹œ์žฅ ๋ฐ์ดํ„ฐ 

๐ŸŽฏ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

๐Ÿ“Š 7๊ทœ์น™ ์ž๋™๋งค๋งค ์ „๋žต

๊ทœ์น™ ์„ค๋ช… ์ƒํƒœ
RSI ๊ณผ๋งค๋„ ์ง„์ž… RSI < 30 ์‹œ ๋งค์ˆ˜ ์ง„์ž… โœ…
์ˆ˜์ต์‹œ ๋ถˆํƒ€๊ธฐ ์ˆ˜์ต๋ฅ  5% ์‹œ ์ถ”๊ฐ€ ๋งค์ˆ˜ โœ…
๊ณ„ํš๋œ ์ต์ ˆ ๋ชฉํ‘œ๊ฐ€ ๋„๋‹ฌ ์‹œ ์ž๋™ ๋งค๋„ โœ…
ํŠธ๋ ˆ์ผ๋ง ์Šคํƒ‘ ์ตœ๊ณ ๊ฐ€ ๋Œ€๋น„ -3% ์‹œ ๋งค๋„ โœ…
ํ•˜๋ฝ์‹œ ๋ฌผํƒ€๊ธฐ -10% ํ•˜๋ฝ ์‹œ ํ‰๋‹จ๊ฐ€ ๋‚ฎ์ถ”๊ธฐ โœ…
๊ธ‰๋ฝ ๊ฐ์ง€ 5๋ถ„๊ฐ„ -15% ๊ธ‰๋ฝ ์‹œ ์†์ ˆ โœ…
๊ธ‰๋“ฑ ๊ฐ์ง€ 5๋ถ„๊ฐ„ +20% ๊ธ‰๋“ฑ ์‹œ ๋ถ€๋ถ„๋งค๋„ โœ…

๐ŸŽจ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค

  • ๐Ÿ–ฅ๏ธ Desktop GUI: PyQt6 ๊ธฐ๋ฐ˜ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ
  • ๐Ÿ“ˆ ์‹ค์‹œ๊ฐ„ ์ฐจํŠธ: matplotlib + ํ•œ๊ธ€ ํฐํŠธ ์ง€์›
  • โš™๏ธ ์„ค์ • ๊ด€๋ฆฌ: ์ง๊ด€์ ์ธ ํƒญ ๊ธฐ๋ฐ˜ UI
  • ๐Ÿ“Š ๋ฐฑํ…Œ์ŠคํŒ…: ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋กœ ์ „๋žต ๊ฒ€์ฆ

๐Ÿ” ๋ณด์•ˆ & ์•ˆ์ „์„ฑ

  • ๐Ÿ›ก๏ธ Dry-Run ๊ธฐ๋ณธ: ์‹ค๊ฑฐ๋ž˜ ์ „ ๋ฐ˜๋“œ์‹œ 2๋‹จ๊ณ„ ํ™•์ธ
  • ๐Ÿ”‘ ์•”ํ˜ธํ™” ์ €์žฅ: API ํ‚ค SQLite ์•”ํ˜ธํ™” ๋ณด๊ด€
  • โš ๏ธ Rate Limit: ์—…๋น„ํŠธ API ํ˜ธ์ถœ ์ œํ•œ ์ค€์ˆ˜
  • ๐Ÿ’ฐ ์ž๊ธˆ ๊ด€๋ฆฌ: ์ด ์ž์‚ฐ ๋Œ€๋น„ ์ตœ๋Œ€ ํˆฌ์ž ๋น„์œจ ์ œํ•œ

๐Ÿ› ๏ธ ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ

  • Python: 3.13+ (ํ˜„์žฌ ํ™˜๊ฒฝ ๊ฒ€์ฆ๋จ)
  • OS: Windows 10/11 (PowerShell ๊ถŒ์žฅ)
  • ๋ฉ”๋ชจ๋ฆฌ: ์ตœ์†Œ 8GB RAM
  • ์ €์žฅ๊ณต๊ฐ„: 2GB ์—ฌ์œ  ๊ณต๊ฐ„
  • ๋„คํŠธ์›Œํฌ: ์•ˆ์ •์ ์ธ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ

๐Ÿ“‹ ์˜์กด์„ฑ ํŒจํ‚ค์ง€

ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ

PyQt6==6.9.1 # GUI ํ”„๋ ˆ์ž„์›Œํฌ matplotlib==3.10.5 # ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ pandas==2.3.1 # ๋ฐ์ดํ„ฐ ๋ถ„์„ numpy==2.3.2 # ์ˆ˜์น˜ ์—ฐ์‚ฐ 

API & ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

aiohttp==3.12.15 # ๋น„๋™๊ธฐ HTTP requests==2.32.4 # HTTP ํด๋ผ์ด์–ธํŠธ SQLAlchemy==2.0.42 # ORM websocket-client==1.6.3 # WebSocket 

๋ณด์•ˆ & ์œ ํ‹ธ๋ฆฌํ‹ฐ

cryptography==45.0.5 # ์•”ํ˜ธํ™” PyJWT==2.10.1 # JWT ํ† ํฐ loguru==0.7.3 # ๋กœ๊น… psutil==7.0.0 # ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง 

๐Ÿงช ํ…Œ์ŠคํŠธ & ๊ฐœ๋ฐœ

ํ…Œ์ŠคํŠธ ์‹คํ–‰

# ์ „์ฒด ํ…Œ์ŠคํŠธ (pytest ๊ธฐ๋ฐ˜) pytest -q # ์ปค๋ฒ„๋ฆฌ์ง€ ํฌํ•จ pytest --cov=upbit_auto_trading # ํŠน์ • ๋„๋ฉ”์ธ ํ…Œ์ŠคํŠธ pytest tests/domain/ -v

๊ฐœ๋ฐœ ๋„๊ตฌ

# ๊ณ„์ธต ์œ„๋ฐ˜ ๊ฒ€์‚ฌ (PowerShell) Get-ChildItem upbit_auto_trading/domain -Recurse -Include *.py | Select-String -Pattern "import sqlite3|import requests|from PyQt6" # ๋กœ๊น… ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • $env:UPBIT_CONSOLE_OUTPUT = "true" $env:UPBIT_LOG_SCOPE = "verbose" # DB ์ƒํƒœ ํ™•์ธ python tools/super_db_table_viewer.py settings python tools/super_db_table_viewer.py strategies python tools/super_db_table_viewer.py market_data

๐Ÿ“š ๋ฌธ์„œ & ๊ฐ€์ด๋“œ

๐Ÿ† ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ

WebSocket v5 Enterprise๊ธ‰ ์‹ค์ฆ ์„ฑ๊ณผ

  • โœ… 189๊ฐœ ์ „์ฒด KRW ๋งˆ์ผ“ ๋™์‹œ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ
  • โœ… 82.9 msg/s ์•ˆ์ •์  ์ง€์† ์ฒ˜๋ฆฌ ์†๋„
  • โœ… 2,488๊ฐœ ๋ฉ”์‹œ์ง€ 30์ดˆ๊ฐ„ ๋ฌด์ค‘๋‹จ ์ฒ˜๋ฆฌ
  • โœ… 100% ์‹ฌ๋ณผ ์ปค๋ฒ„๋ฆฌ์ง€ (189/189) ๋‹ฌ์„ฑ
  • ๐Ÿ† ๐Ÿฅ‡ ENTERPRISE EXCELLENCE ๋“ฑ๊ธ‰ ์ธ์ฆ

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

API ๋ฌธ์„œ

๏ฟฝ ๋ฌธ์ œ ํ•ด๊ฒฐ

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

1. PyQt6 ์„ค์น˜ ์˜ค๋ฅ˜

# Windows์—์„œ PyQt6 ์žฌ์„ค์น˜ pip uninstall PyQt6 PyQt6-Qt6 PyQt6-sip pip install PyQt6==6.9.1 --no-cache-dir

2. aiohttp ๋ชจ๋“ˆ ์—†์Œ

# API ์—ฐ๊ฒฐ ํ•„์ˆ˜ ํŒจํ‚ค์ง€ pip install aiohttp==3.12.15 requests==2.32.4

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” ํ•„์š”

# 3-DB ์ž๋™ ์ƒ์„ฑ (์•ฑ ์‹คํ–‰์‹œ ์ž๋™) python run_desktop_ui.py

4. API ์—ฐ๊ฒฐ ์‹คํŒจ

  • GUI โ†’ ์„ค์ • โ†’ API ํ‚ค์—์„œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ
  • Upbit API ๊ถŒํ•œ: ์ž์‚ฐ์กฐํšŒ, ์ฃผ๋ฌธ์กฐํšŒ, ์ฃผ๋ฌธํ•˜๊ธฐ ํ•„์š”
  • Rate Limit: ๋ถ„๋‹น 100ํšŒ ์ œํ•œ ์ค€์ˆ˜

๋กœ๊ทธ ํ™•์ธ

# ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง Get-Content -Path "logs\application.log" -Wait # ์„ธ์…˜๋ณ„ ๋กœ๊ทธ Get-ChildItem logs\ -Name "session_*.log" | Sort-Object -Descending

๐ŸŽฏ ๋กœ๋“œ๋งต

โœ… ์™„๋ฃŒ (v1.0 - DDD ๋ฆฌํŒฉํ† ๋ง 90%)

  • DDD 4๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ ์™„์„ฑ
  • 7๊ทœ์น™ ์ „๋žต ์‹œ์Šคํ…œ ๊ตฌํ˜„
  • ํ˜„๋Œ€์‹ .venv ํ™˜๊ฒฝ + VS Code ํ†ตํ•ฉ
  • PyQt6 GUI + ์‹ค์‹œ๊ฐ„ ์ฐจํŠธ
  • 3-DB ๋ถ„๋ฆฌ ์„ค๊ณ„
  • ์•”ํ˜ธํ™”๋œ API ํ‚ค ๊ด€๋ฆฌ

๐Ÿšง ์ง„ํ–‰์ค‘ (v1.1 - ๋‚˜๋จธ์ง€ 10%)

  • Domain Services ์™„์„ฑ
  • Repository ํŒจํ„ด ํ™•์žฅ
  • ๋ฐฑํ…Œ์ŠคํŒ… ์—”์ง„ ๊ณ ๋„ํ™”
  • ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์‹œ์Šคํ…œ

๐Ÿ“… ๊ณ„ํš (v2.0)

  • ๋ฉ€ํ‹ฐ ๊ฑฐ๋ž˜์†Œ ์ง€์› (๋ฐ”์ด๋‚ธ์Šค, ๋น—์ธ)
  • ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์˜ˆ์ธก ๋ชจ๋ธ
  • ๋ชจ๋ฐ”์ผ ์•ฑ ์—ฐ๋™
  • ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ ๋ฐฉ๋ฒ•

  1. Fork ์ด ์ €์žฅ์†Œ
  2. Feature ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ: git checkout -b feature/amazing-feature
  3. DDD ์›์น™ ์ค€์ˆ˜ํ•˜์—ฌ ๊ฐœ๋ฐœ
  4. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๋ฐ ํ†ต๊ณผ ํ™•์ธ
  5. ์ปค๋ฐ‹: git commit -m "โœจ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€"
  6. Push: git push origin feature/amazing-feature
  7. Pull Request ์ƒ์„ฑ

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ

  • Domain Layer: ์™ธ๋ถ€ ์˜์กด์„ฑ ๊ธˆ์ง€
  • Infrastructure Layer: ์™ธ๋ถ€ ์„œ๋น„์Šค ์—ฐ๋™๋งŒ
  • Test First: TDD ๋ฐฉ์‹ ๊ฐœ๋ฐœ
  • ํ•œ๊ธ€ ์ปค๋ฐ‹: ๋ช…ํ™•ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์„ค๋ช…

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

MIT License Copyright (c) 2025 invisible0000 ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”. 

๐Ÿ“ž ์ง€์› & ์ปค๋ฎค๋‹ˆํ‹ฐ

  • ๐Ÿ› ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ: GitHub Issues
  • ๐Ÿ’ฌ ํ† ๋ก  & ์งˆ๋ฌธ: GitHub Discussions
  • ๐Ÿ“– ์œ„ํ‚ค: GitHub Wiki
  • ๐Ÿ“ง ์ง์ ‘ ๋ฌธ์˜: ์ด์Šˆ ์ƒ์„ฑ ๋˜๋Š” ํ† ๋ก  ์ฐธ์—ฌ

๐ŸŽ‰ ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ

๐Ÿš€ v1.0-alpha (2025๋…„ 8์›” 17์ผ)

๐ŸŽฏ DDD ์•„ํ‚คํ…์ฒ˜ ๋ฆฌํŒฉํ† ๋ง 90% ์™„๋ฃŒ: ๋ ˆ๊ฑฐ์‹œ ์ •๋ฆฌ ๋ฐ ํ˜„๋Œ€์‹ ํ™˜๊ฒฝ ๊ตฌ์ถ• โœจ ์ฃผ์š” ์„ฑ๊ณผ: - ๐Ÿ’€ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋Œ€์ •๋ฆฌ: business_logic, core, data_layer ๋ชจ๋‘ legacy๋กœ ์ด๋™ - ๐Ÿ—‘๏ธ ๋ฐฑ์—… ํƒญ ์ œ๊ฑฐ: ๋งค๋งค์ „๋žต ๊ด€๋ฆฌ UI ๋‹จ์ˆœํ™” - ๐Ÿ—๏ธ ํ˜„๋Œ€์‹ .venv ํ™˜๊ฒฝ: VS Code ํ†ตํ•ฉ ์™„๋ฃŒ - ๐Ÿ“ฆ requirements.txt ์ •๋ฆฌ: ์‹ค์ œ ํ™˜๊ฒฝ ๊ธฐ๋ฐ˜์œผ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์žฌ๊ตฌ์„ฑ ๐Ÿ”ง ๊ธฐ์ˆ ์  ๊ฐœ์„ : - DDD 4๊ณ„์ธต ์ˆœ์ˆ˜์„ฑ ํ™•๋ณด: Domain ์™ธ๋ถ€ ์˜์กด์„ฑ ์™„์ „ ์ œ๊ฑฐ - Token ํšจ์œจ์„ฑ ํ–ฅ์ƒ: ๋ฏธ์‚ฌ์šฉ ํด๋”๋“ค์„ legacy๋กœ ๊ฒฉ๋ฆฌ - API ์—ฐ๊ฒฐ ์„ฑ๊ณต: ์—…๋น„ํŠธ ์‹ค๊ณ„์ขŒ ์—ฐ๋™ ํ™•์ธ โœ… ๊ฒ€์ฆ ์™„๋ฃŒ: - GUI ์‹œ์Šคํ…œ ์ •์ƒ ์ž‘๋™ (7๊ทœ์น™ ์ „๋žต ํŠธ๋ฆฌ๊ฑฐ ๋นŒ๋” ํฌํ•จ) - ๋ชจ๋“  ํ™”๋ฉด ์ „ํ™˜ ๋ฐ ์„ค์ • ๊ธฐ๋Šฅ ์ •์ƒ - DDD/MVP ํŒจํ„ด ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€ 

โญ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด GitHub Star๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”! โญ

๐Ÿš€ ์•ˆ์ •์ ์ธ DDD ๊ธฐ๋ฐ˜ ์ž๋™๋งค๋งค ์‹œ์Šคํ…œ์œผ๋กœ ์•”ํ˜ธํ™”ํ ํˆฌ์ž์˜ ์ƒˆ๋กœ์šด ๊ฒฝํ—˜์„ ์‹œ์ž‘ํ•˜์„ธ์š”! ๐Ÿš€

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages