2.9 KiB
2.9 KiB
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 (진행 중): 엔진 부트스트랩
- Tauri + Vue 프로젝트 초기화
- Rust command:
engine_start,engine_stop,engine_status - 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
- 다음 우선순위:
- aria2 바이너리 경로 자동 탐지 + 리소스 번들 구조 확정
- JSON-RPC 기반 다운로드 목록 API 구현
- 설정 저장소 도입