# akshatbhati31/sharanga architecture

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

- Interactive diagram: https://gitdiagram.com/akshatbhati31/sharanga
- Repository: https://github.com/akshatbhati31/sharanga

## Overview

DyslexiMate is a child-focused dyslexia learning-support app. A parent or child enters through the frontend, selects a learner, practices activities, and can review progress and discover resources; activity history and skill estimates support adaptive recommendations. The graph preserves the documented activity, parent-insight, reading-progress, AI, and resource-discovery branches. Some service internals are unsampled, so their links are limited to indexed imports or README claims; optional integrations are marked dashed.

Main entry points: [`src/ui/dashboardController.ts`](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/dashboardController.ts) (Learning dashboard), [`Front_end/app.ts`](https://github.com/akshatbhati31/sharanga/blob/main/Front_end/app.ts) (Web application), [`src/services/profileService.ts`](https://github.com/akshatbhati31/sharanga/blob/main/src/services/profileService.ts) (Child profiles), [`src/services/authService.ts`](https://github.com/akshatbhati31/sharanga/blob/main/src/services/authService.ts) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Learning experience"]
  node_frontend["Web application<br/>[app.ts]"]
  node_controller["App controller<br/>[appController.ts]"]
  node_dashboard["Learning dashboard"]
  node_runner["Activity runner"]
  node_lettermirror["B/D letter practice"]
  node_parentview["Parent insights"]
  node_resourceview["Resource finder"]
  node_chartview["Progress charts"]
end

subgraph group_learning["Learning and progress"]
  node_catalog["Activity catalog<br/>[activityCatalog.ts]"]
  node_tracker["Activity tracking"]
  node_adaptive["Recommendations"]
  node_skillmodel["Skill model<br/>[skillModel.ts]"]
  node_pathservice["Learning paths"]
  node_chartservice["Reading progress"]
  node_speech["Speech practice<br/>[speechService.ts]"]
  node_storyshelf["Story shelf"]
end

subgraph group_accounts["Profiles and persistence"]
  node_auth["Authentication<br/>[authService.ts]"]
  node_profiles["Child profiles<br/>[profileService.ts]"]
  node_storage[("Local storage<br/>[storageService.ts]")]
  node_supabaseclient["Supabase client<br/>[supabase.ts]"]
end

subgraph group_integrations["AI and discovery"]
  node_ai["AI activity service"]
  node_aiworker["AI activity handler<br/>[aiHandler.js]"]
  node_aiview["AI generation route"]
  node_tinyservice["TinyFish service<br/>[tinyfishService.ts]"]
  node_tinyroute["Resource search route<br/>[search.ts]"]
  node_tinyworker["TinyFish handler<br/>[tinyfishHandler.ts]"]
end

node_learner(("Parent or child"))
node_tinyfish{{"TinyFish service"}}

node_learner -->|"uses"| node_frontend
node_frontend -->|"renders activities"| node_catalog
node_frontend -->|"records attempts"| node_tracker
node_frontend -->|"authenticates"| node_auth
node_frontend -->|"loads profiles"| node_profiles
node_frontend -->|"loads paths"| node_pathservice
node_frontend -->|"loads progress"| node_chartservice
node_frontend -->|"searches resources"| node_tinyservice
node_frontend -->|"requests activities"| node_ai
node_controller -->|"starts"| node_dashboard
node_dashboard -->|"renders"| node_parentview
node_dashboard -->|"renders"| node_resourceview
node_dashboard -->|"renders"| node_chartview
node_dashboard -->|"opens"| node_runner
node_dashboard -->|"opens"| node_lettermirror
node_dashboard -->|"reads activity"| node_tracker
node_dashboard -->|"reads profiles"| node_profiles
node_dashboard -->|"reads paths"| node_pathservice
node_dashboard -->|"gets recommendations"| node_adaptive
node_dashboard -->|"reads progress"| node_chartservice
node_dashboard -->|"uses speech"| node_speech
node_adaptive -->|"uses skill registry"| node_skillmodel
node_auth -->|"uses local data"| node_storage
node_auth -->|"uses configured client"| node_supabaseclient
node_profiles -->|"uses local data"| node_storage
node_profiles -->|"queries profiles"| node_supabaseclient
node_ai -.->|"requests generation"| node_aiview
node_aiview -->|"delegates"| node_aiworker
node_tinyservice -.->|"requests search"| node_tinyroute
node_tinyroute -->|"delegates"| node_tinyworker
node_tinyworker -.->|"searches"| node_tinyfish
node_storyshelf -.->|"provides stories"| node_learner

click node_frontend "https://github.com/akshatbhati31/sharanga/blob/main/Front_end/app.ts"
click node_controller "https://github.com/akshatbhati31/sharanga/blob/main/src/ui/appController.ts"
click node_dashboard "https://github.com/akshatbhati31/sharanga/blob/main/src/ui/dashboardController.ts"
click node_runner "https://github.com/akshatbhati31/sharanga/blob/main/src/ui/activityRunnerModal.ts"
click node_lettermirror "https://github.com/akshatbhati31/sharanga/blob/main/src/ui/letterMirrorBDModal.ts"
click node_parentview "https://github.com/akshatbhati31/sharanga/blob/main/src/ui/parentDashboardView.ts"
click node_resourceview "https://github.com/akshatbhati31/sharanga/blob/main/src/ui/resourceFinderView.ts"
click node_catalog "https://github.com/akshatbhati31/sharanga/blob/main/src/services/activityCatalog.ts"
click node_tracker "https://github.com/akshatbhati31/sharanga/blob/main/src/services/activityTrackerService.ts"
click node_adaptive "https://github.com/akshatbhati31/sharanga/blob/main/src/services/recommendationEngine.ts"
click node_skillmodel "https://github.com/akshatbhati31/sharanga/blob/main/src/services/skillModel.ts"
click node_pathservice "https://github.com/akshatbhati31/sharanga/blob/main/src/services/learningPathService.ts"
click node_chartservice "https://github.com/akshatbhati31/sharanga/blob/main/src/services/readingChartService.ts"
click node_chartview "https://github.com/akshatbhati31/sharanga/blob/main/src/ui/readingConfidenceChart.ts"
click node_speech "https://github.com/akshatbhati31/sharanga/blob/main/src/services/speechService.ts"
click node_auth "https://github.com/akshatbhati31/sharanga/blob/main/src/services/authService.ts"
click node_profiles "https://github.com/akshatbhati31/sharanga/blob/main/src/services/profileService.ts"
click node_storage "https://github.com/akshatbhati31/sharanga/blob/main/src/services/storageService.ts"
click node_supabaseclient "https://github.com/akshatbhati31/sharanga/blob/main/src/lib/supabase.ts"
click node_ai "https://github.com/akshatbhati31/sharanga/blob/main/src/services/aiActivityService.ts"
click node_aiworker "https://github.com/akshatbhati31/sharanga/blob/main/src/worker/aiHandler.js"
click node_aiview "https://github.com/akshatbhati31/sharanga/blob/main/api/ai/generate-activity.ts"
click node_tinyservice "https://github.com/akshatbhati31/sharanga/blob/main/src/services/tinyfishService.ts"
click node_tinyroute "https://github.com/akshatbhati31/sharanga/blob/main/api/tinyfish/search.ts"
click node_tinyworker "https://github.com/akshatbhati31/sharanga/blob/main/src/worker/tinyfishHandler.ts"
click node_storyshelf "https://github.com/akshatbhati31/sharanga/blob/main/src/services/storyShelfService.ts"

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_frontend,node_controller,node_dashboard,node_runner,node_lettermirror,node_parentview,node_resourceview,node_chartview toneBlue
class node_catalog,node_tracker,node_adaptive,node_skillmodel,node_pathservice,node_chartservice,node_speech,node_storyshelf toneAmber
class node_auth,node_profiles,node_storage,node_supabaseclient toneMint
class node_ai,node_aiworker,node_aiview,node_tinyservice,node_tinyroute,node_tinyworker toneRose
class node_learner,node_tinyfish toneIndigo
```

## Components

### Learning experience

- [Web application](https://github.com/akshatbhati31/sharanga/blob/main/Front_end/app.ts): `Front_end/app.ts`
- [App controller](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/appController.ts): `src/ui/appController.ts`
- [Learning dashboard](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/dashboardController.ts): `src/ui/dashboardController.ts`
- [Activity runner](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/activityRunnerModal.ts): `src/ui/activityRunnerModal.ts`
- [B/D letter practice](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/letterMirrorBDModal.ts): `src/ui/letterMirrorBDModal.ts`
- [Parent insights](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/parentDashboardView.ts): `src/ui/parentDashboardView.ts`
- [Resource finder](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/resourceFinderView.ts): `src/ui/resourceFinderView.ts`
- [Progress charts](https://github.com/akshatbhati31/sharanga/blob/main/src/ui/readingConfidenceChart.ts): `src/ui/readingConfidenceChart.ts`

### Learning and progress

- [Activity catalog](https://github.com/akshatbhati31/sharanga/blob/main/src/services/activityCatalog.ts): `src/services/activityCatalog.ts`
- [Activity tracking](https://github.com/akshatbhati31/sharanga/blob/main/src/services/activityTrackerService.ts): `src/services/activityTrackerService.ts`
- [Recommendations](https://github.com/akshatbhati31/sharanga/blob/main/src/services/recommendationEngine.ts): `src/services/recommendationEngine.ts`
- [Skill model](https://github.com/akshatbhati31/sharanga/blob/main/src/services/skillModel.ts): `src/services/skillModel.ts`
- [Learning paths](https://github.com/akshatbhati31/sharanga/blob/main/src/services/learningPathService.ts): `src/services/learningPathService.ts`
- [Reading progress](https://github.com/akshatbhati31/sharanga/blob/main/src/services/readingChartService.ts): `src/services/readingChartService.ts`
- [Speech practice](https://github.com/akshatbhati31/sharanga/blob/main/src/services/speechService.ts): `src/services/speechService.ts`
- [Story shelf](https://github.com/akshatbhati31/sharanga/blob/main/src/services/storyShelfService.ts): `src/services/storyShelfService.ts`

### Profiles and persistence

- [Authentication](https://github.com/akshatbhati31/sharanga/blob/main/src/services/authService.ts): `src/services/authService.ts`
- [Child profiles](https://github.com/akshatbhati31/sharanga/blob/main/src/services/profileService.ts): `src/services/profileService.ts`
- [Local storage](https://github.com/akshatbhati31/sharanga/blob/main/src/services/storageService.ts): `src/services/storageService.ts`
- [Supabase client](https://github.com/akshatbhati31/sharanga/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`

### AI and discovery

- [AI activity service](https://github.com/akshatbhati31/sharanga/blob/main/src/services/aiActivityService.ts): `src/services/aiActivityService.ts`
- [AI activity handler](https://github.com/akshatbhati31/sharanga/blob/main/src/worker/aiHandler.js): `src/worker/aiHandler.js`
- [AI generation route](https://github.com/akshatbhati31/sharanga/blob/main/api/ai/generate-activity.ts): `api/ai/generate-activity.ts`
- [TinyFish service](https://github.com/akshatbhati31/sharanga/blob/main/src/services/tinyfishService.ts): `src/services/tinyfishService.ts`
- [Resource search route](https://github.com/akshatbhati31/sharanga/blob/main/api/tinyfish/search.ts): `api/tinyfish/search.ts`
- [TinyFish handler](https://github.com/akshatbhati31/sharanga/blob/main/src/worker/tinyfishHandler.ts): `src/worker/tinyfishHandler.ts`

### Other components

- **Parent or child**
- **TinyFish service**

## Connections

- Parent or child → Web application: uses (evidence: `README.md`)
- Web application → Activity catalog: renders activities (evidence: `Front_end/app.ts`)
- Web application → Activity tracking: records attempts (evidence: `Front_end/app.ts`)
- Web application → Authentication: authenticates (evidence: `Front_end/app.ts`)
- Web application → Child profiles: loads profiles (evidence: `Front_end/app.ts`)
- Web application → Learning paths: loads paths (evidence: `Front_end/app.ts`)
- Web application → Reading progress: loads progress (evidence: `Front_end/app.ts`)
- Web application → TinyFish service: searches resources (evidence: `Front_end/app.ts`)
- Web application → AI activity service: requests activities (evidence: `Front_end/app.ts`)
- App controller → Learning dashboard: starts
- Learning dashboard → Parent insights: renders (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Resource finder: renders (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Progress charts: renders (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Activity runner: opens (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → B/D letter practice: opens (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Activity tracking: reads activity (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Child profiles: reads profiles (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Learning paths: reads paths (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Recommendations: gets recommendations (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Reading progress: reads progress (evidence: `src/ui/dashboardController.ts`)
- Learning dashboard → Speech practice: uses speech (evidence: `src/ui/dashboardController.ts`)
- Recommendations → Skill model: uses skill registry (evidence: `src/services/recommendationEngine.ts`)
- Authentication → Local storage: uses local data (evidence: `src/services/authService.ts`)
- Authentication → Supabase client: uses configured client (evidence: `src/services/authService.ts`)
- Child profiles → Local storage: uses local data (evidence: `src/services/profileService.ts`)
- Child profiles → Supabase client: queries profiles (evidence: `src/services/profileService.ts`)
- AI activity service → AI generation route: requests generation
- AI generation route → AI activity handler: delegates (evidence: `api/ai/generate-activity.ts`)
- TinyFish service → Resource search route: requests search
- Resource search route → TinyFish handler: delegates (evidence: `api/tinyfish/search.ts`)
- TinyFish handler → TinyFish service: searches
- Story shelf → Parent or child: provides stories (evidence: `README.md`)
