Knowledge App
Private cross-platform knowledge base (Mac/Windows/Linux): full-text and context search across thousands of articles, voice notes and transcripts. Fully encrypted, offline-capable, zero-knowledge sync.
- lines TypeScript · React
- 87,000
- lines of Rust
- 76,400
- automated tests
- 900+
- database migrations
- 111
- commits since April 2026
- 1,145
- systems, one codebase
- 3
A private knowledge base for everything you read, hear and learn. Articles and your own texts are stored and organised; voice notes are recorded right in the app and automatically turned into searchable text; book pages can be photographed and imported via text recognition, and your own Word or Pages documents drop straight in.
Search doesn't just match exact words, it understands meaning: search for "motivation" and you'll also find the paragraph about willpower, in seconds, across thousands of articles, voice notes and transcripts.
Everything lives encrypted on your own machine and works completely offline; if you want, several devices stay in sync without anyone being able to read along. And the collection stays in your hands: at any time you can create an encrypted backup of everything you ever put in. Even years from now you can still trace what you read, heard and noted today: the data model is built for decades, a knowledge collection for a lifetime.
Technical details
- Application shell: Tauri v2 with a Rust core and a React interface. One codebase produces native installers for Mac, Windows and Linux; every call between interface and core is typed and runs through 48 command modules cut along feature lines.
- Interface: TypeScript 5 and React 18, 317 source files with around 87,000 lines. Built with Vite 5 and Tailwind CSS, accessible building blocks from 17 Radix primitives, with a custom component library on top.
- Application core: Rust across 63 source files with around 76,400 lines. It holds the database, encryption, search, synchronisation, import and export as well as the reports.
- Database: SQLite with SQLCipher, the entire file is encrypted at rest with AES-256. Plain SQL instead of an ORM, so the schema stays versionable across decades.
- Schema care: 111 consecutive migrations across roughly 95 tables, each one transactional together with its version stamp. Risky steps trigger an automatic backup first; a database written by a newer version is refused with a plain-language notice.
- Encryption: Argon2id with OWASP-recommended parameters derives the 256-bit key from the user's passphrase, and that one key protects database, sync and backup alike.
- Full-text search: SQLite FTS5 across the whole corpus and the user's own content. Titles weigh more than body text, and a two-stage ranking re-sorts a cheaply gathered candidate pool for exact order.
- Context search: local embeddings with Snowflake Arctic Embed M v2.0 (768 dimensions), executed through an ONNX runtime linked straight into the Rust core. No model download at runtime, no cloud service.
- Result list: full-text and meaning-based search run separately and are merged into one ranking via reciprocal rank fusion. The vector index is held warm in memory, which keeps warm context searches under 100 milliseconds.
- Transcription: Whisper base, multilingual, in a dedicated worker directly on the device. The model weights ship inside the installer, and voice notes recorded in the app never leave the machine.
- Text recognition: Tesseract for photographed or scanned printed pages. Worker, WASM core and language data are loaded from local files rather than a CDN, so the feature works offline.
- Protected PDF viewing: course material ships encrypted only, is decrypted in the Rust core and rendered with pdf.js, without ever touching the disk in plain form.
- Multi-device sync: the cloud storage is a pure mailbox. Every payload is encrypted with AES-256-GCM before upload, the server only ever sees unreadable blocks, and all merge and conflict logic lives in the client.
- Licence server: a dedicated Rust service built with axum, deployed as a single binary behind Caddy with automatic TLS and a locked-down systemd unit. Activations are signed with Ed25519, so the app can verify a cached verdict offline without it being forgeable.
- Quality assurance: more than 900 Rust test functions and 112 frontend test files, TypeScript in strict mode, two project-specific lint rules. A load simulation fills a real database with 25 simulated years of use to back up index decisions and storage budgets.

