# chaboutiabdo/mybac architecture

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

- Interactive diagram: https://gitdiagram.com/chaboutiabdo/mybac
- Repository: https://github.com/chaboutiabdo/mybac

## Overview

THE SMART is an Arabic-first BAC exam-preparation app. Students sign in, use a personalized daily question, submit an answer for server-side grading, and build progress through practice and revision. Other major branches cover past papers, curriculum videos, flashcards, AI tutoring, progress reports, and leaderboards; administrators manage learning content and users. The README documents backend grading and AI behavior, while sampled source confirms selected auth, data-fetching, and edge-function paths; links for unsampled feature internals are therefore limited.

Main entry points: [`src/integrations/supabase/client.ts`](https://github.com/chaboutiabdo/mybac/blob/main/src/integrations/supabase/client.ts) (Supabase Client), [`src/App.tsx`](https://github.com/chaboutiabdo/mybac/blob/main/src/App.tsx) (App Router), [`supabase/functions/gemini-chat/index.ts`](https://github.com/chaboutiabdo/mybac/blob/main/supabase/functions/gemini-chat/index.ts) (AI Edge Function), [`src/contexts/AuthContext.tsx`](https://github.com/chaboutiabdo/mybac/blob/main/src/contexts/AuthContext.tsx) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_app_entry["App Router<br/>[App.tsx]"]
  node_auth["Authentication<br/>[AuthContext.tsx]"]
  node_login["Login<br/>[Login.tsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.tsx]"]
end

subgraph group_study["Study Features"]
  node_daily_card["Daily Question"]
  node_daily_hook["Daily Question Hook"]
  node_practice["Quiz Practice<br/>[Practice.tsx]"]
  node_exams["BAC Papers<br/>[Exams.tsx]"]
  node_videos["Video Lessons<br/>[Videos.tsx]"]
  node_flashcards["Flashcards<br/>[Flashcards.tsx]"]
  node_revision["Daily Revision"]
  node_ai_tutor["AI Tutor<br/>[LearnAI.tsx]"]
end

subgraph group_progress["Progress"]
  node_mistakes["Mistake Review<br/>[MyMistakes.tsx]"]
  node_reports["Study Reports<br/>[WeeklyReport.tsx]"]
  node_leaderboard["Leaderboard<br/>[Leaderboard.tsx]"]
end

subgraph group_platform["Backend Services"]
  node_supabase_client["Supabase Client<br/>[client.ts]"]
  node_supabase[("Supabase Platform")]
  node_gemini_fn["AI Edge Function<br/>[index.ts]"]
end

subgraph group_admin["Administration"]
  node_admin_pages["Admin Management<br/>[AdminDashboard.tsx]"]
end

node_student(("Student"))
node_gemini(("Google Gemini"))

node_student -->|"opens app"| node_app_entry
node_app_entry -->|"routes"| node_login
node_app_entry -->|"routes"| node_dashboard
node_app_entry -->|"provides auth"| node_auth
node_login -->|"signs in"| node_auth
node_auth -->|"auth and profile"| node_supabase_client
node_dashboard -->|"renders"| node_daily_card
node_daily_card -->|"uses"| node_daily_hook
node_daily_hook -->|"loads and submits"| node_supabase_client
node_practice -->|"quiz data"| node_supabase_client
node_exams -->|"paper data"| node_supabase_client
node_videos -->|"lesson data"| node_supabase_client
node_flashcards -->|"deck data"| node_supabase_client
node_revision -->|"loads and records"| node_supabase_client
node_revision -->|"combines review"| node_mistakes
node_reports -->|"report data"| node_supabase_client
node_leaderboard -->|"ranking data"| node_supabase_client
node_ai_tutor -->|"requests help"| node_gemini_fn
node_gemini_fn -->|"reads and writes"| node_supabase
node_gemini_fn -->|"generates answers"| node_gemini
node_admin_pages -->|"manages content"| node_supabase_client
node_supabase_client -->|"queries"| node_supabase

click node_app_entry "https://github.com/chaboutiabdo/mybac/blob/main/src/App.tsx"
click node_auth "https://github.com/chaboutiabdo/mybac/blob/main/src/contexts/AuthContext.tsx"
click node_login "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Login.tsx"
click node_dashboard "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Dashboard.tsx"
click node_daily_card "https://github.com/chaboutiabdo/mybac/blob/main/src/components/dashboard/DailyQuestionCard.tsx"
click node_daily_hook "https://github.com/chaboutiabdo/mybac/blob/main/src/hooks/useDailyQuestion.ts"
click node_practice "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Practice.tsx"
click node_exams "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Exams.tsx"
click node_videos "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Videos.tsx"
click node_flashcards "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Flashcards.tsx"
click node_revision "https://github.com/chaboutiabdo/mybac/blob/main/src/hooks/useTodaysRevision.ts"
click node_ai_tutor "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/LearnAI.tsx"
click node_mistakes "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/MyMistakes.tsx"
click node_reports "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/WeeklyReport.tsx"
click node_leaderboard "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Leaderboard.tsx"
click node_admin_pages "https://github.com/chaboutiabdo/mybac/blob/main/src/pages/AdminDashboard.tsx"
click node_supabase_client "https://github.com/chaboutiabdo/mybac/blob/main/src/integrations/supabase/client.ts"
click node_gemini_fn "https://github.com/chaboutiabdo/mybac/blob/main/supabase/functions/gemini-chat/index.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_app_entry,node_auth,node_login,node_dashboard toneBlue
class node_daily_card,node_daily_hook,node_practice,node_exams,node_videos,node_flashcards,node_revision,node_ai_tutor toneAmber
class node_mistakes,node_reports,node_leaderboard toneMint
class node_supabase_client,node_supabase,node_gemini_fn toneRose
class node_admin_pages,node_student,node_gemini toneIndigo
```

## Components

### Application

- [App Router](https://github.com/chaboutiabdo/mybac/blob/main/src/App.tsx): `src/App.tsx`
- [Authentication](https://github.com/chaboutiabdo/mybac/blob/main/src/contexts/AuthContext.tsx): `src/contexts/AuthContext.tsx`
- [Login](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Login.tsx): `src/pages/Login.tsx`
- [Dashboard](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Dashboard.tsx): `src/pages/Dashboard.tsx`

### Study Features

- [Daily Question](https://github.com/chaboutiabdo/mybac/blob/main/src/components/dashboard/DailyQuestionCard.tsx): `src/components/dashboard/DailyQuestionCard.tsx`
- [Daily Question Hook](https://github.com/chaboutiabdo/mybac/blob/main/src/hooks/useDailyQuestion.ts): `src/hooks/useDailyQuestion.ts`
- [Quiz Practice](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Practice.tsx): `src/pages/Practice.tsx`
- [BAC Papers](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Exams.tsx): `src/pages/Exams.tsx`
- [Video Lessons](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Videos.tsx): `src/pages/Videos.tsx`
- [Flashcards](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Flashcards.tsx): `src/pages/Flashcards.tsx`
- [Daily Revision](https://github.com/chaboutiabdo/mybac/blob/main/src/hooks/useTodaysRevision.ts): `src/hooks/useTodaysRevision.ts`
- [AI Tutor](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/LearnAI.tsx): `src/pages/LearnAI.tsx`

### Progress

- [Mistake Review](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/MyMistakes.tsx): `src/pages/MyMistakes.tsx`
- [Study Reports](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/WeeklyReport.tsx): `src/pages/WeeklyReport.tsx`
- [Leaderboard](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/Leaderboard.tsx): `src/pages/Leaderboard.tsx`

### Backend Services

- [Supabase Client](https://github.com/chaboutiabdo/mybac/blob/main/src/integrations/supabase/client.ts): `src/integrations/supabase/client.ts`
- **Supabase Platform**
- [AI Edge Function](https://github.com/chaboutiabdo/mybac/blob/main/supabase/functions/gemini-chat/index.ts): `supabase/functions/gemini-chat/index.ts`

### Administration

- [Admin Management](https://github.com/chaboutiabdo/mybac/blob/main/src/pages/AdminDashboard.tsx): `src/pages/AdminDashboard.tsx`

### Other components

- **Student**
- **Google Gemini**

## Connections

- Student → App Router: opens app
- App Router → Login: routes
- App Router → Dashboard: routes
- App Router → Authentication: provides auth
- Login → Authentication: signs in
- Authentication → Supabase Client: auth and profile
- Dashboard → Daily Question: renders
- Daily Question → Daily Question Hook: uses
- Daily Question Hook → Supabase Client: loads and submits
- Quiz Practice → Supabase Client: quiz data
- BAC Papers → Supabase Client: paper data
- Video Lessons → Supabase Client: lesson data
- Flashcards → Supabase Client: deck data
- Daily Revision → Supabase Client: loads and records
- Daily Revision → Mistake Review: combines review
- Study Reports → Supabase Client: report data
- Leaderboard → Supabase Client: ranking data
- AI Tutor → AI Edge Function: requests help
- AI Edge Function → Supabase Platform: reads and writes
- AI Edge Function → Google Gemini: generates answers
- Admin Management → Supabase Client: manages content
- Supabase Client → Supabase Platform: queries
