Register both Paca domains on Naver Search Advisor, Google Search Console and
Bing Webmaster Tools so the site can be indexed by every major engine, add
DASH and AES-128 how-to pages to capture protocol-specific searches, and let a
finished download share a UTM-tagged landing link from the completion shelf.
Package-manager manifests (winget, Chocolatey, Scoop) now carry verified
v1.2.0 hashes and product codes instead of placeholders. All 2,757 tests pass.
💘 Generated with Crush
Assisted-by: Crush:deepseek-v4.1-flash
|
||
|---|---|---|
| .forgejo/workflows | ||
| .github/workflows | ||
| build | ||
| docs | ||
| site | ||
| src | ||
| tests/Paca.Tests | ||
| .cursorrules | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| design.md | ||
| Directory.Build.props | ||
| Paca.slnx | ||
| README.md | ||
Paca
브라우저를 내장한 데스크톱 영상 다운로더와, 같은 엔진을 공유하는 모바일 컴패니언 앱.
앱 안의 브라우저로 사이트를 열면 재생되는 미디어(HLS .m3u8 / DASH .mpd / MP4 직링크)를
자동으로 감지해 목록에 띄우고, 쿠키·Referer 를 그대로 물려 받아 내려받는다.
받은 영상은 내장 서버를 통해 같은 네트워크의 휴대폰에서 바로 재생하거나 저장할 수 있다.
저장소 구조
| 프로젝트 | TFM | 역할 |
|---|---|---|
Paca.Core |
net8.0 | 다운로드 엔진. HLS/DASH 파싱, AES-128 복호화, 병렬·이어받기, 미디어 감지, ffmpeg 리먹스, 플랫폼 추상화 |
Paca.Browser |
net8.0-windows | WebView2 탭 컴포넌트 (응답 가로채기·쿠키 공급) |
Paca.App |
net8.0-windows | 메인 WPF 앱. 브라우저 셸 + 다운로드 UI + 서버 호스팅 |
Paca.Server |
net8.0 | ASP.NET 라이브러리. App 안에서 기동되어 모바일/웹 컴패니언에 라이브러리·스트리밍 API 제공 |
Paca.Mobile |
net10.0-android (+ios on macOS) | MAUI 컴패니언 앱 |
Paca.Mobile.Core |
net8.0 | 모바일 공용 로직. UI 없이 테스트 가능하도록 분리 |
Paca.Avalonia |
net8.0 | macOS/Linux 크로스플랫폼 셸 (진행 중 — docs/DEPLOYMENT_PLAN.md Gate #1' 참고) |
Paca.Cli |
net8.0 | 엔진 검증용 개발 도구 (--dashparse 등) |
Paca.Tests |
net8.0-windows | xUnit 전체 테스트 (Core/App/Server/Mobile.Core + E2E) |
그 밖에:
build/— 배포 스크립트.publish.ps1(Windows 설치자),installer.iss(Inno Setup),remote/(맥·리눅스 원격 빌드)docs/— 기획·감사 문서.env.example— 배포/원격빌드 자격 증명 템플릿..env로 복사해 채운다 (.env는 커밋되지 않음)
개발 환경
- .NET 8 SDK + .NET 10 SDK (모바일 및 Avalonia 12 가 10 을 요구)
- Windows 11 (데스크톱 앱은 WPF + WebView2 기반이라 Windows 전용)
- ffmpeg — PATH 에 있으면 자동 인식. 없으면 리먹스 단계에서 실패
- 모바일 빌드 시:
dotnet workload install maui-android(iOS 는 macOS 빌드머신에서만)
자주 쓰는 명령
# 테스트 — 가장 먼저 이걸로 상태 확인 (Mobile 제외 전 영역 커버)
dotnet test Paca.Tests
# 데스크톱 앱 빌드 / 실행
dotnet build Paca.App
dotnet run --project Paca.App
# 엔진 단독 검증
dotnet run --project Paca.Cli -- --dashparse "https://.../manifest.mpd"
# 모바일 (Android 워크로드 필요)
dotnet build Paca.Mobile -f net10.0-android
솔루션 전체 빌드(
dotnet build Paca.slnx)는 MAUI 워크로드가 설치돼 있어야 통과한다. 워크로드 없이 작업할 때는 프로젝트를 개별 지정한다.
배포
# Windows 설치자 (x64 + arm64) → out/Paca-Setup-{arch}.exe
./build/publish.ps1 -Config Release -Version 1.0.0
# macOS / Linux 원격 빌드 (.env 의 빌드머신 자격 증명 사용) → out/remote/<rid>/
bash build/remote/build-remote.sh all
out/, publish/ 는 산출물 디렉터리라 커밋되지 않는다.
CI (GitHub 공개 후)
.github/workflows/release.yml — 태그(v*) 푸시 시 테스트 관문 통과 후
Windows 설치자(x64/arm64)·Linux/macOS tar.gz·Android APK 를 빌드해 Draft Release 로 올린다
(QA 후 수동 Publish). macOS 서명·공증(D4)과 iOS TestFlight(D5)는 Apple Developer Program
가입 + 시크릿 등록 후 활성화한다 — 상세는 docs/DEPLOYMENT_PLAN.md §5·§7.
Android 자동 업데이트는 Obtainium 을 지원한다:
저장소 공개 후 build/obtainium.json 의 <owner>/<repo> 를 치환하고, 폰에서
obtainium://add/https://github.com/<owner>/<repo> 링크 한 번으로 등록된다.
앱 내 업데이트 확인(데스크톱)은 설정 → "앱 업데이트"에 GitHub 저장소(owner/repo)를
넣으면 GitHub Releases 최신 태그와 비교해 릴리스 페이지를 열어 준다.
문서
| 문서 | 내용 |
|---|---|
| AGENTS.md | AI 코딩 에이전트 작업 계약 — 명령·규약·완료 기준 (사람이 읽어도 온보딩 문서) |
| docs/HARNESS.md | 개발 하네스 운영법 — 자동 검증 게이트, 규칙/스킬 구조 |
| docs/BROWSER_FEATURES_PLAN.md | 데스크톱 브라우저 기능 계획 (v2) |
| docs/MOBILE_PLAN.md | 모바일 앱 + PC↔모바일 연동 계획 (v1) |
| docs/DEPLOYMENT_PLAN.md | Win/macOS/Linux/모바일 배포 체계 |
| docs/IMPLEMENTATION_AUDIT.md | 계획 대비 구현 감사 |
| docs/BACKLOG.md | 작업 이력 및 백로그 |
| docs/GROWTH_PLAN.md | 성장·홍보·바이럴 실행 계획 (검색/AEO/GEO 심화, 런치 시퀀스) |
| docs/promo/ | 사이트 홍보 키트 — 채널별 게시문·디렉터리 제출 데이터 |