How bible-translation-tools/biel-mobile-app works
BIEL is an Expo mobile app for browsing multilingual Bible catalogs, reading and listening to scripture, and keeping text/audio available offline. The evidenced entry workflow starts on the language screen, which loads a language list and routes a selection to the books screen; the tree indicates further reading, downloads-library, and playback capabilities. Download hooks and services appear to manage acquisition, while SQLite and document-directory files provide persistent catalog/download state. Source excerpts are limited, so links among unsampled routes and domain services are intentionally omitted.
Main entry points: index.tsx Language home · book-download-runner.ts Book download runner · books.tsx Books screen · client.ts GraphQL client
Components 22
App experience
- Language home
src/app/index.tsx - Books screen
src/app/books.tsx - Reading screen
src/app/read.tsx - Downloads screen
src/app/downloads-library.tsx - Language list
src/components/home/language-list.tsx - Books and chapters
src/components/books/book-list.tsx
Scripture catalog
- Language loading
src/hooks/use-languages.ts - Book chapters
src/hooks/use-book-chapters.ts - GraphQL client
src/api/graphql/client.ts - Content services
src/api/services/content-fetch.ts
Reading and playback
- Reading interface
src/components/reading/reading-chapter-list.tsx - Audio controls
src/components/reading/media-player-controls.tsx - Track playback
src/services/track-player/chapter-playback.ts
Offline downloads
- Download workflows
src/hooks/use-content-download.ts - Book download runner
src/services/book-download-runner.ts - Offline text service
src/api/services/offline-text.ts - Offline audio service
src/api/services/offline-audio.ts
Local persistence
- Download catalog
src/db/repository.ts - Offline content files
src/constants/offline-storage.ts
Other components
- App user
- Bible content API
- Track Player
Connections 23
- App user → Language home: opens app
- Language home → Language list: renders
- Language home → Language loading: loads languages
- Language home → Books screen: routes selection
- Language loading → GraphQL client: requests catalog
- GraphQL client → Bible content API: sends query
- App user → Books screen: chooses book
- Books screen → Books and chapters: renders
- Books screen → Book chapters: loads chapters
- Book chapters → GraphQL client: requests data
- App user → Reading screen: opens reading
- Reading screen → Reading interface: renders
- App user → Downloads screen: opens downloads
- Downloads screen → Download workflows: manages downloads
- Download workflows → Book download runner: starts tasks
- Book download runner → Offline text service: fetches scripture
- Book download runner → Offline audio service: fetches audio
- Offline text service → Offline content files: writes text files
- Offline audio service → Offline content files: writes audio files
- Book download runner → Download catalog: records downloads
- App user → Audio controls: controls playback
- Audio controls → Track playback: dispatches controls
- Track playback → Track Player: controls tracks