Show HN: Hacker News용 네이티브 macOS 클라이언트, SwiftUI로 구축
Source: Hacker News
Overview
SwiftUI 로 구축된 macOS 네이티브 데스크톱 클라이언트이며 MIT 라이선스로 오픈소스화되었습니다.
- GitHub repository:
- Download (signed & notarized DMG, macOS 14.0+):
- Screenshots:
이 앱은 사이드바를 통한 스토리 탐색, 통합 리더를 통한 기사 열람, 댓글 스레딩을 하나의 창에서 제공하는 macOS‑스타일 경험을 제공합니다.
Features
- Split‑view layout – 왼쪽 사이드바에 스토리를 표시하고, 오른쪽에
NavigationSplitView로 기사와 댓글을 보여줍니다. - Built‑in ad blocking – 사전 컴파일된
WKContentRuleList가 DoubleClick, Google Syndication, Criteo, Taboola, Outbrain, Amazon ads 등 14개의 주요 광고 네트워크를 WebKit 레이어에서 차단합니다. 설정에서 토글 가능. - Pop‑up blocking –
window.open()호출을 억제합니다; 설정에서 토글 가능. - Hacker News account login – 로그인, 계정 생성, 비밀번호 재설정 등 전체 인증 흐름을 지원합니다. 세션은 macOS Keychain에 저장되며, 쿠키는
WKWebView에 주입되어 로그인 상태를 유지하면서 투표, 댓글, 스토리 제출이 가능합니다. - Bookmarks – 스토리를 로컬에 저장해 오프라인에서도 접근할 수 있습니다.
Codable직렬화를 통해 영구 저장되며, 독립적으로 검색 및 필터링이 가능합니다. - Search and filtering – Algolia Hacker News API 로 구동됩니다. 콘텐츠 유형(All, Ask, Show, Jobs, Comments), 날짜 범위(오늘, 지난 주, 지난 달, 전체 기간)별 필터링 및 인기 순·최신 순 정렬을 지원합니다.
- Scroll progress indicator – JavaScript‑to‑native 메시징을 이용해 읽기 진행 상황을 상단에 작은 주황색 바로 표시합니다.
- Auto‑updates – Sparkle 로 구현되었으며, GitHub Pages 에서 제공되는 EdDSA‑서명 업데이트를 사용합니다.
- Dark mode – CSS와 메타‑태그 주입을 통해 시스템 외관을 따릅니다.
Technical Details
Architecture
- 총 2,050 라인의 Swift 코드가 16개의 파일에 분산되어 있습니다.
- 최신
@Observable매크로를 사용하며(구식ObservableObject/@Published패턴 대신) async/await와withThrowingTaskGroup을 활용한 구조적 동시성으로 배치 가져오기를 병렬 처리합니다.- 순수 SwiftUI UI이며, 유일한 AppKit 브리지는
NSViewRepresentable로 감싼WKWebView래퍼입니다.
Data Sources
- Official Hacker News Firebase API – 개별 아이템 및 사용자 데이터를 가져옵니다.
- Algolia Search API – 피드 제공, 필터링, 전체 텍스트 검색(날짜 범위 필터링, 페이지네이션 등)을 담당하며, Firebase API 가 제공하지 않는 기능을 보완합니다.
CI/CD Pipeline
- GitHub Actions 워크플로우 하나(약 467 라인)로 macOS 배포 전 과정을 자동화합니다:
- 앱 빌드 및 아카이브.
- Developer ID 로 코드 서명.
- Apple에 노타리제이션(티켓 전파 지연을 대비해 5회 재시도 스테이플 루프 포함).
- AppleScript 로 아이콘 위치를 지정해 커스텀 DMG 생성.
- DMG 서명 및 노타리제이션.
- EdDSA Sparkle 서명 생성.
- GitHub Release 게시.
- 업데이트된
appcast.xml을 GitHub Pages 에 배포.
macOS 코드 서명 및 노타리제이션을 CI에서 작동시키는 것이 프로젝트에서 가장 어려운 부분이었습니다. GitHub Actions 로 App Store 외부에 macOS 앱을 배포하려는 경우 언제든 질문해 주세요—워크플로우는 완전히 오픈 소스입니다.
Licensing
전체 프로젝트는 MIT License 로 배포됩니다. Pull request와 이슈를 통한 기여를 환영합니다.
Feedback & Future Ideas
추가하고 싶은 기능에 대한 피드백을 받고 싶습니다. 현재 고려 중인 개선 사항:
- 키보드 기반 네비게이션(
j/k로 스토리 이동 등). - 기사 본문을 순수 텍스트로 추출하는 리더 모드.
- 댓글에 대한 답글 알림 지원.
Hacker News 에서 토론에 참여하실 수 있습니다.