Show HN: Hacker News용 네이티브 macOS 클라이언트, SwiftUI로 구축

발행: (2026년 2월 20일 오후 11:02 GMT+9)
6 분 소요

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 blockingwindow.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/awaitwithThrowingTaskGroup 을 활용한 구조적 동시성으로 배치 가져오기를 병렬 처리합니다.
  • 순수 SwiftUI UI이며, 유일한 AppKit 브리지는 NSViewRepresentable 로 감싼 WKWebView 래퍼입니다.

Data Sources

  • Official Hacker News Firebase API – 개별 아이템 및 사용자 데이터를 가져옵니다.
  • Algolia Search API – 피드 제공, 필터링, 전체 텍스트 검색(날짜 범위 필터링, 페이지네이션 등)을 담당하며, Firebase API 가 제공하지 않는 기능을 보완합니다.

CI/CD Pipeline

  • GitHub Actions 워크플로우 하나(약 467 라인)로 macOS 배포 전 과정을 자동화합니다:
    1. 앱 빌드 및 아카이브.
    2. Developer ID 로 코드 서명.
    3. Apple에 노타리제이션(티켓 전파 지연을 대비해 5회 재시도 스테이플 루프 포함).
    4. AppleScript 로 아이콘 위치를 지정해 커스텀 DMG 생성.
    5. DMG 서명 및 노타리제이션.
    6. EdDSA Sparkle 서명 생성.
    7. GitHub Release 게시.
    8. 업데이트된 appcast.xml 을 GitHub Pages 에 배포.

macOS 코드 서명 및 노타리제이션을 CI에서 작동시키는 것이 프로젝트에서 가장 어려운 부분이었습니다. GitHub Actions 로 App Store 외부에 macOS 앱을 배포하려는 경우 언제든 질문해 주세요—워크플로우는 완전히 오픈 소스입니다.

Licensing

전체 프로젝트는 MIT License 로 배포됩니다. Pull request와 이슈를 통한 기여를 환영합니다.

Feedback & Future Ideas

추가하고 싶은 기능에 대한 피드백을 받고 싶습니다. 현재 고려 중인 개선 사항:

  • 키보드 기반 네비게이션(j/k 로 스토리 이동 등).
  • 기사 본문을 순수 텍스트로 추출하는 리더 모드.
  • 댓글에 대한 답글 알림 지원.

Hacker News 에서 토론에 참여하실 수 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »

MacMini에 OpenClaw 설치, 파트 2

1단계: macOS 새로 설치 구성 6단계: Mac Mini 초기화 및 Apple ID 만들기 현재 실행 중인 macOS가 있는 Mac Mini에서 다음으로 이동합니다: System Settings.

로컬 중앙 집중형 데이터베이스 관리자

개요: Docker Compose와 함께 실행되는 로컬 데이터베이스 포털로, 여러 데이터베이스 엔진에 걸친 일반적인 데이터베이스 작업을 위한 단일 인터페이스를 제공합니다. G...