# montclairrobotics/frc-programming-guide architecture

> Architecture diagram of the GitHub repository montclairrobotics/frc-programming-guide, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/montclairrobotics/frc-programming-guide
- Repository: https://github.com/montclairrobotics/frc-programming-guide
- Video tour (about a minute): https://gitdiagram.com/montclairrobotics/frc-programming-guide/video

## Overview

This repository is a web-based learning guide for Java programming in the FRC context. A learner uses the published book to study Java fundamentals, object-oriented programming, Git, FRC programming, and advanced Java topics. The source lessons live under `src/`; the tree also includes a generated HTML reader with navigation, search, code-display, and personalization features. README capability coverage is represented at the topic-area level. Runtime relationships are shown only where sampled source supports them; unsampled lesson and reader wiring is not inferred.

Main entry points: [`book/html/book.js`](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/book.js) (Book Interaction), [`src/Java-Fundamentals`](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Java-Fundamentals) (Java Fundamentals), [`src/Object-Oriented-Programming`](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Object-Oriented-Programming) (Object-Oriented Programming), [`src/Advanced-Java`](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Advanced-Java) (Advanced Java)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_curriculum["Java Curriculum"]
  node_fundamentals["Java Fundamentals"]
  node_oop["Object-Oriented Programming"]
  node_advanced["Advanced Java"]
  node_appendix["Appendix"]
end

subgraph group_practice["Programming Practice"]
  node_git["Git &amp; GitHub"]
  node_frc["FRC Programming"]
end

subgraph group_reader["Book Reader"]
  node_book_runtime["Book Interaction<br/>[book.js]"]
  node_code_editor["Code Editor<br/>[ace.js]"]
  node_syntax_highlighting["Syntax Highlighting<br/>[highlight.js]"]
  node_rust_mode["Rust Editor Mode<br/>[mode-rust.js]"]
  node_search["Book Search<br/>[searcher.js]"]
  node_sidebar_navigation["Sidebar Navigation<br/>[toc.js]"]
end

subgraph group_reader_extras["Reader Enhancements"]
  node_page_toc["Page Contents<br/>[pagetoc.js]"]
  node_reader_controls["Reader Controls<br/>[rn_qol.js]"]
  node_source_controls["Source Controls<br/>[rn_qol.js]"]
  node_inheritance_copy["Code Copy Button<br/>[rn_qol_gfg.js]"]
end

node_learner(("Learner"))

node_learner -->|"studies topics"| node_fundamentals
node_learner -->|"studies topics"| node_oop
node_learner -->|"studies topics"| node_advanced
node_learner -->|"studies topics"| node_git
node_learner -->|"studies topics"| node_frc
node_learner -->|"uses reference"| node_appendix
node_book_runtime -->|"reads editor"| node_code_editor
node_learner -->|"searches book"| node_search
node_learner -->|"navigates chapters"| node_sidebar_navigation
node_learner -->|"navigates headings"| node_page_toc
node_learner -->|"adjusts reader"| node_reader_controls
node_learner -->|"adjusts reader"| node_source_controls
node_learner -->|"copies code"| node_inheritance_copy

click node_fundamentals "https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Java-Fundamentals"
click node_oop "https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Object-Oriented-Programming"
click node_advanced "https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Advanced-Java"
click node_git "https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Git"
click node_frc "https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/FRC"
click node_appendix "https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Appendix"
click node_book_runtime "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/book.js"
click node_code_editor "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/ace.js"
click node_syntax_highlighting "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/highlight.js"
click node_rust_mode "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/mode-rust.js"
click node_search "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/searcher.js"
click node_sidebar_navigation "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/toc.js"
click node_page_toc "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/theme/pagetoc.js"
click node_reader_controls "https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/theme/rn_qol.js"
click node_source_controls "https://github.com/montclairrobotics/frc-programming-guide/blob/main/theme/rn_qol.js"
click node_inheritance_copy "https://github.com/montclairrobotics/frc-programming-guide/blob/main/src/Advanced-Java/Inheritance/Inheritance_Assets/rn_qol_gfg.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_fundamentals,node_oop,node_advanced,node_appendix toneBlue
class node_git,node_frc toneAmber
class node_book_runtime,node_code_editor,node_syntax_highlighting,node_rust_mode,node_search,node_sidebar_navigation toneMint
class node_page_toc,node_reader_controls,node_source_controls,node_inheritance_copy toneRose
class node_learner toneIndigo
```

## Components

### Java Curriculum

- [Java Fundamentals](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Java-Fundamentals): `src/Java-Fundamentals`
- [Object-Oriented Programming](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Object-Oriented-Programming): `src/Object-Oriented-Programming`
- [Advanced Java](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Advanced-Java): `src/Advanced-Java`
- [Appendix](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Appendix): `src/Appendix`

### Programming Practice

- [Git & GitHub](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/Git): `src/Git`
- [FRC Programming](https://github.com/montclairrobotics/frc-programming-guide/tree/main/src/FRC): `src/FRC`

### Book Reader

- [Book Interaction](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/book.js): `book/html/book.js`
- [Code Editor](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/ace.js): `book/html/ace.js`
- [Syntax Highlighting](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/highlight.js): `book/html/highlight.js`
- [Rust Editor Mode](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/mode-rust.js): `book/html/mode-rust.js`
- [Book Search](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/searcher.js): `book/html/searcher.js`
- [Sidebar Navigation](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/toc.js): `book/html/toc.js`

### Reader Enhancements

- [Page Contents](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/theme/pagetoc.js): `book/html/theme/pagetoc.js`
- [Reader Controls](https://github.com/montclairrobotics/frc-programming-guide/blob/main/book/html/theme/rn_qol.js): `book/html/theme/rn_qol.js`
- [Source Controls](https://github.com/montclairrobotics/frc-programming-guide/blob/main/theme/rn_qol.js): `theme/rn_qol.js`
- [Code Copy Button](https://github.com/montclairrobotics/frc-programming-guide/blob/main/src/Advanced-Java/Inheritance/Inheritance_Assets/rn_qol_gfg.js): `src/Advanced-Java/Inheritance/Inheritance_Assets/rn_qol_gfg.js`

### Other components

- **Learner**

## Connections

- Learner → Java Fundamentals: studies topics (evidence: `readme.md`)
- Learner → Object-Oriented Programming: studies topics (evidence: `readme.md`)
- Learner → Advanced Java: studies topics (evidence: `readme.md`)
- Learner → Git & GitHub: studies topics (evidence: `readme.md`)
- Learner → FRC Programming: studies topics (evidence: `readme.md`)
- Learner → Appendix: uses reference (evidence: `readme.md`)
- Book Interaction → Code Editor: reads editor (evidence: `book/html/book.js`)
- Learner → Book Search: searches book (evidence: `book/html/searcher.js`)
- Learner → Sidebar Navigation: navigates chapters (evidence: `book/html/toc.js`)
- Learner → Page Contents: navigates headings (evidence: `book/html/theme/pagetoc.js`)
- Learner → Reader Controls: adjusts reader (evidence: `book/html/theme/rn_qol.js`)
- Learner → Source Controls: adjusts reader (evidence: `theme/rn_qol.js`)
- Learner → Code Copy Button: copies code (evidence: `src/Advanced-Java/Inheritance/Inheritance_Assets/rn_qol_gfg.js`)
