FreeHaven
Freehaven - a local-first reading app that turns any book into a narrated, chapter-by-chapter guide
- Status
- Active
- Date
- November 2026
- Category
- Applications
Summary
A React Native 0.88 / Expo 58 app that imports a PDF or EPUB, finds its chapters, writes 250 words per chapter, narrates them with on-device Kokoro and word-level timings, and hands the reader one chapter a day - with SQLite as the only source of truth and a bring-your-own-key model layer that degrades instead of failing.
Description
Freehaven is a local-first reading app that starts from a file, not a store: import a PDF or EPUB, and it detects the real chapters, writes 250 words per chapter, and narrates each one with on-device Kokoro and word-level timings, one chapter a day. SQLite is the only source of truth, holding books, plans and progress across 33 tables, while generation is checkpointed per chapter and resumed by an Android foreground service. Its bring-your-own-key layer shares thirteen provider presets behind one transport that retries, repairs malformed JSON and falls back to an on-device extractive engine.
Technology
- TypeScript 6 (strict)
- React Native 0.88.1
- Expo SDK 58
- React 19.3
- Expo Router
- Zustand
- expo-sqlite (FTS5)
- Kotlin
- Apache PdfBox
- react-native-sherpa-onnx
- Kokoro-82M
- expo-audio
- BYOK (13 provider presets)
- pdf-lib
- JSZip
- fast-xml-parser
- pako
- iconoir-react-native
- Jest 30
- GitHub Actions
Features
- Import that handles real books: native PdfBox PDF extraction, EPUB parsing and a quality gate.
- Chapter detection with a review step: outline, heading and page-group detection plus manual controls.
- A full guide, not a summary: 250 words per chapter, one chapter a day and per-chapter audio.
- On-device neural narration: Kokoro-82M through sherpa-onnx with word-level subtitle timing.
- An AI layer that degrades honestly: thirteen provider presets, retries and an extractive fallback.
Links
Images
Machine-readable: /projects.json · /llms.txt · /llms-full.txt