# henrywhu0503/cdutcm-nav architecture

> Architecture diagram of the GitHub repository henrywhu0503/cdutcm-nav, 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/henrywhu0503/cdutcm-nav
- Repository: https://github.com/henrywhu0503/cdutcm-nav

## Overview

CDUTCM-NAV is a student-facing resource directory for Chengdu University of Traditional Chinese Medicine. Students enter through the navigation home page, browse categorized campus, study, and general-purpose links, and follow a selected resource to its destination; they can also visit school-introduction, important-notice, and update-log pages. The app shell routes those pages and provides shared navigation and dialogs. The sampled sources establish routing, shared dialog state, and the school-introduction page’s use of navigation data; HomeView and several presentation components were not sampled, so their internal wiring is not assumed.

Main entry points: [`src/App.vue`](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/App.vue) (App shell), [`src/router/index.ts`](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/router/index.ts) (Page router), [`src/main.ts`](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/main.ts) (App bootstrap), [`src/views/LearnView.vue`](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/LearnView.vue) (School introduction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["App runtime"]
  node_main["App bootstrap<br/>[main.ts]"]
  node_app["App shell<br/>[App.vue]"]
  node_router["Page router<br/>[index.ts]"]
end

subgraph group_directory["Resource directory"]
  node_home["Navigation home<br/>[HomeView.vue]"]
  node_navdata["Resource catalog<br/>[navData.ts]"]
  node_navcard["Resource cards<br/>[NavCard.vue]"]
end

subgraph group_pages["Information pages"]
  node_learn["School introduction<br/>[LearnView.vue]"]
  node_updates["Update log<br/>[UpdateView.vue]"]
  node_notices["Important notices<br/>[InfoView.vue]"]
end

subgraph group_shared["Shared interface"]
  node_sidebar["Section navigation<br/>[SideBar.vue]"]
  node_topnav["Header and timer<br/>[TopNav.vue]"]
  node_intro["Intro navigation<br/>[IntroNav.vue]"]
  node_bottomnav["Mobile navigation<br/>[BottomNav.vue]"]
  node_footer["App footer<br/>[AppFooter.vue]"]
  node_dialogbox["Dialog display<br/>[DialogBox.vue]"]
  node_dialog["Dialog state<br/>[dialog.ts]"]
end

node_student(("Student"))
node_external{{"Linked resources"}}

node_student -->|"opens"| node_app
node_main -->|"mounts"| node_app
node_main -->|"installs"| node_router
node_main -->|"exposes"| node_dialog
node_app -->|"renders"| node_sidebar
node_app -->|"renders"| node_topnav
node_app -->|"renders"| node_intro
node_app -->|"renders"| node_bottomnav
node_app -->|"renders"| node_footer
node_app -->|"renders"| node_dialogbox
node_app -->|"renders outlet"| node_router
node_sidebar -->|"navigates"| node_router
node_router -->|"routes to"| node_home
node_router -->|"routes to"| node_updates
node_router -->|"routes to"| node_learn
node_router -->|"routes to"| node_notices
node_learn -->|"reads"| node_navdata
node_learn -->|"renders"| node_navcard
node_navdata -->|"invokes"| node_dialog
node_dialogbox -->|"reads state"| node_dialog
node_student -->|"browses"| node_home
node_home -->|"offers links"| node_external

click node_main "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/main.ts"
click node_app "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/App.vue"
click node_router "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/router/index.ts"
click node_home "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/HomeView.vue"
click node_navdata "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/data/navData.ts"
click node_navcard "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/NavCard.vue"
click node_learn "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/LearnView.vue"
click node_updates "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/UpdateView.vue"
click node_notices "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/InfoView.vue"
click node_sidebar "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/SideBar.vue"
click node_topnav "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/TopNav.vue"
click node_intro "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/IntroNav.vue"
click node_bottomnav "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/BottomNav.vue"
click node_footer "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/AppFooter.vue"
click node_dialogbox "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/DialogBox.vue"
click node_dialog "https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/stores/dialog.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_main,node_app,node_router toneBlue
class node_home,node_navdata,node_navcard toneAmber
class node_learn,node_updates,node_notices toneMint
class node_sidebar,node_topnav,node_intro,node_bottomnav,node_footer,node_dialogbox,node_dialog toneRose
class node_student,node_external toneIndigo
```

## Components

### App runtime

- [App bootstrap](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/main.ts): `src/main.ts`
- [App shell](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/App.vue): `src/App.vue`
- [Page router](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/router/index.ts): `src/router/index.ts`

### Resource directory

- [Navigation home](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/HomeView.vue): `src/views/HomeView.vue`
- [Resource catalog](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/data/navData.ts): `src/data/navData.ts`
- [Resource cards](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/NavCard.vue): `src/components/NavCard.vue`

### Information pages

- [School introduction](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/LearnView.vue): `src/views/LearnView.vue`
- [Update log](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/UpdateView.vue): `src/views/UpdateView.vue`
- [Important notices](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/views/InfoView.vue): `src/views/InfoView.vue`

### Shared interface

- [Section navigation](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/SideBar.vue): `src/components/SideBar.vue`
- [Header and timer](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/TopNav.vue): `src/components/TopNav.vue`
- [Intro navigation](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/IntroNav.vue): `src/components/IntroNav.vue`
- [Mobile navigation](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/BottomNav.vue): `src/components/BottomNav.vue`
- [App footer](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/AppFooter.vue): `src/components/AppFooter.vue`
- [Dialog display](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/components/DialogBox.vue): `src/components/DialogBox.vue`
- [Dialog state](https://github.com/henrywhu0503/cdutcm-nav/blob/main/src/stores/dialog.ts): `src/stores/dialog.ts`

### Other components

- **Student**
- **Linked resources**

## Connections

- Student → App shell: opens
- App bootstrap → App shell: mounts
- App bootstrap → Page router: installs
- App bootstrap → Dialog state: exposes
- App shell → Section navigation: renders
- App shell → Header and timer: renders
- App shell → Intro navigation: renders
- App shell → Mobile navigation: renders
- App shell → App footer: renders
- App shell → Dialog display: renders
- App shell → Page router: renders outlet
- Section navigation → Page router: navigates
- Page router → Navigation home: routes to
- Page router → Update log: routes to
- Page router → School introduction: routes to
- Page router → Important notices: routes to
- School introduction → Resource catalog: reads
- School introduction → Resource cards: renders
- Resource catalog → Dialog state: invokes
- Dialog display → Dialog state: reads state
- Student → Navigation home: browses
- Navigation home → Linked resources: offers links
