# hadanice/opends architecture

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

## Overview

OpenDS is a public course-materials and study-notes site for Fudan University’s School of Data Science. A student enters through the course portal, selects a course, and browses its notes and available assignments, slides, labs, or projects. The repository also includes course archives and a Mermaid diagram component. The tree and README establish the content branches; sampled source does not establish all component wiring, so uncertain links are omitted. The sync script is part of site preparation, not the product workflow.

Main entry points: [`docs/index.md`](https://github.com/hadanice/opends/blob/main/docs/index.md) (Site home), [`docs/.vitepress/components/CoursePortal.vue`](https://github.com/hadanice/opends/blob/main/docs/.vitepress/components/CoursePortal.vue) (Course portal), [`docs/courses/map.md`](https://github.com/hadanice/opends/blob/main/docs/courses/map.md) (Course map), [`docs/courses/index.md`](https://github.com/hadanice/opends/blob/main/docs/courses/index.md) (Course index)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Site experience"]
  node_home["Site home<br/>[index.md]"]
  node_course_index["Course index<br/>[index.md]"]
  node_terms["Course terms<br/>[terms.md]"]
  node_portal["Course portal<br/>[CoursePortal.vue]"]
  node_archive["Course archive<br/>[CourseArchive.vue]"]
end

subgraph group_catalog["Course discovery"]
  node_course_data["Course data<br/>[course-data.ts]"]
end

subgraph group_materials["Course materials"]
  node_numerical["Numerical analysis"]
  node_database["Database systems"]
  node_optimization["Optimization"]
  node_probability["Probability"]
  node_algorithms["Algorithms"]
  node_computer_systems["Computer systems"]
  node_statistics["Statistics courses"]
  node_biostatistics["Biostatistics"]
  node_linear_algebra["Linear algebra"]
  node_nlp["NLP and LLMs"]
end

subgraph group_special["Interactive content"]
  node_course_map["Course map<br/>[map.md]"]
  node_mermaid["Mermaid renderer<br/>[MermaidDiagram.vue]"]
end

node_student(("Student"))

node_student -->|"visits"| node_home
node_home -->|"navigates"| node_course_index
node_student -->|"browses courses"| node_portal
node_portal -->|"uses catalog"| node_course_data
node_student -->|"browses archive"| node_archive
node_student -->|"checks terms"| node_terms
node_student -->|"opens materials"| node_numerical
node_student -->|"opens materials"| node_database
node_student -->|"opens materials"| node_optimization
node_student -->|"opens materials"| node_probability
node_student -->|"opens materials"| node_algorithms
node_student -->|"opens materials"| node_computer_systems
node_student -->|"opens materials"| node_statistics
node_student -->|"opens materials"| node_biostatistics
node_student -->|"opens materials"| node_linear_algebra
node_student -->|"opens materials"| node_nlp
node_student -->|"views map"| node_course_map
node_course_map -->|"renders diagram"| node_mermaid

click node_home "https://github.com/hadanice/opends/blob/main/docs/index.md"
click node_course_index "https://github.com/hadanice/opends/blob/main/docs/courses/index.md"
click node_terms "https://github.com/hadanice/opends/blob/main/docs/courses/terms.md"
click node_portal "https://github.com/hadanice/opends/blob/main/docs/.vitepress/components/CoursePortal.vue"
click node_archive "https://github.com/hadanice/opends/blob/main/docs/.vitepress/components/CourseArchive.vue"
click node_course_data "https://github.com/hadanice/opends/blob/main/docs/.vitepress/course-data.ts"
click node_numerical "https://github.com/hadanice/opends/tree/main/%E6%95%B0%E5%80%BC%E7%AE%97%E6%B3%95%E4%B8%8E%E6%A1%88%E4%BE%8B%E5%88%86%E6%9E%90%E2%85%A0"
click node_database "https://github.com/hadanice/opends/tree/main/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8F%8A%E5%AE%9E%E7%8E%B0"
click node_optimization "https://github.com/hadanice/opends/tree/main/%E6%9C%80%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95"
click node_probability "https://github.com/hadanice/opends/tree/main/%E6%A6%82%E7%8E%87%E8%AE%BA%E5%9F%BA%E7%A1%80"
click node_algorithms "https://github.com/hadanice/opends/tree/main/%E7%AE%97%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84"
click node_computer_systems "https://github.com/hadanice/opends/tree/main/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%8E%9F%E7%90%86"
click node_statistics "https://github.com/hadanice/opends/tree/main/%E7%BB%9F%E8%AE%A1%E5%AD%A6%E5%9F%BA%E7%A1%80%E2%85%A0%EF%BC%9A%E6%95%B0%E7%90%86%E7%BB%9F%E8%AE%A1"
click node_biostatistics "https://github.com/hadanice/opends/tree/main/%E7%94%9F%E7%89%A9%E7%BB%9F%E8%AE%A1%E5%AD%A6"
click node_linear_algebra "https://github.com/hadanice/opends/tree/main/%E9%AB%98%E7%AD%89%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0"
click node_nlp "https://github.com/hadanice/opends/tree/main/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E4%B8%8E%E5%A4%A7%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B"
click node_course_map "https://github.com/hadanice/opends/blob/main/docs/courses/map.md"
click node_mermaid "https://github.com/hadanice/opends/blob/main/docs/.vitepress/components/MermaidDiagram.vue"

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_home,node_course_index,node_terms,node_portal,node_archive toneBlue
class node_course_data toneAmber
class node_numerical,node_database,node_optimization,node_probability,node_algorithms,node_computer_systems,node_statistics,node_biostatistics,node_linear_algebra,node_nlp toneMint
class node_course_map,node_mermaid toneRose
class node_student toneIndigo
```

## Components

### Site experience

- [Site home](https://github.com/hadanice/opends/blob/main/docs/index.md): `docs/index.md`
- [Course index](https://github.com/hadanice/opends/blob/main/docs/courses/index.md): `docs/courses/index.md`
- [Course terms](https://github.com/hadanice/opends/blob/main/docs/courses/terms.md): `docs/courses/terms.md`
- [Course portal](https://github.com/hadanice/opends/blob/main/docs/.vitepress/components/CoursePortal.vue): `docs/.vitepress/components/CoursePortal.vue`
- [Course archive](https://github.com/hadanice/opends/blob/main/docs/.vitepress/components/CourseArchive.vue): `docs/.vitepress/components/CourseArchive.vue`

### Course discovery

- [Course data](https://github.com/hadanice/opends/blob/main/docs/.vitepress/course-data.ts): `docs/.vitepress/course-data.ts`

### Course materials

- [Numerical analysis](https://github.com/hadanice/opends/tree/main/%E6%95%B0%E5%80%BC%E7%AE%97%E6%B3%95%E4%B8%8E%E6%A1%88%E4%BE%8B%E5%88%86%E6%9E%90%E2%85%A0): `数值算法与案例分析Ⅰ`
- [Database systems](https://github.com/hadanice/opends/tree/main/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8F%8A%E5%AE%9E%E7%8E%B0): `数据库及实现`
- [Optimization](https://github.com/hadanice/opends/tree/main/%E6%9C%80%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95): `最优化方法`
- [Probability](https://github.com/hadanice/opends/tree/main/%E6%A6%82%E7%8E%87%E8%AE%BA%E5%9F%BA%E7%A1%80): `概率论基础`
- [Algorithms](https://github.com/hadanice/opends/tree/main/%E7%AE%97%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84): `算法与数据结构`
- [Computer systems](https://github.com/hadanice/opends/tree/main/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%8E%9F%E7%90%86): `计算机原理`
- [Statistics courses](https://github.com/hadanice/opends/tree/main/%E7%BB%9F%E8%AE%A1%E5%AD%A6%E5%9F%BA%E7%A1%80%E2%85%A0%EF%BC%9A%E6%95%B0%E7%90%86%E7%BB%9F%E8%AE%A1): `统计学基础Ⅰ：数理统计`
- [Biostatistics](https://github.com/hadanice/opends/tree/main/%E7%94%9F%E7%89%A9%E7%BB%9F%E8%AE%A1%E5%AD%A6): `生物统计学`
- [Linear algebra](https://github.com/hadanice/opends/tree/main/%E9%AB%98%E7%AD%89%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0): `高等线性代数`
- [NLP and LLMs](https://github.com/hadanice/opends/tree/main/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E4%B8%8E%E5%A4%A7%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B): `自然语言处理与大语言模型`

### Interactive content

- [Course map](https://github.com/hadanice/opends/blob/main/docs/courses/map.md): `docs/courses/map.md`
- [Mermaid renderer](https://github.com/hadanice/opends/blob/main/docs/.vitepress/components/MermaidDiagram.vue): `docs/.vitepress/components/MermaidDiagram.vue`

### Other components

- **Student**

## Connections

- Student → Site home: visits
- Site home → Course index: navigates
- Student → Course portal: browses courses
- Course portal → Course data: uses catalog
- Student → Course archive: browses archive
- Student → Course terms: checks terms
- Student → Numerical analysis: opens materials
- Student → Database systems: opens materials
- Student → Optimization: opens materials
- Student → Probability: opens materials
- Student → Algorithms: opens materials
- Student → Computer systems: opens materials
- Student → Statistics courses: opens materials
- Student → Biostatistics: opens materials
- Student → Linear algebra: opens materials
- Student → NLP and LLMs: opens materials
- Student → Course map: views map
- Course map → Mermaid renderer: renders diagram
