# sitaramayyavattikula-sourc/ecet-prep-hub architecture

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

- Interactive diagram: https://gitdiagram.com/sitaramayyavattikula-sourc/ecet-prep-hub
- Repository: https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub

## Overview

This is a Flask-based ECET preparation portal for students, with learning materials, quizzes and exams, AI study support, and account, leaderboard, and admin features. The main workflow is a student entering the portal, choosing study content or an assessment, submitting answers, and viewing results; AI chat and generated exams form a separate study branch. Routes coordinate the web workflows, while the database module provides persistent state. The README is empty, and sampled routes are partial, so some feature-to-storage wiring is omitted where it cannot be verified.

Main entry points: [`app/routes.py`](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/app/routes.py) (Flask routes), [`templates/quiz.html`](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/quiz.html) (Quiz interface), [`templates/subject_notes.html`](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/subject_notes.html) (Resource browsing), [`templates/ai_exam_setup.html`](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/ai_exam_setup.html) (AI exam workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Portal and accounts"]
  node_routes["Flask routes<br/>[routes.py]"]
  node_templates["Portal pages"]
  node_account["Accounts and profiles<br/>[register.html]"]
  node_db[("Application database<br/>[database.py]")]
end

subgraph group_study["Learning resources"]
  node_notes["Subject notes"]
  node_papers["Past papers"]
  node_resources["Resource browsing<br/>[subject_notes.html]"]
end

subgraph group_assessment["Quizzes and exams"]
  node_quizdata["Quiz question bank<br/>[quiz_questions.py]"]
  node_quizui["Quiz interface<br/>[quiz.html]"]
  node_palette["Question navigation<br/>[palette.js]"]
  node_timer["Exam timer<br/>[timer.js]"]
  node_results["Scores and results<br/>[quiz_result.html]"]
  node_ai_exam["AI exam workflow<br/>[ai_exam_setup.html]"]
end

subgraph group_support["AI and administration"]
  node_ai_pages["AI study pages<br/>[ai_tutor.html]"]
  node_chat_client["AI chat client<br/>[ai_assistant.js]"]
  node_admin["Admin tools<br/>[admin.html]"]
  node_contact["Contact messages<br/>[contact.html]"]
  node_leaderboard["Leaderboard<br/>[leaderboard.html]"]
end

node_student(("Student"))
node_gemini{{"Gemini API"}}

node_student -->|"uses portal"| node_routes
node_routes -->|"renders pages"| node_templates
node_routes -->|"handles accounts"| node_account
node_routes -->|"reads and writes"| node_db
node_routes -->|"serves resources"| node_resources
node_resources -->|"links to notes"| node_notes
node_resources -->|"links to papers"| node_papers
node_routes -->|"serves quiz"| node_quizui
node_routes -->|"loads questions"| node_quizdata
node_quizui -->|"tracks navigation"| node_palette
node_quizui -->|"times attempt"| node_timer
node_quizui -->|"submits answers"| node_routes
node_routes -->|"returns results"| node_results
node_routes -->|"serves exam flow"| node_ai_exam
node_ai_exam -->|"requests exam"| node_routes
node_routes -->|"serves AI pages"| node_ai_pages
node_ai_pages -->|"hosts chat"| node_chat_client
node_chat_client -->|"posts chat"| node_routes
node_routes -.->|"generates responses"| node_gemini
node_routes -->|"serves admin tools"| node_admin
node_routes -->|"handles contact"| node_contact
node_routes -->|"serves rankings"| node_leaderboard

click node_routes "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/app/routes.py"
click node_templates "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/tree/main/templates"
click node_account "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/register.html"
click node_db "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/database/database.py"
click node_notes "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/tree/main/static/pdfs/notes"
click node_papers "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/tree/main/static/pdfs/papers"
click node_resources "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/subject_notes.html"
click node_quizdata "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/app/quiz_questions.py"
click node_quizui "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/quiz.html"
click node_palette "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/static/js/palette.js"
click node_timer "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/static/js/timer.js"
click node_results "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/quiz_result.html"
click node_ai_exam "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/ai_exam_setup.html"
click node_ai_pages "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/ai_tutor.html"
click node_chat_client "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/static/js/ai_assistant.js"
click node_admin "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/admin.html"
click node_contact "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/contact.html"
click node_leaderboard "https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/leaderboard.html"

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_routes,node_templates,node_account,node_db toneBlue
class node_notes,node_papers,node_resources toneAmber
class node_quizdata,node_quizui,node_palette,node_timer,node_results,node_ai_exam,node_gemini toneMint
class node_ai_pages,node_chat_client,node_admin,node_contact,node_leaderboard toneRose
class node_student toneIndigo
```

## Components

### Portal and accounts

- [Flask routes](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/app/routes.py): `app/routes.py`
- [Portal pages](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/tree/main/templates): `templates`
- [Accounts and profiles](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/register.html): `templates/register.html`
- [Application database](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/database/database.py): `database/database.py`

### Learning resources

- [Subject notes](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/tree/main/static/pdfs/notes): `static/pdfs/notes`
- [Past papers](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/tree/main/static/pdfs/papers): `static/pdfs/papers`
- [Resource browsing](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/subject_notes.html): `templates/subject_notes.html`

### Quizzes and exams

- [Quiz question bank](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/app/quiz_questions.py): `app/quiz_questions.py`
- [Quiz interface](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/quiz.html): `templates/quiz.html`
- [Question navigation](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/static/js/palette.js): `static/js/palette.js`
- [Exam timer](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/static/js/timer.js): `static/js/timer.js`
- [Scores and results](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/quiz_result.html): `templates/quiz_result.html`
- [AI exam workflow](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/ai_exam_setup.html): `templates/ai_exam_setup.html`

### AI and administration

- [AI study pages](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/ai_tutor.html): `templates/ai_tutor.html`
- [AI chat client](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/static/js/ai_assistant.js): `static/js/ai_assistant.js`
- [Admin tools](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/admin.html): `templates/admin.html`
- [Contact messages](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/contact.html): `templates/contact.html`
- [Leaderboard](https://github.com/sitaramayyavattikula-sourc/ecet-prep-hub/blob/main/templates/leaderboard.html): `templates/leaderboard.html`

### Other components

- **Student**
- **Gemini API**

## Connections

- Student → Flask routes: uses portal
- Flask routes → Portal pages: renders pages
- Flask routes → Accounts and profiles: handles accounts
- Flask routes → Application database: reads and writes
- Flask routes → Resource browsing: serves resources
- Resource browsing → Subject notes: links to notes
- Resource browsing → Past papers: links to papers
- Flask routes → Quiz interface: serves quiz
- Flask routes → Quiz question bank: loads questions
- Quiz interface → Question navigation: tracks navigation
- Quiz interface → Exam timer: times attempt
- Quiz interface → Flask routes: submits answers
- Flask routes → Scores and results: returns results
- Flask routes → AI exam workflow: serves exam flow
- AI exam workflow → Flask routes: requests exam
- Flask routes → AI study pages: serves AI pages
- AI study pages → AI chat client: hosts chat
- AI chat client → Flask routes: posts chat
- Flask routes → Gemini API: generates responses
- Flask routes → Admin tools: serves admin tools
- Flask routes → Contact messages: handles contact
- Flask routes → Leaderboard: serves rankings
