Files
gdown/docs/PORTING_PLAN.md

68 lines
2.9 KiB
Markdown
Raw Normal View History

# Motrix (Electron) -> gdown (Tauri + Vue) 포팅 계획서
## 1. 목표
- Electron 중심 구조를 Tauri + Vue 구조로 전환한다.
- 기존 Motrix의 핵심 기능(aria2 엔진 제어, 다운로드 큐, 설정/세션, 트레이/알림)을 단계적으로 재구현한다.
- 초기 단계에서 "동작 가능한 최소 제품(MVP)"을 빠르게 만들고, 이후 안정화와 기능 확장을 진행한다.
## 2. 기준 환경
- Node.js: 24.x
- npm: 11.x
- Rust: stable (1.93.1+)
- Tauri: v2 계열
- Vue: v3 + Vite
## 3. 아키텍처 매핑
- Electron main (`src/main/*`) -> Tauri Rust (`src-tauri/src/*`)
- Electron renderer (`src/renderer/*`) -> Vue UI (`src/*`)
- aria2 프로세스 관리 (`main/core/Engine.js`) -> Rust process manager (`src-tauri/src/engine.rs`)
- 앱 설정 저장(`electron-store`) -> Tauri plugin-store(차기 단계)
- 트레이/알림/OS 훅 -> Tauri tray/notification/deep-link plugin(차기 단계)
## 4. 단계별 구현
### Phase 1 (진행 중): 엔진 부트스트랩
- [x] Tauri + Vue 프로젝트 초기화
- [x] Rust command: `engine_start`, `engine_stop`, `engine_status`
- [x] Vue 대시보드에서 엔진 제어 UI 연결
- [ ] aria2 번들 바이너리 경로 자동 탐지 (`resources/engine/*`)
- [ ] 에러 메시지 분류(파일 없음, 권한 오류, 포트 충돌)
### Phase 2: 다운로드 RPC/큐
- [ ] aria2 JSON-RPC client 계층 구현 (Rust 또는 Vue 중 1안 선택)
- [ ] 작업 추가/중지/재시도/삭제
- [ ] 작업 목록/속도/진행률 실시간 갱신
- [ ] Magnet/Torrent 입력 파이프라인
### Phase 3: 설정/세션/마이그레이션
- [ ] 설정 저장소 도입 (다운로드 폴더, 동시작업 수, 속도 제한 등)
- [ ] 세션 파일 관리(종료 시 저장, 시작 시 복구)
- [ ] Motrix 설정 키 매핑표 작성 및 자동 마이그레이션 도구
### Phase 4: 플랫폼 기능
- [ ] 시스템 트레이 메뉴
- [ ] 알림/자동 시작
- [ ] 파일 연결(.torrent) 및 magnet scheme 등록
- [ ] 업데이트 전략(자체 업데이트 또는 외부 배포 전략)
### Phase 5: 품질/배포
- [ ] 단위/통합 테스트
- [ ] 성능 측정(메모리, CPU, 대용량 큐)
- [ ] macOS/Windows/Linux 빌드 파이프라인
## 5. 리스크 및 대응
- aria2 바이너리 번들/서명: 플랫폼별 바이너리 동봉 규칙 문서화 + CI 검증
- Electron API 차이: 기능별 대체표를 먼저 만들고 Tauri plugin으로 대응
- 설정 호환성: 기존 키를 그대로 유지하지 않고 매핑 테이블로 이관
## 6. 현재 구현 상태 (2026-02-23)
- 완료:
- `src-tauri/src/engine.rs`: aria2 프로세스 시작/중지/상태 조회
- `src-tauri/src/lib.rs`: Tauri invoke handler 연결
- `src/lib/engineApi.ts`: 프런트 command 호출 래퍼
- `src/App.vue`: 엔진 제어 UI
- 다음 우선순위:
1. aria2 바이너리 경로 자동 탐지 + 리소스 번들 구조 확정
2. JSON-RPC 기반 다운로드 목록 API 구현
3. 설정 저장소 도입