ZachVec GitHub Pages

Site: https://zachvec.github.io/

Jekyll blog (minima theme) at root. Project documentation generated by mdBook + Doxygen, deployed via GitHub Actions.

Directory structure

/
├── _config.yml           # Jekyll config (minima theme, plugins)
├── index.md              # Blog home
├── _posts/               # Blog posts (YYYY-MM-DD-title.md)
├── docs/index.md         # Documentation portal (/docs/)
├── projects/             # Built docs (gitignored, deployed via Actions artifact)
├── _docsrc/<project>/    # Git submodules pointing to project repos
├── .github/workflows/
│   └── build-docs.yml    # CI: builds mdBook + Doxygen from submodules
└── Gemfile               # github-pages gem for local preview

Adding a new project’s documentation

  1. Push the project to GitHub with a docs/ directory containing:
    • docs/book.toml — mdBook config
    • docs/src/SUMMARY.md — table of contents
    • docs/src/*.md — chapter files
    • docs/Doxyfile — Doxygen config (optional, for C++ API docs)
  2. Add it as a submodule:
    git submodule add git@github.com:ZachVec/<project>.git _docsrc/<project>
    
  3. Update .github/workflows/build-docs.yml to build the new project. Add a new set of steps following the ccjieba pattern: update submodule, mdbook build, doxygen (optional), copy to projects/<project>/.

  4. Add a link in docs/index.md.

  5. In the project’s own repo, add .github/workflows/docs-trigger.yml:
    name: Trigger Docs Rebuild
    on:
      push:
        branches: [master]
        paths: ['docs/**']
    jobs:
      trigger:
        runs-on: ubuntu-latest
        steps:
          - uses: peter-evans/repository-dispatch@v3
            with:
              token: $
              repository: ZachVec/ZachVec.github.io
              event-type: docs-updated
    

    Requires PAGES_REPO_TOKEN secret in the project repo (PAT with repo scope).

Manual CI trigger

gh workflow run build-docs.yml --repo ZachVec/ZachVec.github.io

CI builds Jekyll blog + mdBook + Doxygen into a single artifact, then deploys via deploy-pages. The projects/ directory is gitignored — no build artifacts in the repo.

Local preview

cd /home/zach/pages
jekyll build && jekyll serve    # blog at http://localhost:4000
mdbook build _docsrc/ccjieba/docs  # preview mdBook output
(cd _docsrc/ccjieba/docs && doxygen Doxyfile)  # preview Doxygen output

Blog posts

Create _posts/YYYY-MM-DD-slug.md with front matter:

---
layout: post
title: "Title"
date: YYYY-MM-DD
categories: category
---

Push to deploy. No CI needed — GitHub Pages auto-builds Jekyll.