Library of humanity
A personal digital library for sacred and classical texts — Torah, Bible, Quran, Sahih al-Bukhari, Talmud, Bhagavad Gita, and translation, all in one place.
Download ▸ Features ▸ Languages ▸ Tech Stack ▸ Build ▸ Privacy ▸ Contributing
#about
Scriptorium is a native Android app that brings sacred and classical texts from multiple traditions together in a clean, offline-friendly library. It is built for focused reading, comparative study, personal notes, and multilingual access without the clutter.
#features
- ▸ Multi-tradition library — Torah, Bible/Gospel, Quran, Sahih al-Bukhari, Talmud, and Bhagavad Gita
- ▸ Comparative Reading Mode — compare two or three sources with parallel cards, split columns, chapter selection, filtering, and source swapping
- ▸ Three-language interface — Turkish, English, and Russian across navigation, reader controls, dialogs, notifications, and catalogue metadata
- ▸ Language-aware scripture data — Turkish, English, and Russian book/surah names, Russian Quran edition support, and language-aware offline cache keys
- ▸ Offline-first reading — download complete books or individual chapters; content is cached locally with Room and file storage
- ▸ Reading tools — adjustable font size, serif/sans-serif typography, line height, light/dark/sepia themes, original text, bilingual mode, and audio playback where available
- ▸ Personal study — notes, highlights, bookmarks, reading history, progress tracking, and contemplation timer
- ▸ Daily verse notifications — scheduled wisdom notifications with the selected application language
- ▸ Live content integration — Quran, Bible, Torah, Talmud, Bukhari, and Gita content can be loaded from their configured sources and retained offline
- ▸ Automatic updates — optional GitHub-based update checks with localized update dialogs
- ▸ Modern Android UI — Jetpack Compose, Material 3, animated navigation, responsive reader layouts, and a custom Scriptorium launcher logo
The application supports:
| Code | Interface | Content behavior |
|---|---|---|
TR |
Türkçe | Turkish interface and Turkish translations where available |
EN |
English | English interface and English translations where available |
RU |
Русский | Russian interface, Russian catalogue names, and Russian Quran translation |
Language selection is persisted across launches. Existing values such as TR, EN, RU, tr-TR, and ru-RU are accepted. On a first launch, Turkish and Russian device locales select their matching language; other locales default to English. Downloaded scripture content is cached separately per language so changing language does not reuse the wrong translation.
#download
Every push to main triggers an automatic build. You can grab an APK two ways:
| Option | What you get | Where |
|---|---|---|
| Latest Release | Stable, signed release APK | Releases page |
| Dev Build | Freshest debug build (may be unstable) | Actions tab → latest run → Artifacts |
Also available on APKPure when a release is published.
#tech-stack
| Layer | Choice |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose (Material 3) |
| Architecture | MVVM |
| Local storage | Room |
| Networking | Retrofit + OkHttp |
| Async | Kotlin Coroutines |
| CI/CD | GitHub Actions |
| Dev environment | GitHub Codespaces |
The application ID is com.muhsintags.scriptorium, with minSdk 24, targetSdk 36, and version 1.0 / version code 1 in the current configuration.
This project is built entirely in the cloud — no local Android Studio setup required. Every build, test, and release runs through GitHub Actions and Codespaces.
#build--run
Locally / in Codespaces:
./gradlew assembleDebug # debug build
./gradlew assembleRelease # signed release build (requires keystore secrets)
The release build expects KEYSTORE_PATH, STORE_PASSWORD, KEY_ALIAS, and KEY_PASSWORD. Do not commit keystores or encoded signing keys. Use .env.example for local configuration and GitHub Actions secrets for CI.
Via GitHub Actions: Push to main or start the workflow manually from the Actions tab. The workflow generates a debug keystore, configures Gradle, builds both variants, and publishes app-debug and app-release artifacts.
#project-structure
unstable-scriptorium/
├── app/ # Main application module
├── gradle/ # Gradle wrapper & version catalog
├── app/src/main/java/ # Compose UI, ViewModel, repositories, API and data models
├── app/src/main/res/ # Android resources and launcher logo
├── app/src/test/ # Unit, Robolectric and screenshot tests
├── .github/workflows/ # CI/CD build pipeline
└── index.html # Localized privacy policy page
#current-status
- Native Android application is active on the
mainbranch. - Turkish, English, and Russian application language flows are implemented.
- Debug and release APKs are built automatically in GitHub Actions.
- Release signing material remains outside the repository.
#roadmap
- Publish to APKPure
- Firebase dependency cleanup
- Comparative reading mode
- Turkish, English, and Russian localization
- Language-aware offline caching
- Custom Scriptorium application logo
- Google Play release (pending developer account)
- Turkish commentary layer for texts
- Expand the catalogue with additional classical and sacred texts
Scriptorium is designed to keep personal study data on the device. Notes, highlights, reading history, settings, and downloaded content are stored locally. The app does not include analytics, advertising, or tracking services. Network access is used for configured scripture sources, translation/content services, update checks, and optional location-based prayer times.
The full privacy policy is available in index.html and includes English, Turkish, Russian, Arabic, Hindi, Hebrew, and German.
#contributing
This is currently a solo personal project, but bug reports, suggestions, and feedback are always welcome — open an Issue any time.
Feel free to fork the repo and build your own version too. Some ideas to get you started:
- ▸ Build a philosophy library — Stoic, Confucian, or other classical texts instead of religious ones
- ▸ Translate the app into your own language before official support arrives — a native speaker's translation is often more accurate than a machine one (e.g. Japanese, before it's officially supported)
- ▸ Add a new sacred or classical text not currently included
- ▸ Extend the comparative reading mode with more viewing options or additional traditions
#built-with-ai-assistance
This project was developed with the help of AI tools:
- Claude (Anthropic)
- ChatGPT (OpenAI)
- Google AI Studio
- Gemini
#license
Licensed under the MIT License.
Made with a lot of coffee and GitHub Actions minutes.