# dvijit/teacher-planer architecture

> Architecture diagram of the GitHub repository dvijit/teacher-planer, 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/dvijit/teacher-planer
- Repository: https://github.com/dvijit/teacher-planer

## Overview

Teacher Planner is a web app for managing teaching operations: students, groups, lessons and homework, with dashboard, authentication, and billing areas. Teachers enter through the Nuxt pages; the sampled query composables retrieve teacher-scoped group, schedule, and homework data (and student data) from Supabase. The tree shows corresponding mutation, calendar, auth, and billing modules. The README is only a generic Nuxt starter, and page-to-composable wiring and most mutation details were not sampled, so those relationships are not asserted.

Main entry points: [`app/composables/queries/useStudentsQuery.ts`](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useStudentsQuery.ts) (Student queries), [`app/composables/queries/useStudentDetailQuery.ts`](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useStudentDetailQuery.ts) (Student detail query), [`app/composables/queries/useGroupsQuery.ts`](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useGroupsQuery.ts) (Group list query), [`app/composables/queries/useGroupDetailQuery.ts`](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useGroupDetailQuery.ts) (Group detail query)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and account"]
  node_login["Login and registration<br/>[login.vue]"]
  node_auth["Auth composables"]
  node_middleware["Access middleware"]
end

subgraph group_teaching["Teaching records"]
  node_dashboard["Dashboard<br/>[dashboard.vue]"]
  node_students["Student records"]
  node_student_query["Student queries"]
  node_student_detail_query["Student detail query"]
  node_student_mutations["Student mutations"]
  node_groups["Group records"]
  node_group_query["Group list query<br/>[useGroupsQuery.ts]"]
  node_group_detail_query["Group detail query"]
  node_group_mutations["Group mutations"]
end

subgraph group_planning["Lesson planning"]
  node_schedule["Schedule<br/>[index.vue]"]
  node_calendar["Teacher calendar"]
  node_schedule_query["Schedule query"]
  node_lesson_mutations["Lesson mutations"]
  node_homework["Homework<br/>[index.vue]"]
  node_homework_query["Homework query"]
end

subgraph group_platform["Data and payments"]
  node_billing["Billing<br/>[index.vue]"]
  node_payment_plugin["Payment plugin"]
  node_payment_service["WayForPay server utility<br/>[wayforpay.ts]"]
  node_supabase[("Supabase")]
  node_schedule_generation["Schedule generation API<br/>[generate.post.ts]"]
end

node_teacher(("Teacher"))

node_teacher -->|"opens"| node_login
node_teacher -->|"opens"| node_dashboard
node_teacher -->|"manages"| node_students
node_teacher -->|"manages"| node_groups
node_teacher -->|"plans lessons"| node_schedule
node_teacher -->|"manages"| node_homework
node_teacher -->|"opens"| node_billing
node_student_query -->|"reads students"| node_supabase
node_student_detail_query -->|"reads student"| node_supabase
node_group_query -->|"reads groups"| node_supabase
node_group_detail_query -->|"reads group"| node_supabase
node_schedule_query -->|"reads lessons"| node_supabase
node_homework_query -->|"reads homework"| node_supabase
node_payment_plugin -.->|"uses"| node_payment_service

