docs: add MkDocs Material documentation website
Renders the root markdown (manual, tools, changelog) into a static, searchable HTML site with client-side (lunr.js) search and a dark/light theme. Built in Docker via website/build-docs.sh (no host installs). Public URL is set at build time with SITE_URL=... (default is a neutral placeholder; the site works at any URL since site_url only affects the sitemap/canonical links). Generated output (website/_build/) is gitignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5ae4fa70bd
commit
35ba6e9975
5 changed files with 154 additions and 0 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -5,3 +5,6 @@ codec_bin_section_1.bin
|
||||||
# Generated language plugin files + host-side builder binary
|
# Generated language plugin files + host-side builder binary
|
||||||
*.gla
|
*.gla
|
||||||
languages_builder
|
languages_builder
|
||||||
|
|
||||||
|
# Generated docs site
|
||||||
|
website/_build/
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,10 @@ single running list until the first versioned release.
|
||||||
OpenGD77 features and FreeTRX additions, each tagged 🟢 [FreeTRX] or ⚪
|
OpenGD77 features and FreeTRX additions, each tagged 🟢 [FreeTRX] or ⚪
|
||||||
[OpenGD77]. Includes the spectrum scope (VFO sweep, hold `#`), channel add/delete,
|
[OpenGD77]. Includes the spectrum scope (VFO sweep, hold `#`), channel add/delete,
|
||||||
mute, dimming, and a button reference.
|
mute, dimming, and a button reference.
|
||||||
|
- **Documentation website** (`website/`) — MkDocs Material config that renders the
|
||||||
|
markdown into a static, searchable HTML site (client-side search, dark/light
|
||||||
|
theme). Built in Docker via `./website/build-docs.sh`; the public URL is set with
|
||||||
|
`SITE_URL=…`. For self-hosting on Forgejo.
|
||||||
|
|
||||||
## 0.4.0
|
## 0.4.0
|
||||||
|
|
||||||
|
|
|
||||||
49
website/build-docs.sh
Normal file
49
website/build-docs.sh
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Build the FreeTRX documentation website (MkDocs Material) entirely in Docker.
|
||||||
|
# Source markdown lives in the repo root; this assembles it into _build/docs and
|
||||||
|
# renders a static, self-contained HTML site with client-side search into
|
||||||
|
# website/_build/site.
|
||||||
|
#
|
||||||
|
# Usage: ./website/build-docs.sh # build
|
||||||
|
# ./website/build-docs.sh serve # live-reload preview on http://localhost:8000
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
ROOT="$(cd "$HERE/.." && pwd)"
|
||||||
|
SRC="$HERE/_build/docs"
|
||||||
|
IMAGE="squidfunk/mkdocs-material:9"
|
||||||
|
|
||||||
|
# ---- assemble the docs source tree from the root markdown -----------------
|
||||||
|
rm -rf "$HERE/_build"
|
||||||
|
mkdir -p "$SRC/images"
|
||||||
|
|
||||||
|
cp "$HERE/home.md" "$SRC/index.md"
|
||||||
|
cp "$ROOT/MANUAL.md" "$SRC/MANUAL.md"
|
||||||
|
cp "$ROOT/TOOLS.md" "$SRC/TOOLS.md"
|
||||||
|
cp "$ROOT/CHANGELOG.md" "$SRC/CHANGELOG.md"
|
||||||
|
cp "$ROOT"/docs/images/*.png "$SRC/images/" 2>/dev/null || true
|
||||||
|
|
||||||
|
# MANUAL.md links back to README.md (a repo file, not a site page) -> point it at
|
||||||
|
# the site home instead.
|
||||||
|
sed -i.bak 's#(README.md)#(index.md)#g' "$SRC/MANUAL.md" && rm -f "$SRC/MANUAL.md.bak"
|
||||||
|
|
||||||
|
# Optional public URL (sitemap / canonical only). Set SITE_URL to override the
|
||||||
|
# placeholder in mkdocs.yml — the site works at any URL regardless.
|
||||||
|
ENVARGS=()
|
||||||
|
if [[ -n "${SITE_URL:-}" ]]; then
|
||||||
|
echo "==> Site URL: $SITE_URL"
|
||||||
|
ENVARGS=(-e "SITE_URL=$SITE_URL")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---- build (or serve) -----------------------------------------------------
|
||||||
|
if [[ "${1:-}" == "serve" ]]; then
|
||||||
|
echo "==> Serving docs on http://localhost:8000 (Ctrl-C to stop)"
|
||||||
|
docker run --rm -it -p 8000:8000 "${ENVARGS[@]+"${ENVARGS[@]}"}" -v "$HERE":/docs "$IMAGE" serve -a 0.0.0.0:8000
|
||||||
|
else
|
||||||
|
echo "==> Building docs site"
|
||||||
|
docker run --rm "${ENVARGS[@]+"${ENVARGS[@]}"}" -v "$HERE":/docs "$IMAGE" build
|
||||||
|
echo
|
||||||
|
echo "==> Done. Static site (upload the *contents* of this folder):"
|
||||||
|
echo " $HERE/_build/site"
|
||||||
|
fi
|
||||||
35
website/home.md
Normal file
35
website/home.md
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
# FreeTRX
|
||||||
|
|
||||||
|
**FreeTRX** is a fork of the [OpenGD77](https://opengd77.org) firmware for the
|
||||||
|
**TYT MD-UV380 / Retevis RT-3S** and **Baofeng DM-1701 / Retevis RT-84**.
|
||||||
|
|
||||||
|
[Latest release :material-download:](https://git.dk1da.de/DK1DA/FreeTRX/releases){ .md-button .md-button--primary }
|
||||||
|
[Source :material-git:](https://git.dk1da.de/DK1DA/FreeTRX){ .md-button }
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
<div class="grid cards" markdown>
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- **[User Manual](MANUAL.md)** — every feature, tagged 🟢 **FreeTRX** (new/changed)
|
||||||
|
or ⚪ **OpenGD77** (inherited), with a button reference.
|
||||||
|
- **[Building & Flashing](TOOLS.md)** — Docker build, the flash helper, screenshots.
|
||||||
|
- **[Changelog](CHANGELOG.md)** — version history.
|
||||||
|
|
||||||
|
## Supported radios
|
||||||
|
|
||||||
|
Developed and tested on the **TYT MD-UV380 / Retevis RT-3S**. A DM-1701 / RT-84
|
||||||
|
build is also produced but not yet officially tested. Want to help test another
|
||||||
|
OpenGD77-supported radio? Email **Marcus, DK1DA** at
|
||||||
|
[qsl@dk1da.de](mailto:qsl@dk1da.de).
|
||||||
|
|
||||||
|
!!! note "License"
|
||||||
|
FreeTRX inherits the OpenGD77 license (modified BSD 3-Clause with a
|
||||||
|
non-commercial clause). It is not GPL-compatible and cannot be relicensed.
|
||||||
63
website/mkdocs.yml
Normal file
63
website/mkdocs.yml
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
site_name: FreeTRX Documentation
|
||||||
|
site_description: User manual for the FreeTRX firmware (an OpenGD77 fork for MD-UV380 / DM-1701)
|
||||||
|
site_author: Marcus, DK1DA
|
||||||
|
# Public URL where the docs are hosted. Only affects the sitemap / canonical links /
|
||||||
|
# search-share URLs — the site itself works at ANY domain or path (relative links).
|
||||||
|
# Override at build time without editing this file: SITE_URL=https://your.url/ ./build-docs.sh
|
||||||
|
site_url: !ENV [SITE_URL, "https://docs.example.com/"]
|
||||||
|
repo_name: DK1DA/FreeTRX
|
||||||
|
repo_url: https://git.dk1da.de/DK1DA/FreeTRX
|
||||||
|
|
||||||
|
# Source markdown is assembled into _build/docs by build-docs.sh; output goes to _build/site.
|
||||||
|
docs_dir: _build/docs
|
||||||
|
site_dir: _build/site
|
||||||
|
use_directory_urls: true
|
||||||
|
|
||||||
|
theme:
|
||||||
|
name: material
|
||||||
|
language: en
|
||||||
|
palette:
|
||||||
|
- media: "(prefers-color-scheme: light)"
|
||||||
|
scheme: default
|
||||||
|
primary: green
|
||||||
|
accent: green
|
||||||
|
toggle:
|
||||||
|
icon: material/weather-night
|
||||||
|
name: Switch to dark mode
|
||||||
|
- media: "(prefers-color-scheme: dark)"
|
||||||
|
scheme: slate
|
||||||
|
primary: green
|
||||||
|
accent: green
|
||||||
|
toggle:
|
||||||
|
icon: material/weather-sunny
|
||||||
|
name: Switch to light mode
|
||||||
|
features:
|
||||||
|
- navigation.top
|
||||||
|
- navigation.sections
|
||||||
|
- navigation.instant
|
||||||
|
- search.suggest
|
||||||
|
- search.highlight
|
||||||
|
- search.share
|
||||||
|
- content.code.copy
|
||||||
|
- toc.follow
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
- search # built-in client-side (lunr.js) full-text search — no external service
|
||||||
|
|
||||||
|
nav:
|
||||||
|
- Home: index.md
|
||||||
|
- User Manual: MANUAL.md
|
||||||
|
- Building & Flashing: TOOLS.md
|
||||||
|
- Changelog: CHANGELOG.md
|
||||||
|
|
||||||
|
markdown_extensions:
|
||||||
|
- admonition
|
||||||
|
- attr_list
|
||||||
|
- tables
|
||||||
|
- toc:
|
||||||
|
permalink: true
|
||||||
|
- pymdownx.superfences
|
||||||
|
- pymdownx.highlight
|
||||||
|
- pymdownx.emoji:
|
||||||
|
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||||
|
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||||
Loading…
Reference in a new issue