# pranaypalwekar/studyai-planner architecture

> Architecture diagram of the GitHub repository pranaypalwekar/studyai-planner, 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/pranaypalwekar/studyai-planner
- Repository: https://github.com/pranaypalwekar/studyai-planner

## Overview

StudyAI Planner is a student study-planning application: learners sign in, organize study work, use learning tools, and review progress. The frontend route shell exposes planner, focus, tutoring, classroom, notes, and flashcard experiences; the FastAPI entry point mounts corresponding backend capabilities, with MongoDB initialization and optional Google and Gemini integrations. The tree contains both Flask and FastAPI backends; the sampled `backend/main.py` is the FastAPI entry point, while several feature-router implementations and page-to-API calls were not sampled, so uncertain wiring is omitted.

Main entry points: [`backend/main.py`](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/main.py) (FastAPI service), [`frontend/src/App.jsx`](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/App.jsx) (Web app routes), [`frontend/src/pages/Flashcards.jsx`](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Flashcards.jsx) (Flashcards), [`backend/routes/auth_new.py`](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/auth_new.py) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Student experience"]
  node_webapp["Web app routes<br/>[App.jsx]"]
  node_login["Sign in<br/>[Login.jsx]"]
  node_planner["Study planner<br/>[Planner.jsx]"]
  node_focus["Focus mode<br/>[FocusMode.jsx]"]
  node_chat["AI tutor<br/>[AIChat.jsx]"]
  node_classroom_ui["Classroom<br/>[Classroom.jsx]"]
  node_flashcards_ui["Flashcards<br/>[Flashcards.jsx]"]
  node_analytics["Analytics<br/>[Analytics.jsx]"]
  node_notes["Notes generator<br/>[NotesGenerator.jsx]"]
end

subgraph group_api["API services"]
  node_api["FastAPI service<br/>[main.py]"]
  node_auth["Authentication<br/>[auth_new.py]"]
end

subgraph group_learning["Learning features"]
  node_study["Study sessions<br/>[study_new.py]"]
  node_pomodoro["Pomodoro timer<br/>[pomodoro_new.py]"]
  node_tutor["Tutor and AI query<br/>[ai_tutor_new.py]"]
  node_classroom["Classroom sync<br/>[classroom_new.py]"]
  node_flashcards["Flashcard service<br/>[flashcards_new.py]"]
  node_meet["Meet scheduling<br/>[meet_new.py]"]
  node_files["File query<br/>[files_new.py]"]
  node_predictor["Score predictor<br/>[predictor.py]"]
end

subgraph group_integrations["Data and integrations"]
  node_database_init["Database setup<br/>[models.py]"]
  node_mongo[("MongoDB")]
  node_gemini["Google Gemini"]
  node_google_classroom["Google Classroom"]
  node_google_meet["Google Meet"]
end

node_student(("Student"))

node_student -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_login
node_webapp -->|"routes to"| node_planner
node_webapp -->|"routes to"| node_focus
node_webapp -->|"routes to"| node_chat
node_webapp -->|"routes to"| node_classroom_ui
node_webapp -->|"routes to"| node_flashcards_ui
node_webapp -->|"routes to"| node_analytics
node_webapp -->|"routes to"| node_notes
node_api -->|"mounts at /auth"| node_auth
node_api -->|"mounts at /study"| node_study
node_api -->|"mounts at /pomodoro"| node_pomodoro
node_api -->|"mounts at /ai"| node_tutor
node_api -->|"mounts at /classroom"| node_classroom
node_api -->|"mounts at /flashcards"| node_flashcards
node_api -->|"mounts at /meet"| node_meet
node_api -->|"mounts at /file and /ai"| node_files
node_api -->|"initializes on startup"| node_database_init
node_database_init -->|"initializes"| node_mongo
node_auth -->|"reads and writes users"| node_mongo
node_flashcards_ui -->|"requests API"| node_api
node_classroom -.->|"syncs data"| node_google_classroom
node_meet -.->|"integrates"| node_google_meet
node_tutor -.->|"requests tutoring"| node_gemini

