Fathom
A quiet place to read the old texts.
Offline-first reader for sacred and philosophical texts, with ambient soundscapes.
- Platform
- Android, with an iOS entry point
- Core
- Kotlin Multiplatform
- Data
- Offline, SQLDelight
- Architecture
- MVI with StateFlow
- 15,163
- canonical passages
- 7
- traditions
- <5 ms
- full-text search
- 6
- ambient soundscapes
What it is
Fathom brings passages from Hinduism, Stoicism, Buddhism, Taoism and more into one calm, distraction-free reader. Everything lives in local SQLite databases, so it opens instantly and works with no connection at all. The core is shared Kotlin Multiplatform code, with a fully native UI on top.
- 01
Content lives on the phone
Two SQLDelight databases, one for the starter corpus and one for your own notes and bookmarks, so nothing waits on a network.
- 02
A feed engine picks what's next
Shared Kotlin Multiplatform logic builds a daily feed tailored to the traditions and intentions you chose at onboarding.
- 03
Native UI renders it
Jetpack Compose draws a calm, editorial reading experience, with four reading themes and haptic touches.
- 04
Audio plays alongside
An ExoPlayer engine mixes ambient tracks, handles audio focus, and fades out gently when the sleep timer ends.
What it does
Offline from first launch
No sign-in, no spinner. Passages, search and your reading history all live on the device.
Search across traditions
Token search over the whole corpus returns in under 5 ms, with a topical explorer for themes like grief, courage or stillness.
Made for evenings
Six soundscapes, a sleep timer with fade-out, and a daily wisdom widget that refreshes at midnight.
Shared core, native feel
Business logic is written once in Kotlin Multiplatform, and each platform gets its own native interface.
How it works
- 1
Native UI
Compose / SwiftUI
- 2
Shared logic
Kotlin Multiplatform
- 3
Feed engine
daily picks
- 4
SQLDelight
starter content + user data
- 5
Content packs
SHA-256 verified
Questions
- What is Fathom?
- Fathom is a calm, distraction-free reader for passages from Hinduism, Stoicism, Buddhism, Taoism and more. It holds 15,163 passages across 7 traditions.
- Does Fathom work offline?
- Yes. Everything lives in local SQLite databases, so it opens instantly and works with no connection. Full-text search over all passages takes under 5 ms.
- What is Fathom built with?
- Kotlin Multiplatform for the shared core (data, search and feed logic), Jetpack Compose for the Android UI, SQLDelight for the databases, Media3 for audio and Glance for the widget.
Under the hood
Share the logic, not the interface
Domain models, repositories, the feed engine and the database queries are written once in Kotlin Multiplatform. Each platform keeps a fully native UI on top, and platform-specific pieces like database drivers and cryptographic verifiers sit in androidMain and iosMain.
Two databases, on purpose
The starter corpus lives in one SQLDelight database and everything personal, like bookmarks, notes and reading history, lives in another. Content can be replaced or updated without ever touching your data.
Search that feels instant
Token-based full-text search runs across all 15,163 passages in under 5 ms, backed by a topical explorer for themes like grief, courage and stillness.
Content you can trust
Dynamic content packs are verified with SHA-256 before they're used. Android and iOS each get their own verifier behind the same shared interface.
Audio that behaves like a good citizen
A Media3 / ExoPlayer engine handles system audio focus, mixes ambient soundscapes alongside the reader, and fades everything out gently when the sleep timer runs down.
Stack
- Core
- Kotlin Multiplatform
- Android UI
- Jetpack Compose, Material 3
- Persistence
- SQLDelight 2.0 (two databases)
- Concurrency
- Coroutines, StateFlow
- Audio
- Media3 / ExoPlayer
- Widgets
- Glance
- Integrity
- SHA-256 content verification
Written about
More from the same desk