Shioaji Pro
에이전트를 위한 거래 터미널: 코딩 에이전트가 전부 구축, UI 100% 오픈소스, 데스크톱에 AI 에이전트와 전문 주문 패널 내장
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
주식 정보 사이트 프로젝트
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
실시간 주식 시세·시장 지표·포트폴리오 관리 웹 서비스. Spring Boot(Java) + Python(FastAPI) + Next.js(React) 3-tier 구조로 기획부터 개발·배포·운영까지 개인이 전담한 프로젝트입니다.README 전문 보기 ↗
실시간 주식 시세·시장 지표·포트폴리오 관리 웹 서비스. Spring Boot(Java) + Python(FastAPI) + Next.js(React) 3-tier 구조로 기획부터 개발·배포·운영까지 개인이 전담한 프로젝트입니다.
🔗 Live: https://marketboard.duckdns.org
/overview)도 제공Finnhub WS ──▶ collector (FastAPI) ──▶ Redis (Pub/Sub, 캐시) ──▶ marketboardBackend (Spring Boot) ──▶ frontend (Next.js)
│ │
└────────────────────▶ MySQL ◀───────────────────┘
frontend/) — Next.js 16 / React 19, Astryx 디자인 시스템, STOMP over SockJS로 실시간 시세 구독, lightweight-charts로 캔들/지표 차트marketboardBackend/) — Spring Boot 4 / Java 17, JWT 인증, JPA + MySQL, Redis 캐싱, STOMP WebSocket, Flyway 마이그레이션, Prometheus 메트릭 노출collector/) — Python / FastAPI, Finnhub WebSocket 클라이언트, yfinance 기반 REST 폴백·백필·재무/시장지표 프록시, S&P500 유니버스 배치rasp4)에 self-hosted GitHub Actions 러너로 push 시 자동 빌드·배포, nginx + Let's Encrypt + DuckDNS로 HTTPS 공개| 영역 | 스택 |
|---|---|
| Backend | Java 17, Spring Boot 4.1, Spring Security, Spring Data JPA, Spring WebSocket(STOMP), Flyway, JJWT, Bucket4j, Caffeine, MySQL, Redis |
| Collector | Python 3.12, FastAPI, yfinance, websockets, pandas, BeautifulSoup, Redis, PyMySQL |
| Frontend | Next.js 16, React 19, TypeScript, Astryx 디자인 시스템, @stomp/stompjs, lightweight-charts |
| Infra/Ops | Docker Compose, nginx, Let's Encrypt/Certbot, DuckDNS, GitHub Actions(self-hosted runner), Prometheus, Grafana |
marketboard/
├── marketboardBackend/ # Spring Boot API + WebSocket 서버 (Java 17)
├── collector/ # 시세 수집·시장데이터 프록시 (Python/FastAPI)
├── frontend/ # 웹 클라이언트 (Next.js/React)
├── nginx/ # 리버스 프록시·TLS 설정
├── observability/ # Prometheus/Grafana 설정
├── docker-compose.yml # 배포 스택 정의
└── .env.example # 배포용 환경변수 템플릿
운영용 docker-compose.yml과 분리된 compose.local.yml을 사용합니다. 로컬 스택은 별도 프로젝트명, 네트워크, 볼륨, 컨테이너를 사용하며 Redis도 marketboard-local-redis(기본 호스트 포트 16380)로 완전히 분리됩니다.
cp .env.local.example .env.local
# .env.local의 FINNHUB_API_KEY 설정
docker compose --env-file .env.local -f compose.local.yml up -d --build
로컬 접속 주소는 frontend http://localhost:13100, backend http://localhost:18081, collector http://localhost:18001입니다. MySQL은 13308, Redis는 16380으로 노출됩니다.
인프라만 Docker로 실행하고 애플리케이션을 호스트에서 개발하려면 다음처럼 실행합니다.
docker compose --env-file .env.local -f compose.local.yml up -d mysql redis
Backend와 Collector의 로컬 기본값이 위 포트와 계정에 맞춰져 있어 별도 DB/Redis 환경변수 없이 실행할 수 있습니다. 다른 포트를 선택했다면 DB_URL/REDIS_PORT(Backend), MYSQL_PORT/REDIS_PORT(Collector)로 재정의하세요.
Backend
cd marketboardBackend
./gradlew bootRun
Collector
cd collector
uv run python main.py
Frontend
cd frontend
npm install
npm run dev # http://localhost:3100
각 서비스별 환경변수는 .env.example(루트, 배포 기준) 및 각 서브프로젝트의 application.yaml / 환경변수를 참고하세요.
cd marketboardBackend && ./gradlew test # JUnit
cd collector && uv run pytest # pytest
cd frontend && npm run lint # ESLint
main 브랜치 push 시 GitHub Actions(self-hosted runner, 라즈베리파이)가 자동으로 빌드·배포합니다(.github/workflows/ci.yml). docker-compose.yml이 MySQL/Redis/backend/collector/frontend/nginx/certbot/Prometheus/Grafana 전체 스택을 정의하며, nginx + Let's Encrypt + DuckDNS로 HTTPS를 제공합니다.
PROGRESS.md — 세션별 작업 이력, 남겨둔 이슈, Phase별 상세 체크리스트stock-monitor-dev-plan.html — 로드맵(Phase 1~7) 원본 기획서UPGRADE_IDEAS.md — 로드맵 완료 이후 개선 후보INVESTING_FEATURE_IDEAS.md / INVESTING_FEATURES_DESIGN.md — 투자 기능 확장 아이디어·설계