This file provides guidance to AI coding agents when working with this repository.
OTDocs is the documentation website for OpenTrafficCam, an open-source workflow for video-based traffic analysis. The site is built with MkDocs using the Material theme.
Language: The main site pages (landing page, pricing, team) are in German (language: de in mkdocs.yml).
The documentation section under docs/ (OTCamera, OTVision, OTAnalytics, OTLabels, contribute) is written in English.
Repository tooling (this file, README, configs, workflows) is also in English.
sh ./install_dev.shCreates a Python venv in ./venv and installs dependencies from requirements.txt.
sh ./start_local_server.shEnsures venv is up to date, then runs mkdocs serve at http://127.0.0.1:8000 with auto-reload.
./venv/bin/python -m mkdocs buildGenerates static HTML in /site.
docs/— Markdown source files organized by module:OTCamera/,OTVision/,OTAnalytics/,OTLabels/, plusoverview/,contribute/mkdocs.yml— Central config: navigation (nav:), theme, plugins, markdown extensions. New pages must be added tonav:.overrides/— Custom Material theme templates (HTML). Watched by MkDocs for auto-reload.docs/stylesheets/— Custom CSS (colors, fonts, KaTeX, admonitions)docs/assets/— Images (img/), videos (video/), JavaScript (js/for KaTeX), fonts, iconssite/— Build output (gitignored)gh-pagesbranch — Auto-generated by deployment; never edit directly
PRs run GitHub super-linter slim v7 (only on changed files) plus a test build (mkdocs build). The following linters are active:
- markdownlint — Config:
.markdownlint.yaml. Key rules: line length 200 chars (headings: 80), unordered list indent 2 spaces, images must have alt text (MD045), inline HTML restricted to<figure>and<figcaption>only (MD033), files must end with single newline (MD047). - yamllint — Config:
.github/linters/.yaml-lint.yml. Line length disabled, key ordering disabled, document-start is warning-only. - HTMLHint — Config:
.github/linters/.htmlhintrc. Only custom rule:doctype-first: false. - stylelint — Config:
.github/linters/.stylelintrc.json. Extendsstylelint-config-standard, disablescustom-property-patternandselector-class-pattern.
Explicitly disabled: JavaScript (ES + Standard), Python (pylint, mypy, black), JSCPD, Go Releaser.
- Navigation is defined in
mkdocs.ymlundernav:. Adding a new page requires an entry there. - Markdown extensions available: admonitions, mermaid diagrams, KaTeX math (
$...$), tabbed content, task lists, footnotes, keys, snippets, emoji (twemoji), tables, attribute lists, inline HTML (limited). - All images must have alt text (enforced by markdownlint MD045).
- Work on feature branches, PR to
master. - Never commit to
masterorgh-pagesdirectly. - Merges to
mastertrigger automatic deployment via GitHub Actions (mkdocs gh-deploy --force). - PRs run super-linter and a test build (see Linting section above).
- Dependabot checks for weekly updates to pip packages and GitHub Actions.
- Never merge pull requests. Merging is always done by a human reviewer.