# aayushshirode2060/studynotion architecture

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

- Interactive diagram: https://gitdiagram.com/aayushshirode2060/studynotion
- Repository: https://github.com/aayushshirode2060/studynotion

## Overview

This is an online learning platform: learners discover courses, enroll, study course sections, track progress, and review courses; instructors create and manage course content. The React client and Express server are both represented in the tree. The sampled source confirms the client route structure, server route mounting, and review persistence behavior; many feature-specific calls and route-to-controller bindings are unsampled, so those links are not expanded into speculative pipelines.

Main entry points: [`src/App.js`](https://github.com/aayushshirode2060/studynotion/blob/main/src/App.js) (Application routes), [`server/models`](https://github.com/aayushshirode2060/studynotion/tree/main/server/models) (Domain records), [`server/controllers/Payment.js`](https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Payment.js) (Enrollment payments), [`server/index.js`](https://github.com/aayushshirode2060/studynotion/blob/main/server/index.js) (API server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client experience"]
  node_app["Application routes<br/>[App.js]"]
  node_discovery["Course discovery<br/>[Catalog.jsx]"]
  node_course_details["Course details<br/>[CourseDetails.jsx]"]
  node_learning["Course player<br/>[ViewCourse.jsx]"]
  node_dashboard["Learner dashboard<br/>[Dashboard.jsx]"]
  node_course_authoring["Course authoring<br/>[index.jsx]"]
  node_client_auth["Sign-in and signup"]
  node_reviews_ui["Course reviews"]
end

subgraph group_client_state["Client services"]
  node_operations["Feature API operations"]
  node_http_client["HTTP connector<br/>[apiconnector.js]"]
  node_redux["Client state<br/>[index.js]"]
end

subgraph group_server["Server domain"]
  node_server_entry["API server<br/>[index.js]"]
  node_routes["API routes"]
  node_auth_controller["Authentication<br/>[Auth.js]"]
  node_course_controller["Course management<br/>[Course.js]"]
  node_payment_controller["Enrollment payments<br/>[Payment.js]"]
  node_profile_controller["Profile management<br/>[Profile.js]"]
  node_progress_controller["Learning progress<br/>[courseProgress.js]"]
  node_review_controller["Rating and review<br/>[RatingAndReview.js]"]
end

subgraph group_data["Data and integrations"]
  node_models[("Domain records")]
  node_database[("MongoDB<br/>[database.js]")]
  node_cloudinary["Cloudinary media<br/>[cloudinary.js]"]
  node_razorpay["Razorpay payments<br/>[razorpay.js]"]
  node_mail["Email delivery<br/>[mailSender.js]"]
end

node_learner(("Learner"))
node_instructor(("Instructor"))

node_learner -->|"uses"| node_app
node_instructor -->|"uses"| node_app
node_app -->|"routes to"| node_discovery
node_app -->|"routes to"| node_course_details
node_app -->|"routes to"| node_learning
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_course_authoring
node_app -->|"routes to"| node_client_auth
node_app -->|"routes to"| node_reviews_ui
node_operations -->|"uses"| node_http_client
node_http_client -->|"HTTP requests"| node_server_entry
node_app -->|"reads state"| node_redux
node_server_entry -->|"connects"| node_database
node_server_entry -->|"mounts routes"| node_routes
node_review_controller -->|"reads and writes"| node_models
node_review_controller -->|"persists via"| node_database
node_course_controller -->|"manages"| node_models
node_payment_controller -->|"updates enrollment"| node_models
node_progress_controller -->|"updates progress"| node_models
node_auth_controller -->|"manages accounts"| node_models
node_profile_controller -->|"manages profiles"| node_models
node_course_controller -.->|"uploads media"| node_cloudinary
node_payment_controller -.->|"processes payments"| node_razorpay
node_payment_controller -.->|"sends notices"| node_mail

click node_app "https://github.com/aayushshirode2060/studynotion/blob/main/src/App.js"
click node_discovery "https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/Catalog.jsx"
click node_course_details "https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/CourseDetails.jsx"
click node_learning "https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/ViewCourse.jsx"
click node_dashboard "https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/Dashboard.jsx"
click node_course_authoring "https://github.com/aayushshirode2060/studynotion/blob/main/src/components/core/Dashboard/AddCourse/index.jsx"
click node_client_auth "https://github.com/aayushshirode2060/studynotion/tree/main/src/components/core/Auth"
click node_reviews_ui "https://github.com/aayushshirode2060/studynotion/blob/main/src/components/core/ViewCourse/CourseReviewModal.jsx"
click node_operations "https://github.com/aayushshirode2060/studynotion/tree/main/src/services/operations"
click node_http_client "https://github.com/aayushshirode2060/studynotion/blob/main/src/services/apiconnector.js"
click node_redux "https://github.com/aayushshirode2060/studynotion/blob/main/src/reducer/index.js"
click node_server_entry "https://github.com/aayushshirode2060/studynotion/blob/main/server/index.js"
click node_routes "https://github.com/aayushshirode2060/studynotion/tree/main/server/routes"
click node_auth_controller "https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Auth.js"
click node_course_controller "https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Course.js"
click node_payment_controller "https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Payment.js"
click node_profile_controller "https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Profile.js"
click node_progress_controller "https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/courseProgress.js"
click node_review_controller "https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/RatingAndReview.js"
click node_models "https://github.com/aayushshirode2060/studynotion/tree/main/server/models"
click node_database "https://github.com/aayushshirode2060/studynotion/blob/main/server/config/database.js"
click node_cloudinary "https://github.com/aayushshirode2060/studynotion/blob/main/server/config/cloudinary.js"
click node_razorpay "https://github.com/aayushshirode2060/studynotion/blob/main/server/config/razorpay.js"
click node_mail "https://github.com/aayushshirode2060/studynotion/blob/main/server/utils/mailSender.js"

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,node_discovery,node_course_details,node_learning,node_dashboard,node_course_authoring,node_client_auth,node_reviews_ui toneBlue
class node_operations,node_http_client,node_redux toneAmber
class node_server_entry,node_routes,node_auth_controller,node_course_controller,node_payment_controller,node_profile_controller,node_progress_controller,node_review_controller toneMint
class node_models,node_database,node_cloudinary,node_razorpay,node_mail toneRose
class node_learner,node_instructor toneIndigo
```

## Components

### Client experience

- [Application routes](https://github.com/aayushshirode2060/studynotion/blob/main/src/App.js): `src/App.js`
- [Course discovery](https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/Catalog.jsx): `src/pages/Catalog.jsx`
- [Course details](https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/CourseDetails.jsx): `src/pages/CourseDetails.jsx`
- [Course player](https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/ViewCourse.jsx): `src/pages/ViewCourse.jsx`
- [Learner dashboard](https://github.com/aayushshirode2060/studynotion/blob/main/src/pages/Dashboard.jsx): `src/pages/Dashboard.jsx`
- [Course authoring](https://github.com/aayushshirode2060/studynotion/blob/main/src/components/core/Dashboard/AddCourse/index.jsx): `src/components/core/Dashboard/AddCourse/index.jsx`
- [Sign-in and signup](https://github.com/aayushshirode2060/studynotion/tree/main/src/components/core/Auth): `src/components/core/Auth`
- [Course reviews](https://github.com/aayushshirode2060/studynotion/blob/main/src/components/core/ViewCourse/CourseReviewModal.jsx): `src/components/core/ViewCourse/CourseReviewModal.jsx`

### Client services

- [Feature API operations](https://github.com/aayushshirode2060/studynotion/tree/main/src/services/operations): `src/services/operations`
- [HTTP connector](https://github.com/aayushshirode2060/studynotion/blob/main/src/services/apiconnector.js): `src/services/apiconnector.js`
- [Client state](https://github.com/aayushshirode2060/studynotion/blob/main/src/reducer/index.js): `src/reducer/index.js`

### Server domain

- [API server](https://github.com/aayushshirode2060/studynotion/blob/main/server/index.js): `server/index.js`
- [API routes](https://github.com/aayushshirode2060/studynotion/tree/main/server/routes): `server/routes`
- [Authentication](https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Auth.js): `server/controllers/Auth.js`
- [Course management](https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Course.js): `server/controllers/Course.js`
- [Enrollment payments](https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Payment.js): `server/controllers/Payment.js`
- [Profile management](https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/Profile.js): `server/controllers/Profile.js`
- [Learning progress](https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/courseProgress.js): `server/controllers/courseProgress.js`
- [Rating and review](https://github.com/aayushshirode2060/studynotion/blob/main/server/controllers/RatingAndReview.js): `server/controllers/RatingAndReview.js`

### Data and integrations

- [Domain records](https://github.com/aayushshirode2060/studynotion/tree/main/server/models): `server/models`
- [MongoDB](https://github.com/aayushshirode2060/studynotion/blob/main/server/config/database.js): `server/config/database.js`
- [Cloudinary media](https://github.com/aayushshirode2060/studynotion/blob/main/server/config/cloudinary.js): `server/config/cloudinary.js`
- [Razorpay payments](https://github.com/aayushshirode2060/studynotion/blob/main/server/config/razorpay.js): `server/config/razorpay.js`
- [Email delivery](https://github.com/aayushshirode2060/studynotion/blob/main/server/utils/mailSender.js): `server/utils/mailSender.js`

### Other components

- **Learner**
- **Instructor**

## Connections

- Learner → Application routes: uses
- Instructor → Application routes: uses
- Application routes → Course discovery: routes to
- Application routes → Course details: routes to
- Application routes → Course player: routes to
- Application routes → Learner dashboard: routes to
- Application routes → Course authoring: routes to
- Application routes → Sign-in and signup: routes to
- Application routes → Course reviews: routes to
- Feature API operations → HTTP connector: uses
- HTTP connector → API server: HTTP requests
- Application routes → Client state: reads state
- API server → MongoDB: connects
- API server → API routes: mounts routes
- Rating and review → Domain records: reads and writes
- Rating and review → MongoDB: persists via
- Course management → Domain records: manages
- Enrollment payments → Domain records: updates enrollment
- Learning progress → Domain records: updates progress
- Authentication → Domain records: manages accounts
- Profile management → Domain records: manages profiles
- Course management → Cloudinary media: uploads media
- Enrollment payments → Razorpay payments: processes payments
- Enrollment payments → Email delivery: sends notices
