Hands-on robotics workshops from the Autonomous Robotics Club at GMU, built with MkDocs Material.
- Site: https://arc-gmu.github.io/workshops/
- Club website: https://gmu.autonomousrobotics.club/
- Discord: https://discord.gg/zn93yRNZGb
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
mkdocs servedocs/<category>/<workshop>/ pages: index.md (overview) + numbered lessons
docs/<category>/<workshop>/images/
code/<category>/<workshop>/ starter and solution code, one folder per lesson
templates/workshop/ copy this to start a new workshop
Categories become the tabs across the top of the site (Start Here, Electronics, Mechanical, ...). Workshops go in the sidebar under their category.
- Copy
templates/workshop/todocs/<category>/<workshop-name>/. - Fill in
index.md: thedescription(shown in search results and link previews), tags, level, duration, prerequisites and what to bring. Give each lesson page a one-linedescription:too. - Put code in
code/<category>/<workshop-name>/<lesson>/starter/and.../solution/. - Add the workshop to
navinmkdocs.yml, and add a card for it todocs/index.mdand the category'sindex.md.
Pages pull code straight from code/, so the docs can't drift from the real files:
```cpp title="blink_solution.ino"
--8<-- "code/hardware/arduino-beginners/02-blink/blink_solution/blink_solution.ino"
```If the file doesn't exist, the build fails.
Arduino sketches must sit in a folder with the same name as the .ino file (blink_starter/blink_starter.ino), or the IDE won't open them.
.stl, .step, .f3d, .3mf and SolidWorks files are stored with Git LFS (see .gitattributes). Run git lfs install once before committing them.
- Every push to
mainbuilds the site and publishes it to GitHub Pages (Repo → Settings → Pages → Source: GitHub Actions). - Pull requests that touch
docs/orcode/runmkdocs build --strict, so broken links and missing code files fail the check.
- Material for MkDocs is in maintenance mode (fixes through Nov 2026). The version is pinned, so the site keeps building. Zensical, from the same team, reads
mkdocs.yml, so migrating later should be straightforward. - Set
NO_MKDOCS_2_WARNING=trueto hide the MkDocs 2.0 warning;requirements.txtkeeps MkDocs below 2.