click node_webapp "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/App.jsx"
click node_login "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Login.jsx"
click node_planner "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Planner.jsx"
click node_focus "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/FocusMode.jsx"
click node_chat "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/AIChat.jsx"
click node_classroom_ui "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Classroom.jsx"
click node_flashcards_ui "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Flashcards.jsx"
click node_analytics "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Analytics.jsx"
click node_notes "https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/NotesGenerator.jsx"
click node_api "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/main.py"
click node_auth "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/auth_new.py"
click node_study "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/study_new.py"
click node_pomodoro "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/pomodoro_new.py"
click node_tutor "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/ai_tutor_new.py"
click node_classroom "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/classroom_new.py"
click node_flashcards "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/flashcards_new.py"
click node_meet "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/meet_new.py"
click node_files "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/files_new.py"
click node_predictor "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/ml/predictor.py"
click node_database_init "https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/models.py"

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_webapp,node_login,node_planner,node_focus,node_chat,node_classroom_ui,node_flashcards_ui,node_analytics,node_notes toneBlue
class node_api,node_auth toneAmber
class node_study,node_pomodoro,node_tutor,node_classroom,node_flashcards,node_meet,node_files,node_predictor toneMint
class node_database_init,node_mongo,node_gemini,node_google_classroom,node_google_meet toneRose
class node_student toneIndigo
```

## Components

### Student experience

- [Web app routes](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Sign in](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`
- [Study planner](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Planner.jsx): `frontend/src/pages/Planner.jsx`
- [Focus mode](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/FocusMode.jsx): `frontend/src/pages/FocusMode.jsx`
- [AI tutor](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/AIChat.jsx): `frontend/src/pages/AIChat.jsx`
- [Classroom](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Classroom.jsx): `frontend/src/pages/Classroom.jsx`
- [Flashcards](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Flashcards.jsx): `frontend/src/pages/Flashcards.jsx`
- [Analytics](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/Analytics.jsx): `frontend/src/pages/Analytics.jsx`
- [Notes generator](https://github.com/pranaypalwekar/studyai-planner/blob/main/frontend/src/pages/NotesGenerator.jsx): `frontend/src/pages/NotesGenerator.jsx`

### API services

- [FastAPI service](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/main.py): `backend/main.py`
- [Authentication](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/auth_new.py): `backend/routes/auth_new.py`

### Learning features

- [Study sessions](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/study_new.py): `backend/routes/study_new.py`
- [Pomodoro timer](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/pomodoro_new.py): `backend/routes/pomodoro_new.py`
- [Tutor and AI query](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/ai_tutor_new.py): `backend/routes/ai_tutor_new.py`
- [Classroom sync](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/classroom_new.py): `backend/routes/classroom_new.py`
- [Flashcard service](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/flashcards_new.py): `backend/routes/flashcards_new.py`
- [Meet scheduling](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/meet_new.py): `backend/routes/meet_new.py`
- [File query](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/routes/files_new.py): `backend/routes/files_new.py`
- [Score predictor](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/ml/predictor.py): `backend/ml/predictor.py`

### Data and integrations

- [Database setup](https://github.com/pranaypalwekar/studyai-planner/blob/main/backend/models.py): `backend/models.py`
- **MongoDB**
- **Google Gemini**
- **Google Classroom**
- **Google Meet**

### Other components

- **Student**

## Connections

- Student → Web app routes: uses
- Web app routes → Sign in: routes to
- Web app routes → Study planner: routes to
- Web app routes → Focus mode: routes to
- Web app routes → AI tutor: routes to
- Web app routes → Classroom: routes to
- Web app routes → Flashcards: routes to
- Web app routes → Analytics: routes to
- Web app routes → Notes generator: routes to
- FastAPI service → Authentication: mounts at /auth
- FastAPI service → Study sessions: mounts at /study
- FastAPI service → Pomodoro timer: mounts at /pomodoro
- FastAPI service → Tutor and AI query: mounts at /ai
- FastAPI service → Classroom sync: mounts at /classroom
- FastAPI service → Flashcard service: mounts at /flashcards
- FastAPI service → Meet scheduling: mounts at /meet
- FastAPI service → File query: mounts at /file and /ai
- FastAPI service → Database setup: initializes on startup
- Database setup → MongoDB: initializes
- Authentication → MongoDB: reads and writes users
- Flashcards → FastAPI service: requests API
- Classroom sync → Google Classroom: syncs data
- Meet scheduling → Google Meet: integrates
- Tutor and AI query → Google Gemini: requests tutoring
