Skip to content

fundaments-work/Theorem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

884 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Theorem

Theorem

Own your reading data. Forever.

Web Demo Latest Release License Platform CI PRs Welcome

A free, open-source, local-first reading app that runs on Linux, macOS, Windows, and Android from a shared codebase. Read PDFs, EPUBs, MOBI, FB2, CBZ, CBR, and RSS feeds — all in one workspace. Highlight and annotate with six colors. Look up words with offline dictionaries. Listen with neural text-to-speech. Share highlights as beautiful images. Sync everything to Markdown files in your Obsidian or Logseq vault.

No cloud account. No subscription wall. No vendor lock-in.


Quick Install

Linux (one command)

curl -fsSL https://raw.githubusercontent.com/fundaments-work/Theorem/main/scripts/install-linux.sh | bash

Manual Download

Platform Format
Linux .deb or .AppImage
macOS (Intel) .dmg
macOS (Apple Silicon) .dmg
Windows .msi or .exe
Android .apk

All builds on the Releases page. Website and docs at theorem.fundaments.work. Try the web demo without installing.


Quick Start (Development)

git clone --recurse-submodules https://github.com/fundaments-work/theorem.git
cd theorem
pnpm install

pnpm dev          # Web dev server (http://localhost:1420)
pnpm dev:tauri    # Desktop app in dev mode

Prerequisites: Node.js 22+, pnpm 10+, Rust (via rustup), and Tauri system deps.

Command Description
pnpm dev Start Vite dev server
pnpm dev:tauri Start Tauri desktop app
pnpm build Typecheck + production build
pnpm typecheck TypeScript type checking
pnpm test Run Vitest unit tests
pnpm package:linux Build Linux release package

See AGENTS.md for the full repository map, conventions, and architecture.


Features

Multi-Format Reader

EPUB, MOBI, AZW, AZW3, FB2, CBZ, CBR, PDF, TXT, and RSS articles. Foliate-based reflowable rendering with paged and scroll modes. PDF.js engine with zoom (50–200%), page-fit/width-fit modes, and outline navigation. Full table of contents with section progress. Estimated reading time per page and chapter. Reading progress saved per-book across sessions (page-accurate + CFI). File association — open ebooks directly from your file manager.

Theorem reader with highlights and annotations in dark theme

Reading Customization

Three reader themes: Light, Sepia, Dark. Font family (original, serif, sans-serif, monospace). Font size (12–36), line height (1.0–2.5), margins (0–35%). Letter spacing, word spacing, paragraph spacing. Text alignment, hyphenation toggle. Page animation styles (slide, fade, instant). Page layout (single, double, auto). Reading flow (paged, scroll, auto). Brightness slider. Zoom for fixed-layout formats. Full-screen mode. Auto-hide toolbar with configurable delay. Prefetch distance, animations toggle, virtual scrolling. Per-word highlighting during TTS immersion reading.

Highlights & Annotations

Six color-coded highlight colors: yellow, green, blue, red, orange, purple. Notes on any highlight. Bookmarks. Overlayer drawing styles: highlight, underline, strikethrough, squiggly, outline. Annotation panel with quick navigation, editing, and deletion. Works across all formats including PDF and RSS articles.

Annotation panel with color-coded highlights

PDF Annotations

Freehand drawing with configurable stroke width. Text notes placed anywhere on the page. Multi-line rectangular highlights. Per-page annotation rendering. PDF view state persistence (page, zoom, mode per-session).

Highlight Sharing

Generate polished share-card images from any highlight. Multiple formats: Square (1080×1080) and Story (1080×1920). Multiple visual themes: match, dark, tinted, sepia. Download as PNG, copy to clipboard, native share via Web Share API, share to X (Twitter). Android: saves to MediaStore gallery.

Text-to-Speech (Immersion Reading)

Uses your platform's native TTS engine — no external models or cloud APIs. Android: Android TextToSpeech. Linux: speech-dispatcher (spd-say). macOS: say. Windows: PowerShell System.Speech. Per-word highlighting synchronized with audio. Voice selection depends on system-installed voices.

Vocabulary Builder

Look up words while reading with built-in dictionary. Offline StarDict dictionary support (import local .ifo/.idx/.dict.dz files). Download English Wiktionary (~50MB) from the app. Pronunciation display with optional audio. Vocabulary capture and review workspace.

RSS Reader

