# sunnybabu0088/bible-vault architecture

> Architecture diagram of the GitHub repository sunnybabu0088/bible-vault, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sunnybabu0088/bible-vault
- Repository: https://github.com/sunnybabu0088/bible-vault

## Overview

BibleVault pairs an offline-first Android Bible study app with a backend that brokers Scripture-grounded AI requests. The user journey starts in the app, where readers browse Scripture and use study, tracing, and annotation features; AI questions travel through the mobile repository to a protected backend, which queues and processes them before routing to an AI provider. Local Room storage supports Scripture, conversations, bookmarks, highlights, and notes, while preferences retain reading progress and appearance. README documents several capabilities whose detailed wiring was not sampled, so uncertain internal links are omitted.

Main entry points: [`app/src/main/java/com/biblevault/app/MainActivity.kt`](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/MainActivity.kt) (App entry & navigation), [`app/src/main/java/com/biblevault/app/data/local/BibleVaultDatabase.kt`](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/local/BibleVaultDatabase.kt) (Room database), [`app/src/main/java/com/biblevault/app/feature/bible/BibleScreen.kt`](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/bible/BibleScreen.kt) (Bible reader), [`app/src/main/java/com/biblevault/app/data/repository/RealAiRepositoryImpl.kt`](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/repository/RealAiRepositoryImpl.kt) (AI repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Android app"]
  node_app["App entry &amp; navigation<br/>[MainActivity.kt]"]
  node_ai_api["AI HTTP client<br/>[AiApiService.kt]"]
end

subgraph group_study["Scripture study"]
  node_reader["Bible reader<br/>[BibleScreen.kt]"]
  node_home["Home &amp; progress<br/>[HomeScreen.kt]"]
  node_explore["Study &amp; explore<br/>[ExploreScreen.kt]"]
  node_trace["Verse tracing"]
  node_annotations["Notes &amp; bookmarks<br/>[NotesScreen.kt]"]
  node_ask["AI assistant<br/>[AskScreen.kt]"]
end

subgraph group_storage["Local data"]
  node_offline["Bible repository"]
  node_importer["Scripture importer"]
  node_annotations_repo["Annotation repositories"]
  node_prefs["Reading preferences"]
  node_database[("Room database")]
  node_ai_repo["AI repository"]
end

subgraph group_backend["AI backend"]
  node_backend_server["API gateway<br/>[server.js]"]
  node_auth["Identity &amp; app checks<br/>[auth.js]"]
  node_queue["Request queue<br/>[aiQueue.js]"]
  node_agent["Bible agent<br/>[bibleAgent.js]"]
  node_search["Bible search<br/>[bibleSearch.js]"]
  node_router["Provider router<br/>[aiRouter.js]"]
end

subgraph group_providers["AI providers"]
  node_gemini{{"Google Gemini"}}
  node_groq{{"Groq"}}
end

node_user(("BibleVault user"))

node_user -->|"opens"| node_app
node_app -->|"navigates"| node_reader
node_app -->|"navigates"| node_home
node_app -->|"navigates"| node_explore
node_app -->|"navigates"| node_trace
node_app -->|"navigates"| node_annotations
node_app -->|"navigates"| node_ask
node_reader -->|"reads Scripture"| node_offline
node_importer -->|"imports datasets"| node_database
node_offline -->|"reads Scripture"| node_database
node_annotations -->|"manages annotations"| node_annotations_repo
node_annotations_repo -->|"persists annotations"| node_database
node_home -->|"reads progress"| node_prefs
node_reader -->|"saves progress"| node_prefs
node_ask -->|"sends questions"| node_ai_repo
node_ai_repo -->|"stores conversations"| node_database
node_ai_repo -->|"sends chat request"| node_ai_api
node_ai_api -->|"posts chat"| node_backend_server
node_backend_server -->|"verifies request"| node_auth
node_backend_server -->|"enqueues request"| node_queue
node_queue -->|"runs task"| node_agent
node_agent -->|"retrieves Scripture"| node_search
node_agent -->|"requests generation"| node_router
node_router -->|"generates answer"| node_gemini
node_router -.->|"fails over"| node_groq

click node_reader "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/bible/BibleScreen.kt"
click node_home "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/home/HomeScreen.kt"
click node_explore "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/explore/ExploreScreen.kt"
click node_trace "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/trace/TraceVerseScreen.kt"
click node_annotations "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/notes/NotesScreen.kt"
click node_ask "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/ask/AskScreen.kt"
click node_app "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/MainActivity.kt"
click node_offline "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/repository/OfflineBibleRepository.kt"
click node_importer "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/importer/BibleDataImporter.kt"
click node_annotations_repo "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/repository/BookmarkRepositoryImpl.kt"
click node_prefs "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/preferences/UserPreferencesRepository.kt"
click node_database "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/local/BibleVaultDatabase.kt"
click node_ai_repo "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/repository/RealAiRepositoryImpl.kt"
click node_ai_api "https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/remote/AiApiService.kt"
click node_backend_server "https://github.com/sunnybabu0088/bible-vault/blob/main/backend/server.js"
click node_auth "https://github.com/sunnybabu0088/bible-vault/blob/main/backend/middleware/auth.js"
click node_queue "https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/aiQueue.js"
click node_agent "https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/bibleAgent.js"
click node_search "https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/bibleSearch.js"
click node_router "https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/aiRouter.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_ai_api,node_user toneBlue
class node_reader,node_home,node_explore,node_trace,node_annotations,node_ask toneAmber
class node_offline,node_importer,node_annotations_repo,node_prefs,node_database,node_ai_repo toneMint
class node_backend_server,node_auth,node_queue,node_agent,node_search,node_router toneRose
class node_gemini,node_groq toneIndigo
```

## Components

### Android app

- [App entry & navigation](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/MainActivity.kt): `app/src/main/java/com/biblevault/app/MainActivity.kt`
- [AI HTTP client](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/remote/AiApiService.kt): `app/src/main/java/com/biblevault/app/data/remote/AiApiService.kt`

### Scripture study

- [Bible reader](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/bible/BibleScreen.kt): `app/src/main/java/com/biblevault/app/feature/bible/BibleScreen.kt`
- [Home & progress](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/home/HomeScreen.kt): `app/src/main/java/com/biblevault/app/feature/home/HomeScreen.kt`
- [Study & explore](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/explore/ExploreScreen.kt): `app/src/main/java/com/biblevault/app/feature/explore/ExploreScreen.kt`
- [Verse tracing](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/trace/TraceVerseScreen.kt): `app/src/main/java/com/biblevault/app/feature/trace/TraceVerseScreen.kt`
- [Notes & bookmarks](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/notes/NotesScreen.kt): `app/src/main/java/com/biblevault/app/feature/notes/NotesScreen.kt`
- [AI assistant](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/feature/ask/AskScreen.kt): `app/src/main/java/com/biblevault/app/feature/ask/AskScreen.kt`

### Local data

- [Bible repository](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/repository/OfflineBibleRepository.kt): `app/src/main/java/com/biblevault/app/data/repository/OfflineBibleRepository.kt`
- [Scripture importer](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/importer/BibleDataImporter.kt): `app/src/main/java/com/biblevault/app/data/importer/BibleDataImporter.kt`
- [Annotation repositories](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/repository/BookmarkRepositoryImpl.kt): `app/src/main/java/com/biblevault/app/data/repository/BookmarkRepositoryImpl.kt`
- [Reading preferences](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/preferences/UserPreferencesRepository.kt): `app/src/main/java/com/biblevault/app/data/preferences/UserPreferencesRepository.kt`
- [Room database](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/local/BibleVaultDatabase.kt): `app/src/main/java/com/biblevault/app/data/local/BibleVaultDatabase.kt`
- [AI repository](https://github.com/sunnybabu0088/bible-vault/blob/main/app/src/main/java/com/biblevault/app/data/repository/RealAiRepositoryImpl.kt): `app/src/main/java/com/biblevault/app/data/repository/RealAiRepositoryImpl.kt`

### AI backend

- [API gateway](https://github.com/sunnybabu0088/bible-vault/blob/main/backend/server.js): `backend/server.js`
- [Identity & app checks](https://github.com/sunnybabu0088/bible-vault/blob/main/backend/middleware/auth.js): `backend/middleware/auth.js`
- [Request queue](https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/aiQueue.js): `backend/services/aiQueue.js`
- [Bible agent](https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/bibleAgent.js): `backend/services/bibleAgent.js`
- [Bible search](https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/bibleSearch.js): `backend/services/bibleSearch.js`
- [Provider router](https://github.com/sunnybabu0088/bible-vault/blob/main/backend/services/aiRouter.js): `backend/services/aiRouter.js`

### AI providers

- **Google Gemini**
- **Groq**

### Other components

- **BibleVault user**

## Connections

- BibleVault user → App entry & navigation: opens
- App entry & navigation → Bible reader: navigates
- App entry & navigation → Home & progress: navigates
- App entry & navigation → Study & explore: navigates
- App entry & navigation → Verse tracing: navigates
- App entry & navigation → Notes & bookmarks: navigates
- App entry & navigation → AI assistant: navigates
- Bible reader → Bible repository: reads Scripture
- Scripture importer → Room database: imports datasets
- Bible repository → Room database: reads Scripture
- Notes & bookmarks → Annotation repositories: manages annotations
- Annotation repositories → Room database: persists annotations
- Home & progress → Reading preferences: reads progress
- Bible reader → Reading preferences: saves progress
- AI assistant → AI repository: sends questions
- AI repository → Room database: stores conversations
- AI repository → AI HTTP client: sends chat request
- AI HTTP client → API gateway: posts chat
- API gateway → Identity & app checks: verifies request
- API gateway → Request queue: enqueues request
- Request queue → Bible agent: runs task
- Bible agent → Bible search: retrieves Scripture
- Bible agent → Provider router: requests generation
- Provider router → Google Gemini: generates answer
- Provider router → Groq: fails over
