# shivam-varma/virtual_classroom architecture

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

- Interactive diagram: https://gitdiagram.com/shivam-varma/virtual_classroom
- Repository: https://github.com/shivam-varma/virtual_classroom

## Overview

This is a Java Swing virtual-classroom application. Users register or log in, then enter a role-specific teacher or student dashboard: teachers can create assignments, while either role can view the assignment list. User accounts and assignments are persisted in text files. The sampled source supports these UI-to-manager calls and file operations; no README describes additional capabilities.

Main entry points: [`src/com/virtualclassroom/ui/LoginFrame.java`](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/LoginFrame.java) (Login window), [`src/com/virtualclassroom/data/UserManager.java`](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/data/UserManager.java) (User manager), [`src/com/virtualclassroom/data/AssignmentManager.java`](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/data/AssignmentManager.java) (Assignment manager), [`src/com/virtualclassroom/ui/TeacherDashboard.java`](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/TeacherDashboard.java) (Teacher dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry_auth["Entry and accounts"]
  node_main["Application entry<br/>[Main.java]"]
  node_login["Login window<br/>[LoginFrame.java]"]
  node_register["Registration window<br/>[RegisterFrame.java]"]
  node_user_manager["User manager<br/>[UserManager.java]"]
end

subgraph group_classroom_ui["Classroom workflows"]
  node_teacher_dashboard["Teacher dashboard"]
  node_student_dashboard["Student dashboard"]
  node_create_assignment["Create assignment"]
  node_view_assignments["View assignments"]
end

subgraph group_domain_data["Domain and persistence"]
  node_user_model["User model<br/>[User.java]"]
  node_assignment_model["Assignment model<br/>[Assignment.java]"]
  node_assignment_manager["Assignment manager"]
  node_users_file[("User records<br/>[users.txt]")]
  node_assignments_file[("Assignment records<br/>[assignments.txt]")]
end

node_user_actor(("Classroom user"))

node_user_actor -->|"uses"| node_login
node_main -->|"opens"| node_login
node_login -->|"authenticates"| node_user_manager
node_login -->|"opens"| node_register
node_register -->|"registers"| node_user_manager
node_user_manager -->|"reads and writes"| node_users_file
node_user_manager -->|"creates"| node_user_model
node_login -->|"routes teacher"| node_teacher_dashboard
node_login -->|"routes student"| node_student_dashboard
node_teacher_dashboard -->|"opens"| node_create_assignment
node_teacher_dashboard -->|"opens"| node_view_assignments
node_student_dashboard -->|"opens"| node_view_assignments
node_create_assignment -->|"creates"| node_assignment_model
node_create_assignment -->|"saves through"| node_assignment_manager
node_view_assignments -->|"loads through"| node_assignment_manager
node_assignment_manager -->|"reads and writes"| node_assignments_file
node_assignment_manager -->|"creates"| node_assignment_model

click node_main "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/Main.java"
click node_login "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/LoginFrame.java"
click node_register "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/RegisterFrame.java"
click node_user_manager "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/data/UserManager.java"
click node_teacher_dashboard "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/TeacherDashboard.java"
click node_student_dashboard "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/StudentDashboard.java"
click node_create_assignment "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/CreateAssignmentFrame.java"
click node_view_assignments "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/ViewAssignmentsFrame.java"
click node_user_model "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/model/User.java"
click node_assignment_model "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/model/Assignment.java"
click node_assignment_manager "https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/data/AssignmentManager.java"
click node_users_file "https://github.com/shivam-varma/virtual_classroom/blob/main/users.txt"
click node_assignments_file "https://github.com/shivam-varma/virtual_classroom/blob/main/assignments.txt"

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_main,node_login,node_register,node_user_manager,node_user_actor toneBlue
class node_teacher_dashboard,node_student_dashboard,node_create_assignment,node_view_assignments toneAmber
class node_user_model,node_assignment_model,node_assignment_manager,node_users_file,node_assignments_file toneMint
```

## Components

### Entry and accounts

- [Application entry](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/Main.java): `src/com/virtualclassroom/Main.java`
- [Login window](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/LoginFrame.java): `src/com/virtualclassroom/ui/LoginFrame.java`
- [Registration window](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/RegisterFrame.java): `src/com/virtualclassroom/ui/RegisterFrame.java`
- [User manager](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/data/UserManager.java): `src/com/virtualclassroom/data/UserManager.java`

### Classroom workflows

- [Teacher dashboard](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/TeacherDashboard.java): `src/com/virtualclassroom/ui/TeacherDashboard.java`
- [Student dashboard](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/StudentDashboard.java): `src/com/virtualclassroom/ui/StudentDashboard.java`
- [Create assignment](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/CreateAssignmentFrame.java): `src/com/virtualclassroom/ui/CreateAssignmentFrame.java`
- [View assignments](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/ui/ViewAssignmentsFrame.java): `src/com/virtualclassroom/ui/ViewAssignmentsFrame.java`

### Domain and persistence

- [User model](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/model/User.java): `src/com/virtualclassroom/model/User.java`
- [Assignment model](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/model/Assignment.java): `src/com/virtualclassroom/model/Assignment.java`
- [Assignment manager](https://github.com/shivam-varma/virtual_classroom/blob/main/src/com/virtualclassroom/data/AssignmentManager.java): `src/com/virtualclassroom/data/AssignmentManager.java`
- [User records](https://github.com/shivam-varma/virtual_classroom/blob/main/users.txt): `users.txt`
- [Assignment records](https://github.com/shivam-varma/virtual_classroom/blob/main/assignments.txt): `assignments.txt`

### Other components

- **Classroom user**

## Connections

- Classroom user → Login window: uses
- Application entry → Login window: opens
- Login window → User manager: authenticates
- Login window → Registration window: opens
- Registration window → User manager: registers
- User manager → User records: reads and writes
- User manager → User model: creates
- Login window → Teacher dashboard: routes teacher
- Login window → Student dashboard: routes student
- Teacher dashboard → Create assignment: opens
- Teacher dashboard → View assignments: opens
- Student dashboard → View assignments: opens
- Create assignment → Assignment model: creates
- Create assignment → Assignment manager: saves through
- View assignments → Assignment manager: loads through
- Assignment manager → Assignment records: reads and writes
- Assignment manager → Assignment model: creates
