A personal knowledge companion for serious readers. Open Citadel helps you collect, organise, and action the insights, highlights, and thoughts that come from the books, blogs, and podcasts you consume — so nothing valuable gets lost.
Built with Expo / React Native. Android-first, iOS coming.
Most reading apps stop at reading. Open Citadel treats the reader as a starting point, not an end point. Every highlight, bookmark, and stray thought you capture while reading feeds into a unified timeline — your personal knowledge base, organised by date and tagged however you like.
Library
- Sync your EPUB library from a local folder on your device (Android Storage Access Framework)
- Automatic metadata enrichment — title, author, cover pulled from the book file
- Organise books into collections, mark favourites, archive finished reads
- Queue and reading progress tracked per book
Reader
- Full EPUB reader powered by the Readium toolkit
- Dark, light, and sepia themes; custom font size and margins
- Highlight text with colour-coded highlights
- Bookmark pages
- Table of contents navigation
- Text-to-Speech — listen to any book with a single tap, follows your reading position
Timeline
- A chronological feed of everything you capture: highlights, bookmarks, and your own thoughts
- Add freeform thoughts at any time, tag them, link them back to a book
- Filter by date with a calendar picker
- Edit or delete any entry
Samwell — AI Reading Companion
- On-device LLM powered by llama.rn (offline & private)
- Samwell persona injected at the system level — he knows he's a reading companion
- Download any GGUF model from Hugging Face directly inside the app (search → repo → file → download)
- Start a chat from any highlight in the reader — context is carried into the conversation
- Attach a book to a chat session for passage-level context
- Model lifecycle controls: Wake Up / Power Down, status indicator in the chat header
Settings
- Choose your EPUB library folder
- Reader appearance preferences (theme, font, size, margins)
- Samwell AI section: model picker with HuggingFace search, offline vs cloud mode
| Layer | Choice |
|---|---|
| Framework | Expo 55 / React Native 0.83 |
| Navigation | Expo Router (file-based) |
| Database | Expo SQLite + Drizzle ORM |
| State | Zustand |
| Reader | @dr33m/react-native-readium (Readium fork) |
| TTS | Readium Navigator Media TTS (Android platform TextToSpeech) |
| Sync | Custom SAF-based sync coordinator |
- Node 20+
- pnpm 10+
- Android: JDK 17, Android SDK with
compileSdkVersion>= 31 - iOS: Xcode 16.2+, iOS deployment target >= 13.4
pnpm installnpx expo start --tunnel --cleareas build --platform android --local --profile development# Preview APK
eas build --profile preview --platform android
# Production
eas build --profile production --platform androidsrc/
app/ # Expo Router screens
(tabs)/ # Tab navigator: Timeline, Library, Settings
reader/[id] # Full-screen reader
collection/[id] # Collection detail
section/[type] # Library section views (queue, favourites, archived)
components/
library/ # Library UI components
reader/ # Reader UI (header, TTS controls, selection bar, highlights)
timeline/ # Timeline entries and thought sheet
ui/ # Shared primitives
db/ # Drizzle schema and migrations
services/ # Sync pipeline (SAF scan → metadata → DB)
stores/ # Zustand stores (books, collections, reader, timeline, settings)
constants/ # Theme tokens
- EPUB library sync from device folder
- Full Readium-powered reader
- Highlights with colour coding
- Bookmarks
- Text-to-Speech
- Thoughts — capture and tag freeform notes linked to books
- Collections and library organisation
- On-device LLM via llama.rn — offline and private
- Samwell persona — system prompt gives him identity as your reading companion
- HuggingFace model search — browse, pick a GGUF, download, all in-app
- Highlight-to-chat — start a conversation from any reader selection with full context
- Book context — attach a book to a session so Samwell can reference it
- Export as image — share highlights and thoughts as styled PNG cards with book cover, notes, and Open Citadel branding (dark & light theme)
- Tool calling — let Samwell query your local database to pull in your highlights, thoughts, and notes, and read relevant passages from books in your library, so his answers are grounded in your actual reading
- Add podcast feeds (RSS)
- In-app player with chapter support
- Capture timestamped highlights while listening
- Thoughts and highlights flow into the same timeline
- Add articles by URL or RSS feed
- Distraction-free reader view
- Highlights and thoughts sync to timeline
- Archive for offline reading
Private — all rights reserved.