What’s unique: • Everything — TTS, summaries, Q&A, mind-maps, translation — runs locally on the device • Supports EPUB, PDF, MOBI, AZW3, TXT, and FB2 with a single unified reading pipeline • Uses Supertonic ONNX for high-quality offline speech (no cloud, no latency) • Integrates Apple Intelligence for chapter-level analysis on supported devices • Local SQLite storage for highlights, progress, and reading analytics
Technical notes for those curious: • EPUB/TXT/MOBI parsing is consolidated into a WebView-based renderer with CFI support • PDF mode uses native PDFKit overlays with TTS + translation layers • TTS runs on-device using a quantized Supertonic model with chunked streaming • AI summaries/Q&A rely on local Apple Intelligence calls with caching at the chapter level • The entire app operates offline — no accounts, no telemetry, no external servers
I’d love feedback from readers, mobile devs, and anyone interested in on-device AI design. Happy to answer any technical questions!
page_echo•1h ago
The biggest challenge was balancing feature completeness with device limitations. Running TTS and AI fully on-device meant carefully managing memory spikes, chunking long texts, avoiding UI stalls, and working within the restrictions of Apple Intelligence availability. Getting TTS to feel continuous required experimentation with segmentation, buffering, and timing, especially for long-form documents.
Another interesting challenge was unifying such different file formats into a consistent reading experience. Rather than building multiple rendering paths, I ended up normalizing most formats into HTML and relying on CFI anchors and a WebView-based system. This reduced code surface but introduced its own edge cases, especially around selection accuracy and highlight persistence.
PDF brought its own set of problems — mainly keeping performance stable on large files and making sure overlays (search, highlights, TTS, translation) stayed synchronized with page geometry. I’m still improving this area.
I’m very interested in learning how others approach on-device inference, streaming models, memory usage patterns, and PDF performance. If anyone has experience or ideas in those areas, I’d love to hear them.
Happy to answer questions about any part of the implementation.