{"slug": "show-hn-reader-i-made-a-mac-workspace-for-books-browser-tabs-notes-and-ai", "title": "Show HN: Reader – I made a Mac workspace for books, browser tabs, notes, and AI", "summary": "A developer released Reader, an open-source native AI reading workspace for macOS 15 or later, built with SwiftUI, PDFKit, and WebKit, that imports PDF, EPUB, and TXT files and keeps books, highlights, notes, and AI chat in one local-first workspace. Reader stores books, progress, highlights, notes, search, and saved conversations in SQLite without requiring an account or backend, while Supabase sync and contextual AI features — chatting about a selection, current page, reading position, or whole book — are optional additions via a self-hosted Hono, Supabase, and Vercel backend. The monorepo includes the native app, tests, backend, and a public-domain test corpus, and requires Xcode 16 or later to build.", "body_md": "**An open-source, native AI reading workspace for macOS.**\n\nReader keeps the book, your notes, web research, and an AI conversation in one quiet workspace. Import PDF, EPUB, and TXT files; read in a native interface; highlight and annotate passages; simplify difficult writing; ask questions about a selection, the current page, everything up to your position, or the whole book; and open chat, a dictionary, or the web beside the text.\n\nThe library and reading experience are local-first. Books, progress, highlights, notes, search, and saved conversations remain usable without an account or backend. Supabase sync and AI features are optional additions.\n\n- **Native reading:** import and read PDF, EPUB, and plain-text books in a\nfocused macOS interface built with SwiftUI, PDFKit, and WebKit.\n- **Contextual AI:** chat about a selected passage, the current page, the book\nup to your reading position, or the complete book.\n- **Inline understanding:** rewrite a difficult passage in clearer language\nwithout leaving the page.\n- **Highlights and notes:** preserve selections, annotations, and reading\ncontext alongside the book.\n- **One reading workspace:** place the book beside AI chat, a system\ndictionary, another book, or a native browser.\n- **Local library:** organize books into folders, search across the library,\nresume progress, and keep local data in SQLite.\n- **Optional private cloud:** sync originals, reading state, annotations, and\nsearchable book context through your own Supabase and Vercel backend.\n- **Local-first failure model:** opening, reading, searching, highlighting, and\nannotating do not depend on cloud availability.\n\nThis monorepo contains the native Reader app and its optional Hono, Supabase, and Vercel backend.\n\nRequires macOS 15 or later and Xcode 16 or later. Open `Reader.xcodeproj`\nin Xcode and run the `Reader` scheme. Node.js and backend credentials are not\nrequired to build the native app. Cloud and AI features need a backend. The\nchecked-in backend URL is the local Vercel development address at\n`http://127.0.0.1:3000`; it never sends a fork to maintainer infrastructure.\nFollow [SETUP.md](https://github.com/Marvy101/reader-source/blob/main/SETUP.md) to create your own Supabase and Vercel projects and\npoint the app at them.\n\nFrom Terminal:\n\n```\nDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n  xcodebuild \\\n  -project Reader.xcodeproj \\\n  -scheme Reader \\\n  -destination 'platform=macOS' \\\n  CODE_SIGNING_ALLOWED=NO \\\n  build test\n```\n\nThe project is generated with [XcodeGen](https://github.com/yonaskolb/XcodeGen):\n\n```\nxcodegen generate\n```\n\nThe generated `.xcodeproj` is committed so XcodeGen is helpful, not required, for someone opening the app.\n\nInstall and check the backend from the same repository root:\n\n```\nmake setup\nmake backend-check\n```\n\nRun the backend locally through Vercel:\n\n```\nmake backend-link\nmake backend-dev\n```\n\nDeploy a preview from the same root:\n\n```\nmake backend-preview\n```\n\nRun both native and backend checks:\n\n```\nmake check\n```\n\nThe backend package has more detail in [`Backend/README.md`](https://github.com/Marvy101/reader-source/blob/main/Backend/README.md).\nThe complete app-only and cloud setup is in [SETUP.md](https://github.com/Marvy101/reader-source/blob/main/SETUP.md).\n\nI know you're just having your agent run this, so here's a guide made specifically for it lol: [AGENT_SETUP.md](https://github.com/Marvy101/reader-source/blob/main/AGENT_SETUP.md).\n\n```\nReader/          Native Swift and SwiftUI source\nReaderTests/     Native tests\nBackend/         Hono, Supabase, and Vercel backend\nTestCorpus/      Reproducible public-domain format corpus\n```\n\nThe app owns a shared Reader Core for search, locators, selections, annotations, progress intent, and capabilities. Format adapters translate those concepts into the rendering primitive that fits:\n\n```\nSwiftUI reading experience\n└── Reader Core\n    ├── PDF adapter → PDFKit\n    └── Reflowable adapter → owned EPUB/TXT parser + hardened WKWebView\n```\n\nReader uses [ZIPFoundation](https://github.com/weichsel/ZIPFoundation) for archive extraction and [GRDB](https://github.com/groue/GRDB.swift) for SQLite persistence. Rendering remains owned by Reader through PDFKit and its EPUB/TXT WebKit adapter.\n\nReader is built natively in Swift, making it easy to bring to iOS and iPadOS; that goal guides technical decisions so one shared codebase can support macOS, iOS, and iPadOS.\n\n- Native macOS app with SwiftUI\n- Local PDF, EPUB, and TXT import into an app-managed copy\n- PDFKit fixed-page rendering\n- Custom EPUB/TXT extraction and WebKit reading surface\n- Shared native search and annotation model above both adapters\n- Embedded EPUB covers and first-page PDF covers\n- Supabase account entry plus optional, private cloud copies of imported originals\n- Import-time background preparation for whole-book AI search and annotations\n- Authenticated launch and foreground reconciliation for existing or interrupted local books\n- Truthful cloud status derived from confirmed file and searchable-text preparation\n- Local SQLite persistence for library entries, progress, highlights, and conversations\n- EPUB is vertically reflowed by section; pagination and full standards coverage are still open\n- Local reading remains available when cloud sync or AI preparation fails\n\nSee [CONTRIBUTING.md](https://github.com/Marvy101/reader-source/blob/main/CONTRIBUTING.md) for the development workflow and contribution terms.\n\nReader is open source under the [MIT License](https://github.com/Marvy101/reader-source/blob/main/LICENSE). You may use,\ncopy, modify, publish, distribute, sublicense, and sell copies of the software\nsubject to the license terms.", "url": "https://wpnews.pro/news/show-hn-reader-i-made-a-mac-workspace-for-books-browser-tabs-notes-and-ai", "canonical_source": "https://github.com/Marvy101/reader-source", "published_at": "2026-09-19 16:59:58+00:00", "updated_at": "2026-09-19 17:24:30.480270+00:00", "lang": "en", "topics": ["ai-products", "ai-tools", "artificial-intelligence", "large-language-models", "developer-tools"], "entities": ["Reader", "macOS", "SwiftUI", "PDFKit", "WebKit", "Supabase", "Vercel", "XcodeGen"], "alternates": {"html": "https://wpnews.pro/news/show-hn-reader-i-made-a-mac-workspace-for-books-browser-tabs-notes-and-ai", "markdown": "https://wpnews.pro/news/show-hn-reader-i-made-a-mac-workspace-for-books-browser-tabs-notes-and-ai.md", "text": "https://wpnews.pro/news/show-hn-reader-i-made-a-mac-workspace-for-books-browser-tabs-notes-and-ai.txt", "jsonld": "https://wpnews.pro/news/show-hn-reader-i-made-a-mac-workspace-for-books-browser-tabs-notes-and-ai.jsonld"}}