# girishchinchpure/bhashasetu architecture

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

- Interactive diagram: https://gitdiagram.com/girishchinchpure/bhashasetu
- Repository: https://github.com/girishchinchpure/bhashasetu

## Overview

BhashaSetu is an offline-first Android teaching assistant for Hindi-to-Ho classroom use. Teachers choose a feature from Home: text translation can be spoken aloud, speech workflows capture audio and provide translated output, and lesson-plan or worksheet flows prepare teaching materials for export. TranslationPipeline coordinates translation and the documented cache-first flow; Room also stores correction logs. The README documents several model and sync upgrades as future work, not implemented product components. Some activity-to-engine links rely on the SOURCE INDEX or README because excerpts omit their call sites.

Main entry points: [`app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java`](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java) (Home and routing), [`app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java`](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java) (Live voice), [`app/src/main/java/com/bhashasetu/app/engine/TranslationPipeline.java`](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/TranslationPipeline.java) (Translation pipeline), [`app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java`](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java) (Text translation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Teacher app"]
  node_home["Home and routing<br/>[HomeActivity.java]"]
  node_text_screen["Text translation"]
  node_speech_screen["Speech to text"]
  node_voice_screen["Live voice"]
  node_lesson_screen["Lesson plans"]
  node_worksheet_screen["Worksheet builder"]
end

subgraph group_speech["Speech features"]
  node_asr["Speech recognition<br/>[ASREngine.java]"]
  node_tts["Speech playback<br/>[TTSEngine.java]"]
  node_xlit["Indic transliteration"]
end

subgraph group_translation["Translation core"]
  node_pipeline["Translation pipeline"]
  node_nmt["NMT engine<br/>[NMTEngine.java]"]
end

subgraph group_materials["Teaching materials"]
  node_lesson_generator["Lesson generator"]
  node_material_translator["Material translation"]
  node_pdf_generator["PDF materials"]
  node_api["BhashaSetu API<br/>[BhashaSetuApi.java]"]
end

subgraph group_storage["Offline data"]
  node_database[("Room database<br/>[AppDatabase.java]")]
  node_cache[("Translation cache")]
  node_corrections[("Correction log")]
  node_correction_logger["Correction logger"]
end

node_teacher(("Teacher"))

node_teacher -->|"opens"| node_home
node_home -->|"opens"| node_text_screen
node_home -->|"opens"| node_voice_screen
node_home -->|"opens"| node_worksheet_screen
node_home -->|"offers"| node_lesson_screen
node_home -->|"reads counts"| node_database
node_text_screen -->|"translates with"| node_pipeline
node_text_screen -->|"speaks with"| node_tts
node_text_screen -->|"logs feedback"| node_correction_logger
node_speech_screen -->|"recognizes speech"| node_asr
node_speech_screen -->|"translates with"| node_pipeline
node_speech_screen -->|"speaks with"| node_tts
node_voice_screen -->|"recognizes speech"| node_asr
node_voice_screen -->|"transliterates with"| node_xlit
node_voice_screen -->|"translates with"| node_pipeline
node_voice_screen -->|"speaks with"| node_tts
node_lesson_screen -->|"generates with"| node_lesson_generator
node_lesson_generator -->|"translates with"| node_nmt
node_worksheet_screen -->|"uses"| node_material_translator
node_worksheet_screen -->|"exports with"| node_pdf_generator
node_worksheet_screen -->|"requests"| node_api
node_pipeline -->|"runs inference"| node_nmt
node_pipeline -->|"reads and writes"| node_cache
node_database -->|"defines"| node_cache
node_database -->|"defines"| node_corrections
node_correction_logger -->|"uses"| node_database
node_correction_logger -->|"records"| node_corrections

click node_home "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java"
click node_text_screen "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java"
click node_speech_screen "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/SpeechToTextActivity.java"
click node_voice_screen "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java"
click node_lesson_screen "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/LessonPlanActivity.java"
click node_worksheet_screen "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/WorksheetGenerationActivity.java"
click node_asr "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/ASREngine.java"
click node_tts "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/TTSEngine.java"
click node_xlit "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/IndicXlitEngine.java"
click node_pipeline "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/TranslationPipeline.java"
click node_nmt "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/NMTEngine.java"
click node_lesson_generator "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/curriculum/LessonPlanGenerator.java"
click node_material_translator "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/MaterialTranslator.java"
click node_pdf_generator "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/PdfMaterialGenerator.java"
click node_api "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/network/BhashaSetuApi.java"
click node_database "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/database/AppDatabase.java"
click node_cache "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/database/TranslationCacheEntity.java"
click node_corrections "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/database/CorrectionLogEntity.java"
click node_correction_logger "https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/CorrectionLogger.java"

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_home,node_text_screen,node_speech_screen,node_voice_screen,node_lesson_screen,node_worksheet_screen toneBlue
class node_asr,node_tts,node_xlit toneAmber
class node_pipeline,node_nmt toneMint
class node_lesson_generator,node_material_translator,node_pdf_generator,node_api toneRose
class node_database,node_cache,node_corrections,node_correction_logger,node_teacher toneIndigo
```

## Components

### Teacher app

- [Home and routing](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java): `app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java`
- [Text translation](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java): `app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java`
- [Speech to text](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/SpeechToTextActivity.java): `app/src/main/java/com/bhashasetu/app/ui/SpeechToTextActivity.java`
- [Live voice](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java): `app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java`
- [Lesson plans](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/LessonPlanActivity.java): `app/src/main/java/com/bhashasetu/app/ui/LessonPlanActivity.java`
- [Worksheet builder](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/ui/WorksheetGenerationActivity.java): `app/src/main/java/com/bhashasetu/app/ui/WorksheetGenerationActivity.java`

### Speech features

- [Speech recognition](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/ASREngine.java): `app/src/main/java/com/bhashasetu/app/engine/ASREngine.java`
- [Speech playback](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/TTSEngine.java): `app/src/main/java/com/bhashasetu/app/engine/TTSEngine.java`
- [Indic transliteration](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/IndicXlitEngine.java): `app/src/main/java/com/bhashasetu/app/engine/IndicXlitEngine.java`

### Translation core

- [Translation pipeline](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/TranslationPipeline.java): `app/src/main/java/com/bhashasetu/app/engine/TranslationPipeline.java`
- [NMT engine](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/NMTEngine.java): `app/src/main/java/com/bhashasetu/app/engine/NMTEngine.java`

### Teaching materials

- [Lesson generator](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/curriculum/LessonPlanGenerator.java): `app/src/main/java/com/bhashasetu/app/curriculum/LessonPlanGenerator.java`
- [Material translation](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/MaterialTranslator.java): `app/src/main/java/com/bhashasetu/app/engine/MaterialTranslator.java`
- [PDF materials](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/PdfMaterialGenerator.java): `app/src/main/java/com/bhashasetu/app/engine/PdfMaterialGenerator.java`
- [BhashaSetu API](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/network/BhashaSetuApi.java): `app/src/main/java/com/bhashasetu/app/network/BhashaSetuApi.java`

### Offline data

- [Room database](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/database/AppDatabase.java): `app/src/main/java/com/bhashasetu/app/database/AppDatabase.java`
- [Translation cache](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/database/TranslationCacheEntity.java): `app/src/main/java/com/bhashasetu/app/database/TranslationCacheEntity.java`
- [Correction log](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/database/CorrectionLogEntity.java): `app/src/main/java/com/bhashasetu/app/database/CorrectionLogEntity.java`
- [Correction logger](https://github.com/girishchinchpure/bhashasetu/blob/main/app/src/main/java/com/bhashasetu/app/engine/CorrectionLogger.java): `app/src/main/java/com/bhashasetu/app/engine/CorrectionLogger.java`

### Other components

- **Teacher**

## Connections

- Teacher → Home and routing: opens (evidence: `README.md`)
- Home and routing → Text translation: opens (evidence: `app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java`)
- Home and routing → Live voice: opens (evidence: `app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java`)
- Home and routing → Worksheet builder: opens (evidence: `app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java`)
- Home and routing → Lesson plans: offers (evidence: `README.md`)
- Home and routing → Room database: reads counts (evidence: `app/src/main/java/com/bhashasetu/app/ui/HomeActivity.java`)
- Text translation → Translation pipeline: translates with (evidence: `app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java`)
- Text translation → Speech playback: speaks with (evidence: `app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java`)
- Text translation → Correction logger: logs feedback (evidence: `app/src/main/java/com/bhashasetu/app/ui/TextToSpeechActivity.java`)
- Speech to text → Speech recognition: recognizes speech (evidence: `app/src/main/java/com/bhashasetu/app/ui/SpeechToTextActivity.java`)
- Speech to text → Translation pipeline: translates with (evidence: `app/src/main/java/com/bhashasetu/app/ui/SpeechToTextActivity.java`)
- Speech to text → Speech playback: speaks with (evidence: `app/src/main/java/com/bhashasetu/app/ui/SpeechToTextActivity.java`)
- Live voice → Speech recognition: recognizes speech (evidence: `app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java`)
- Live voice → Indic transliteration: transliterates with (evidence: `app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java`)
- Live voice → Translation pipeline: translates with (evidence: `app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java`)
- Live voice → Speech playback: speaks with (evidence: `app/src/main/java/com/bhashasetu/app/ui/VoiceToVoiceActivity.java`)
- Lesson plans → Lesson generator: generates with (evidence: `app/src/main/java/com/bhashasetu/app/ui/LessonPlanActivity.java`)
- Lesson generator → NMT engine: translates with (evidence: `app/src/main/java/com/bhashasetu/app/curriculum/LessonPlanGenerator.java`)
- Worksheet builder → Material translation: uses (evidence: `app/src/main/java/com/bhashasetu/app/ui/WorksheetGenerationActivity.java`)
- Worksheet builder → PDF materials: exports with (evidence: `app/src/main/java/com/bhashasetu/app/ui/WorksheetGenerationActivity.java`)
- Worksheet builder → BhashaSetu API: requests (evidence: `app/src/main/java/com/bhashasetu/app/ui/WorksheetGenerationActivity.java`)
- Translation pipeline → NMT engine: runs inference (evidence: `app/src/main/java/com/bhashasetu/app/engine/TranslationPipeline.java`)
- Translation pipeline → Translation cache: reads and writes (evidence: `README.md`)
- Room database → Translation cache: defines (evidence: `app/src/main/java/com/bhashasetu/app/database/AppDatabase.java`)
- Room database → Correction log: defines (evidence: `app/src/main/java/com/bhashasetu/app/database/AppDatabase.java`)
- Correction logger → Room database: uses (evidence: `app/src/main/java/com/bhashasetu/app/engine/CorrectionLogger.java`)
- Correction logger → Correction log: records (evidence: `app/src/main/java/com/bhashasetu/app/engine/CorrectionLogger.java`)