click node_login "https://github.com/dvijit/teacher-planer/blob/main/app/pages/auth/login.vue"
click node_auth "https://github.com/dvijit/teacher-planer/tree/main/app/composables/auth"
click node_middleware "https://github.com/dvijit/teacher-planer/tree/main/app/middleware"
click node_dashboard "https://github.com/dvijit/teacher-planer/blob/main/app/pages/dashboard.vue"
click node_students "https://github.com/dvijit/teacher-planer/tree/main/app/pages/students"
click node_student_query "https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useStudentsQuery.ts"
click node_student_detail_query "https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useStudentDetailQuery.ts"
click node_student_mutations "https://github.com/dvijit/teacher-planer/tree/main/app/composables/mutations"
click node_groups "https://github.com/dvijit/teacher-planer/tree/main/app/pages/groups"
click node_group_query "https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useGroupsQuery.ts"
click node_group_detail_query "https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useGroupDetailQuery.ts"
click node_group_mutations "https://github.com/dvijit/teacher-planer/tree/main/app/composables/mutations"
click node_schedule "https://github.com/dvijit/teacher-planer/blob/main/app/pages/schedule/index.vue"
click node_calendar "https://github.com/dvijit/teacher-planer/blob/main/app/components/TeacherCalendar.client.vue"
click node_schedule_query "https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useScheduleQuery.ts"
click node_lesson_mutations "https://github.com/dvijit/teacher-planer/tree/main/app/composables/mutations"
click node_homework "https://github.com/dvijit/teacher-planer/blob/main/app/pages/homework/index.vue"
click node_homework_query "https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useHomeworkQuery.ts"
click node_billing "https://github.com/dvijit/teacher-planer/blob/main/app/pages/billing/index.vue"
click node_payment_plugin "https://github.com/dvijit/teacher-planer/blob/main/app/plugins/wayforpay.client.ts"
click node_payment_service "https://github.com/dvijit/teacher-planer/blob/main/server/utils/wayforpay.ts"
click node_schedule_generation "https://github.com/dvijit/teacher-planer/blob/main/server/api/schedule/generate.post.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_login,node_auth,node_middleware toneBlue
class node_dashboard,node_students,node_student_query,node_student_detail_query,node_student_mutations,node_groups,node_group_query,node_group_detail_query,node_group_mutations toneAmber
class node_schedule,node_calendar,node_schedule_query,node_lesson_mutations,node_homework,node_homework_query toneMint
class node_billing,node_payment_plugin,node_payment_service,node_supabase,node_schedule_generation toneRose
class node_teacher toneIndigo
```

## Components

### Access and account

- [Login and registration](https://github.com/dvijit/teacher-planer/blob/main/app/pages/auth/login.vue): `app/pages/auth/login.vue`
- [Auth composables](https://github.com/dvijit/teacher-planer/tree/main/app/composables/auth): `app/composables/auth`
- [Access middleware](https://github.com/dvijit/teacher-planer/tree/main/app/middleware): `app/middleware`

### Teaching records

- [Dashboard](https://github.com/dvijit/teacher-planer/blob/main/app/pages/dashboard.vue): `app/pages/dashboard.vue`
- [Student records](https://github.com/dvijit/teacher-planer/tree/main/app/pages/students): `app/pages/students`
- [Student queries](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useStudentsQuery.ts): `app/composables/queries/useStudentsQuery.ts`
- [Student detail query](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useStudentDetailQuery.ts): `app/composables/queries/useStudentDetailQuery.ts`
- [Student mutations](https://github.com/dvijit/teacher-planer/tree/main/app/composables/mutations): `app/composables/mutations`
- [Group records](https://github.com/dvijit/teacher-planer/tree/main/app/pages/groups): `app/pages/groups`
- [Group list query](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useGroupsQuery.ts): `app/composables/queries/useGroupsQuery.ts`
- [Group detail query](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useGroupDetailQuery.ts): `app/composables/queries/useGroupDetailQuery.ts`
- [Group mutations](https://github.com/dvijit/teacher-planer/tree/main/app/composables/mutations): `app/composables/mutations`

### Lesson planning

- [Schedule](https://github.com/dvijit/teacher-planer/blob/main/app/pages/schedule/index.vue): `app/pages/schedule/index.vue`
- [Teacher calendar](https://github.com/dvijit/teacher-planer/blob/main/app/components/TeacherCalendar.client.vue): `app/components/TeacherCalendar.client.vue`
- [Schedule query](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useScheduleQuery.ts): `app/composables/queries/useScheduleQuery.ts`
- [Lesson mutations](https://github.com/dvijit/teacher-planer/tree/main/app/composables/mutations): `app/composables/mutations`
- [Homework](https://github.com/dvijit/teacher-planer/blob/main/app/pages/homework/index.vue): `app/pages/homework/index.vue`
- [Homework query](https://github.com/dvijit/teacher-planer/blob/main/app/composables/queries/useHomeworkQuery.ts): `app/composables/queries/useHomeworkQuery.ts`

### Data and payments

- [Billing](https://github.com/dvijit/teacher-planer/blob/main/app/pages/billing/index.vue): `app/pages/billing/index.vue`
- [Payment plugin](https://github.com/dvijit/teacher-planer/blob/main/app/plugins/wayforpay.client.ts): `app/plugins/wayforpay.client.ts`
- [WayForPay server utility](https://github.com/dvijit/teacher-planer/blob/main/server/utils/wayforpay.ts): `server/utils/wayforpay.ts`
- **Supabase**
- [Schedule generation API](https://github.com/dvijit/teacher-planer/blob/main/server/api/schedule/generate.post.ts): `server/api/schedule/generate.post.ts`

### Other components

- **Teacher**

## Connections

- Teacher → Login and registration: opens
- Teacher → Dashboard: opens
- Teacher → Student records: manages
- Teacher → Group records: manages
- Teacher → Schedule: plans lessons
- Teacher → Homework: manages
- Teacher → Billing: opens
- Student queries → Supabase: reads students
- Student detail query → Supabase: reads student
- Group list query → Supabase: reads groups
- Group detail query → Supabase: reads group
- Schedule query → Supabase: reads lessons
- Homework query → Supabase: reads homework
- Payment plugin → WayForPay server utility: uses
