# System map — krahets/hello-algo

> Canonical page: https://codevetter.com/unpack/hello-algo/system-map

# System map — krahets/hello-algo

Scanned commit 28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9 (2026-08-18). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

The system has two coupled halves: (1) a MkDocs Material documentation site whose source lives in docs/ with theme overrides in overrides/ and build config in mkdocs.yml, and (2) a multi-language code corpus in codes/ organized as chapter_* directories mirroring the book chapters. Four locale trees (en/, ja/, ru/, zh-hant/) replicate the whole structure, each with its own mkdocs.yml that uses INHERIT to extend the root config. The Dockerfile is the deployment entrypoint: it builds all five locale sites into a single site/ tree and serves it with python -m http.server on port 8000 via docker-compose. There is no runtime backend, database, or service layer — the only external integrations are CDN-loaded assets (MathJax, giscus) and GitHub Discussions for comments.
- Root mkdocs.yml defines the MkDocs Material site 'Hello 算法' v1.3.0 with docs_dir=build/docs, site_dir=site, theme 'material' with custom_dir=build/overrides — the staged build/ layout is produced by copying docs/ and overrides/ before building. — [mkdocs.yml#L1-20](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/mkdocs.yml#L1-L20) [Dockerfile#L14-18](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/Dockerfile#L14-L18)
- Dockerfile is the deployment entrypoint: FROM python:3.10.0-alpine, installs mkdocs-material==9.5.5 and mkdocs-glightbox, runs 'mkdocs build' once for the root site and once per locale (zh-hant, en, ja, ru), then serves /hello-algo/site via 'python -m http.server 8000'. — [Dockerfile#L1-38](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/Dockerfile#L1-L38)
- docker-compose.yml exposes the single 'hello-algo' service on host port 8000; there is no other service, volume, or network configuration. — [docker-compose.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docker-compose.yml)
- docs/ contains the Simplified Chinese source of the book: ~120 markdown files in chapter_* directories, plus per-page image directories named <page>.assets/, a minimal index.md stub, and a hand-written index.html landing page. — [docs/index.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/index.md) [docs/index.html](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/index.html) [docs/chapter_array_and_linkedlist/array.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/chapter_array_and_linkedlist/array.md)
- codes/ holds 16 language subdirectories (c, cpp, csharp, dart, go, java, javascript, kotlin, python, pythontutor, ruby, rust, swift, typescript, zig, plus docker assets); each language dir mirrors the book with chapter_* folders of self-contained runnable samples. — [codes/python/chapter_array_and_linkedlist/array.py](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/chapter_array_and_linkedlist/array.py) [codes/go/chapter_array_and_linkedlist/array.go](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/chapter_array_and_linkedlist/array.go) [codes/rust/chapter_array_and_linkedlist/array.rs](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/rust/chapter_array_and_linkedlist/array.rs)
- Each locale tree (en/, ja/, ru/, zh-hant/) is a near-complete copy of docs/ + codes/ with a locale mkdocs.yml that uses 'INHERIT: ../mkdocs.yml' config inheritance and overrides site_name, site_url, docs_dir (../build/<locale>/docs) and site_dir (../site/<locale>). — [en/mkdocs.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/en/mkdocs.yml) [zh-hant/mkdocs.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/zh-hant/mkdocs.yml) [Dockerfile#L20-34](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/Dockerfile#L20-L34)
- Per-language manifests anchor each code subproject: codes/go/go.mod (module github.com/krahets/hello-algo, go 1.19), codes/rust/Cargo.toml (package hello-algo-rust with a [[bin]] entry per sample), codes/typescript/package.json (script 'check': tsc) + tsconfig.json (noEmit), codes/csharp/hello-algo.csproj, codes/c/CMakeLists.txt + codes/cpp/CMakeLists.txt, codes/zig/build.zig. — [codes/go/go.mod](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/go.mod) [codes/rust/Cargo.toml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/rust/Cargo.toml) [codes/typescript/package.json](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/typescript/package.json) [codes/typescript/tsconfig.json](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/typescript/tsconfig.json) [codes/csharp/hello-algo.csproj](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/csharp/hello-algo.csproj) [codes/c/CMakeLists.txt](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/c/CMakeLists.txt) [codes/zig/build.zig](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/zig/build.zig)
- CI is 13 per-language GitHub Actions workflows in .github/workflows/ (c, cpp, dart, dotnet, go, java, javascript, kotlin, python, ruby, rust, swift, typescript), each path-filtered to codes/<lang>/ and en/codes/<lang>/ and matrixed across ubuntu/macos/windows. — [.github/workflows/python.yml#L6-30](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/python.yml#L6-L30) [.github/workflows/typescript.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/typescript.yml) [.github/workflows/c.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/c.yml)
- The theme is customized through overrides/: main.html extends base.html to render a per-language announcement banner, and partials/{actions,comments,content}.html override Material's edit/view buttons, giscus comment injection, and prev/next footer. — [overrides/main.html](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/overrides/main.html) [overrides/partials/actions.html](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/overrides/partials/actions.html) [overrides/partials/comments.html](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/overrides/partials/comments.html) [overrides/partials/content.html](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/overrides/partials/content.html)
- Comments are provided by giscus (GitHub Discussions backend): overrides/partials/comments.html injects the giscus.app client script with data-repo='krahets/hello-algo' and giscus.json whitelists the hello-algo.com origins. — [overrides/partials/comments.html#L25-41](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/overrides/partials/comments.html#L25-L41) [giscus.json](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/giscus.json)
- overrides/zensical/ is a parallel, second theme/toolchain configuration (zensical.toml with its own extra_css/extra_javascript) for the Zensical static site generator, including an animation_player.js not present in the MkDocs theme — indicating an in-progress migration target. (inferred) — [overrides/zensical/zensical.toml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/overrides/zensical/zensical.toml) [overrides/zensical/javascripts/animation_player.js](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/overrides/zensical/javascripts/animation_player.js) [mkdocs.yml#L139-143](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/mkdocs.yml#L139-L143)
- Shared helper code lives in per-language utility packages: codes/python/modules/ (ListNode, TreeNode, Vertex, print_util), codes/javascript/modules/, codes/typescript/modules/, codes/go/pkg/, codes/rust/src/include/ (via src/lib.rs 'pub mod include'), codes/c/utils/. — [codes/python/modules/__init__.py](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/modules/__init__.py) [codes/go/pkg/list_node.go](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/pkg/list_node.go) [codes/rust/src/lib.rs](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/rust/src/lib.rs) [codes/c/utils/CMakeLists.txt](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/c/utils/CMakeLists.txt)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