Subscribe to feeds with full annotation tools. Article extraction via Mozilla Readability. Feed discovery from web pages. Offline article storage with caching. Per-feed unread count. Favoriting. Noise filtering (strips ads from extracted content).

RSS feed reader with article list

Markdown Export (Obsidian / Logseq)

Export highlights and annotations to local Markdown files. Designed for vault-based PKM workflows. Per-book Markdown pages with YAML frontmatter. Vocabulary export with definitions and phonetics. Customizable file naming. One-click export.

Library Management

Book import from local files or drag-and-drop. Folder scanning for batch import. Custom collections / shelves. Favorites toggle with dedicated section. Book ratings (1–5 stars). Tags and categories. Multiple view modes: grid, list, compact. Sort by title, author, date added, last read, progress, rating. Library search by title, author, or tags. SHA-256 content hash deduplication. Concurrency-controlled batch import. Filename metadata extraction.

Library with custom shelves

Reading Statistics

Reading time tracking (total and per-book). Books finished. Reading streaks: current + longest. Reading speed: average WPM. Daily activity log with 12-week heatmap. Reading goals: daily minutes and yearly books. Achievement badges. Book completion tracking.

LAN Device Sync

Encrypted peer-to-peer sync between Theorem installs on local network. Syncs books, reading progress, annotations, collections, settings, and vocabulary. QR-based device pairing. Device identity management with public-key encryption. Auto-sync on peer discovery. Periodic background sync. No cloud relay — fully local and private.

Backup & Data Management

Full backup bundle export: books (with binary data), annotations, collections, settings, statistics, vocabulary, dictionaries, RSS feeds. Storage usage breakdown. Cache size configuration.

Settings and data management

Cross-Platform

Desktop: Linux (.deb, .AppImage), macOS Intel + Apple Silicon (.dmg), Windows (.msi, .exe). Mobile: Android (.apk). Web: browser fallback for development. All from a single TypeScript + Rust codebase.

Theorem mobile


Tech Stack

Layer Technology
Frontend React 19, TypeScript, Vite 8
State Zustand 5 (persisted + versioned migrations)
Styling Tailwind CSS v4, CSS design tokens
Desktop Tauri 2 (Rust)
Mobile Tauri 2 Android
PDF PDF.js 6
Ebook Foliate.js (vendored)
TTS Platform native (Android TTS, spd-say, say, System.Speech)
Dictionary StarDict
RSS Mozilla Readability
Archive zip.js, unrar-ng (Rust, bundled C source)
Testing Vitest + jsdom

Why Theorem?

Built for knowledge workers who want to own their reading data:

  • Your data stays local — everything on your device. No cloud, no tracking, no data mining.
  • Portable by design — exports are plain Markdown files. Move to any tool anytime.
  • True offline-first — works completely without internet. Sync when you choose.
  • No subscriptions — free and open-source. Always.

Is Theorem a Readwise alternative?

Yes. Local-first reading, annotation, and Markdown export without a paid subscription. Plus: ebook reader, RSS reader, vocabulary builder, neural TTS, LAN sync, and highlight sharing — all in one app.


FAQ

Is my data safe? — Yes. Everything is stored locally. No cloud account required.

Can I migrate away? — Yes. Exports are plain Markdown files, portable to any tool.

Does it work with Obsidian and Logseq? — Yes. Markdown sync is designed for vault-based workflows.

Is there device sync? — Yes. Encrypted LAN pairing between Theorem installs, no cloud relay.

Does TTS work offline? — Yes. It uses your system's built-in TTS engine. No downloads needed.

What formats are supported? — EPUB, MOBI, AZW, AZW3, FB2, FBZ, CBZ, CBR, PDF, TXT, and RSS feeds.

Can I try it without installing? — Yes. The web demo runs in your browser.

Why MIT instead of AGPL? — MIT lets anyone use, modify, and integrate the code without forcing them to open-source their changes. For a local-first reading app that stores all data as plain Markdown, the protection AGPL offers is unnecessary — your data is already portable.


Contributing

See CONTRIBUTING.md for guidelines, code conventions, and the pull request process.


License

MIT License — see LICENSE for details.

About

Theorem — free, open-source, local-first reading app. Read EPUB, PDF, MOBI, CBZ, RSS. Highlight, annotate, TTS, vocabulary builder, P2P sync, Markdown export for Obsidian/Logseq. Built with Tauri, React, TypeScript, Rust.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages