From d15c58994e24be08a8f6da5be59bb30ae2ef3c14 Mon Sep 17 00:00:00 2001 From: agessaman Date: Sat, 7 Feb 2026 20:10:09 -0800 Subject: [PATCH] chore: Remove outdated documentation files and update references - Deleted COMMANDS.md, DOCKER.md, WEB_VIEWER.md, and other related documentation files to streamline the project structure. - Updated README.md and other documentation references to point to the new locations of the command and Docker instructions. - Added optional dependencies for documentation generation in pyproject.toml. --- .github/workflows/docs.yml | 28 ++++++ README.md | 4 +- COMMANDS.md => docs/COMMANDS.md | 142 ++++++++++++++-------------- docs/DISCORD_BRIDGE.md | 5 - DOCKER.md => docs/DOCKER.md | 2 +- docs/FEEDS.md | 5 - docs/MAP_UPLOADER.md | 5 - docs/PACKET_CAPTURE.md | 5 - docs/PATH_COMMAND_CONFIG.md | 5 - docs/REPEATER_COMMANDS.md | 5 - docs/WEATHER_SERVICE.md | 5 - WEB_VIEWER.md => docs/WEB_VIEWER.md | 0 docs/_config.yml | 17 ---- docs/configuration.md | 63 ++++++++++++ docs/faq.md | 23 +++++ docs/getting-started.md | 82 ++++++++++++++++ docs/index.md | 48 ++++++---- docs/service-plugins.md | 18 ++++ mkdocs.yml | 62 ++++++++++++ pyproject.toml | 3 + 20 files changed, 382 insertions(+), 145 deletions(-) create mode 100644 .github/workflows/docs.yml rename COMMANDS.md => docs/COMMANDS.md (98%) rename DOCKER.md => docs/DOCKER.md (99%) rename WEB_VIEWER.md => docs/WEB_VIEWER.md (100%) delete mode 100644 docs/_config.yml create mode 100644 docs/configuration.md create mode 100644 docs/faq.md create mode 100644 docs/getting-started.md create mode 100644 docs/service-plugins.md create mode 100644 mkdocs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..421e7dd --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,28 @@ +# Build and deploy Material for MkDocs to GitHub Pages +name: Deploy docs + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: write + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install MkDocs and Material + run: pip install mkdocs-material + + - name: Deploy to GitHub Pages + run: mkdocs gh-deploy --force diff --git a/README.md b/README.md index f41396a..0e8d8d3 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ For containerized deployment using Docker: docker-compose logs -f ``` -See [DOCKER.md](DOCKER.md) for detailed Docker deployment instructions, including serial port access, web viewer configuration, and troubleshooting. +See [DOCKER.md](docs/DOCKER.md) for detailed Docker deployment instructions, including serial port access, web viewer configuration, and troubleshooting. ## NixOS Use the Nix flake via flake.nix @@ -220,7 +220,7 @@ python meshcore_bot.py ### Available Commands -For a comprehensive list of all available commands with examples and detailed explanations, see [COMMANDS.md](COMMANDS.md). +For a comprehensive list of all available commands with examples and detailed explanations, see [COMMANDS.md](docs/COMMANDS.md). Quick reference: - **Basic:** `test`, `ping`, `help`, `hello`, `cmd` diff --git a/COMMANDS.md b/docs/COMMANDS.md similarity index 98% rename from COMMANDS.md rename to docs/COMMANDS.md index 174df44..b6cc4cd 100644 --- a/COMMANDS.md +++ b/docs/COMMANDS.md @@ -11,7 +11,7 @@ This document provides a comprehensive list of all available commands in the Mes - [Entertainment Commands](#entertainment-commands) - [Sports Commands](#sports-commands) - [MeshCore Utility Commands](#meshcore-utility-commands) -- [Management Commands](#management-commands) +- [Admin Commands](#admin-commands) --- @@ -663,9 +663,77 @@ mt --- -## Management Commands +## Command Syntax -**Note:** Management commands are only available via Direct Message (DM) and may require ACL permissions. +### Prefix + +Commands can be used with or without the `!` prefix: +- `test` or `!test` - Both work +- `wx 98101` or `!wx 98101` - Both work + +### Direct Messages + +Some commands work in both public channels and direct messages, while admin commands typically require direct messages for security. + +### Rate Limiting + +The bot implements rate limiting to prevent spam. If you send commands too quickly, you may receive a rate limit message. Wait a few seconds before trying again. + +### Case Sensitivity + +Most commands are case-insensitive: +- `TEST` and `test` work the same +- `WX 98101` and `wx 98101` work the same + +### Getting Help + +Use the `help` command to get more information: +- `help` - List all commands +- `help ` - Get detailed help for a specific command + +--- + +## Additional Notes + +### Location Requirements + +Some commands use location data: +- **`sun` and `moon`** - Use the bot's configured default location (`bot_latitude` and `bot_longitude` in config.ini), not the user's location from their advert +- **`solar`** - Does not require location (provides global solar conditions) +- **`solarforecast`** - Requires a location parameter (location name, repeater name, coordinates, or zipcode) +- **`wx`** - Requires a zipcode parameter +- **`gwx`** - Requires a location parameter +- **`aqi`** - Requires a location parameter + +### API Keys + +Some commands require API keys to be configured in `config.ini`: +- `satpass` - Requires `n2yo_api_key` +- `aqi` - Requires `airnow_api_key` (optional, uses fallback if not configured) + +### Weather Data + +- `wx` uses NOAA API (US locations only) +- `gwx` uses Open-Meteo API (global locations) +- Both provide current conditions and forecasts + +### Command Categories + +Commands are organized into categories for easier discovery: +- **Basic** - Essential commands for testing and help +- **Information** - Weather, astronomy, and data queries +- **Emergency** - Emergency and safety information +- **Gaming** - Fun commands for games and random numbers +- **Entertainment** - Jokes and humorous responses +- **Sports** - Sports scores and information +- **MeshCore Utility** - Network-specific utilities +- **Admin** - Administrative commands (DM only) + +--- + +## Admin Commands + +**Note:** Admin commands are only available via Direct Message (DM) and may require ACL permissions. ### `repeater` or `repeaters` or `rp` @@ -792,73 +860,5 @@ feed test https://example.com/feed.xml --- -## Command Syntax - -### Prefix - -Commands can be used with or without the `!` prefix: -- `test` or `!test` - Both work -- `wx 98101` or `!wx 98101` - Both work - -### Direct Messages - -Some commands work in both public channels and direct messages, while management commands typically require direct messages for security. - -### Rate Limiting - -The bot implements rate limiting to prevent spam. If you send commands too quickly, you may receive a rate limit message. Wait a few seconds before trying again. - -### Case Sensitivity - -Most commands are case-insensitive: -- `TEST` and `test` work the same -- `WX 98101` and `wx 98101` work the same - -### Getting Help - -Use the `help` command to get more information: -- `help` - List all commands -- `help ` - Get detailed help for a specific command - ---- - -## Additional Notes - -### Location Requirements - -Some commands use location data: -- **`sun` and `moon`** - Use the bot's configured default location (`bot_latitude` and `bot_longitude` in config.ini), not the user's location from their advert -- **`solar`** - Does not require location (provides global solar conditions) -- **`solarforecast`** - Requires a location parameter (location name, repeater name, coordinates, or zipcode) -- **`wx`** - Requires a zipcode parameter -- **`gwx`** - Requires a location parameter -- **`aqi`** - Requires a location parameter - -### API Keys - -Some commands require API keys to be configured in `config.ini`: -- `satpass` - Requires `n2yo_api_key` -- `aqi` - Requires `airnow_api_key` (optional, uses fallback if not configured) - -### Weather Data - -- `wx` uses NOAA API (US locations only) -- `gwx` uses Open-Meteo API (global locations) -- Both provide current conditions and forecasts - -### Command Categories - -Commands are organized into categories for easier discovery: -- **Basic** - Essential commands for testing and help -- **Information** - Weather, astronomy, and data queries -- **Emergency** - Emergency and safety information -- **Gaming** - Fun commands for games and random numbers -- **Entertainment** - Jokes and humorous responses -- **Sports** - Sports scores and information -- **MeshCore Utility** - Network-specific utilities -- **Management** - Administrative commands (DM only) - ---- - For more information about configuring the bot, see the main [README.md](README.md) file. diff --git a/docs/DISCORD_BRIDGE.md b/docs/DISCORD_BRIDGE.md index 451c052..5a19835 100644 --- a/docs/DISCORD_BRIDGE.md +++ b/docs/DISCORD_BRIDGE.md @@ -1,8 +1,3 @@ ---- -layout: default -title: Discord Bridge Service ---- - # Discord Bridge Service The Discord Bridge service posts MeshCore channel messages to Discord channels via webhooks. This is a **one-way, read-only bridge** - messages only flow from MeshCore to Discord. diff --git a/DOCKER.md b/docs/DOCKER.md similarity index 99% rename from DOCKER.md rename to docs/DOCKER.md index 19fbcc2..ff0e303 100644 --- a/DOCKER.md +++ b/docs/DOCKER.md @@ -470,4 +470,4 @@ docker-compose up -d - [Docker Documentation](https://docs.docker.com/) - [Docker Compose Documentation](https://docs.docker.com/compose/) -- [Main README](README.md) for general bot configuration +- [Main README](https://github.com/agessaman/meshcore-bot/blob/main/README.md) for general bot configuration diff --git a/docs/FEEDS.md b/docs/FEEDS.md index d1d7cbe..4b7c12f 100644 --- a/docs/FEEDS.md +++ b/docs/FEEDS.md @@ -1,8 +1,3 @@ ---- -layout: default -title: Feed Management ---- - # Feed Management The Feed Management system allows the bot to subscribe to RSS feeds and REST APIs, automatically polling for new content and posting updates to specified mesh channels. diff --git a/docs/MAP_UPLOADER.md b/docs/MAP_UPLOADER.md index b89dc2c..fd4b3da 100644 --- a/docs/MAP_UPLOADER.md +++ b/docs/MAP_UPLOADER.md @@ -1,8 +1,3 @@ ---- -layout: default -title: Map Uploader Service ---- - # Map Uploader Service Uploads node advertisements to [map.meshcore.dev](https://map.meshcore.dev) for network visualization. diff --git a/docs/PACKET_CAPTURE.md b/docs/PACKET_CAPTURE.md index b86818d..2e2dea1 100644 --- a/docs/PACKET_CAPTURE.md +++ b/docs/PACKET_CAPTURE.md @@ -1,8 +1,3 @@ ---- -layout: default -title: Packet Capture Service ---- - # Packet Capture Service Captures packets from the MeshCore network and publishes them to MQTT brokers. diff --git a/docs/PATH_COMMAND_CONFIG.md b/docs/PATH_COMMAND_CONFIG.md index 4a77484..545706b 100644 --- a/docs/PATH_COMMAND_CONFIG.md +++ b/docs/PATH_COMMAND_CONFIG.md @@ -1,8 +1,3 @@ ---- -layout: default -title: Path Command Configuration ---- - # Path Command Configuration Guide This document explains all configuration parameters for the Path Command, which decodes hex path data to identify repeaters in message routing paths. diff --git a/docs/REPEATER_COMMANDS.md b/docs/REPEATER_COMMANDS.md index 966e427..7f3da5d 100644 --- a/docs/REPEATER_COMMANDS.md +++ b/docs/REPEATER_COMMANDS.md @@ -1,8 +1,3 @@ ---- -layout: default -title: Repeater Management Commands ---- - # Repeater Management DM Commands This document provides comprehensive documentation for all repeater management commands available via direct message (DM) to the bot. diff --git a/docs/WEATHER_SERVICE.md b/docs/WEATHER_SERVICE.md index 86bc242..71700a0 100644 --- a/docs/WEATHER_SERVICE.md +++ b/docs/WEATHER_SERVICE.md @@ -1,8 +1,3 @@ ---- -layout: default -title: Weather Service ---- - # Weather Service Provides scheduled weather forecasts, weather alerts, and lightning detection. diff --git a/WEB_VIEWER.md b/docs/WEB_VIEWER.md similarity index 100% rename from WEB_VIEWER.md rename to docs/WEB_VIEWER.md diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 95defb9..0000000 --- a/docs/_config.yml +++ /dev/null @@ -1,17 +0,0 @@ -# GitHub Pages / Jekyll config for meshcore-bot documentation -title: meshcore-bot Documentation -description: Documentation for the MeshCore bot and its services -theme: jekyll-theme-cayman -markdown: kramdown - -# Set to your repo URL (used for "Project overview" links on index) -repository_url: https://github.com/agessaman/meshcore-bot -repository_branch: main - -# Apply default layout to all docs under docs/ -defaults: - - scope: - path: "" - type: pages - values: - layout: default diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..9366f84 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,63 @@ +# Configuration + +The bot is configured via `config.ini` in the project root (or the path given with `--config`). This page describes how configuration is organized and where to find command-specific options. + +## config.ini structure + +- **Sections** are named in square brackets, e.g. `[Bot]`, `[Connection]`, `[Path_Command]`. +- **Options** are `key = value` (or `key=value`). Comments start with `#` or `;`. +- **Paths** can be relative (to the directory containing the config file) or absolute. For Docker, use absolute paths under `/data/` (see [Docker deployment](DOCKER.md)). + +The main sections include: + +| Section | Purpose | +|--------|---------| +| `[Bot]` | Bot name, database path, response toggles, command prefix | +| `[Connection]` | Serial, BLE, or TCP connection to the MeshCore device | +| `[Channels]` | Channels to monitor, DM behavior | +| `[Admin_ACL]` | Admin public keys and admin-only commands | +| `[Keywords]` | Keyword → response pairs | +| `[Weather]` | Units and settings shared by `wx` / `gwx` and Weather Service | +| `[Logging]` | Log file path and level | + +## Command and feature sections + +Many commands and features have their own section. Options there control whether the command is enabled and how it behaves. + +### Enabling and disabling commands + +- **`enabled`** – Common option to turn a command or plugin on or off. Example: + ```ini + [Aurora_Command] + enabled = true + ``` +- Commands without an `enabled` key are typically always available (subject to [Admin_ACL](https://github.com/agessaman/meshcore-bot/blob/main/README.md) for admin-only commands). + +### Command-specific sections + +Examples of sections that configure specific commands or features: + +- **`[Path_Command]`** – Path decoding and repeater selection. See [Path Command](PATH_COMMAND_CONFIG.md) for all options. +- **`[Prefix_Command]`** – Prefix lookup, prefix best, range limits. +- **`[Weather]`** – Used by the `wx` / `gwx` commands and the Weather Service plugin (see [Weather Service](WEATHER_SERVICE.md)). +- **`[Airplanes_Command]`** – Aircraft/ADS-B command (API URL, radius, limits). +- **`[Aurora_Command]`** – Aurora command (default coordinates). +- **`[Alert_Command]`** – Emergency alerts (agency IDs, etc.). +- **`[Sports_Command]`** – Sports scores (teams, leagues). +- **`[Joke_Command]`**, **`[DadJoke_Command]`** – Joke sources and options. + +Full reference: see `config.ini.example` in the repository for every section and option, with inline comments. + +## Path Command configuration + +The Path command has many options (presets, proximity, graph validation, etc.). All are documented in: + +**[Path Command](PATH_COMMAND_CONFIG.md)** – Presets, geographic and graph settings, and tuning. + +## Service plugin configuration + +Service plugins (Discord Bridge, Packet Capture, Map Uploader, Weather Service) each have their own section and are documented under [Service Plugins](service-plugins.md). + +## Reloading configuration + +Some configuration can be reloaded without restarting the bot using the **`reload`** command (admin only). Radio/connection settings are not changed by reload; restart the bot for those. diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 0000000..6c9827e --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,23 @@ +# FAQ + +Frequently asked questions about meshcore-bot. + +## Installation and upgrades + +### Will using `--upgrade` on the install script move over the settings file as well as upgrade the bot? + +No. The install script **never overwrites** an existing `config.ini` in the installation directory. Whether you run it with or without `--upgrade`, your current `config.ini` is left as-is. So your settings are preserved when you upgrade. + +With `--upgrade`, the script also updates the service definition (systemd unit or launchd plist) and reloads the service so the new code and any changed paths take effect. + +### If I don't use `--upgrade`, is the bot still upgraded after `git pull` and running the install script? + +**Partially.** The script still copies repo files into the install directory and only overwrites when the source file is newer (and it never overwrites `config.ini`). So the **installed code** is upgraded. + +Without `--upgrade`, the script does *not* update the service file (systemd/launchd) and does *not* reload the service. So: + +- New bot code is on disk. +- The running service may still be using the old code until you restart it (e.g. `sudo systemctl restart meshcore-bot` or equivalent). +- Any changes to the service definition (paths, user, etc.) in the script are not applied. + +**Recommendation:** Use `./install-service.sh --upgrade` after `git pull` when you want to upgrade; that updates files, dependencies, and the service, and reloads the service, while keeping your `config.ini` intact. diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000..9658a82 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,82 @@ +# Getting Started + +Get meshcore-bot running on your machine in a few minutes. + +## Requirements + +- **Python 3.7+** +- **MeshCore-compatible device** (Heltec V3, RAK Wireless, etc.) +- **Connection**: USB cable, BLE, or TCP/IP to the device + +## Quick start (development) + +1. **Clone and install** + + ```bash + git clone https://github.com/agessaman/meshcore-bot.git + cd meshcore-bot + pip install -r requirements.txt + ``` + +2. **Configure** + + Copy an example config and edit with your connection and bot settings: + + - **Full config** (all commands and options): + ```bash + cp config.ini.example config.ini + ``` + - **Minimal config** (core commands only: ping, test, path, prefix, multitest): + ```bash + cp config.ini.minimal-example config.ini + ``` + + Edit `config.ini`: set at least `[Connection]` (serial/BLE/TCP) and `[Bot]` (e.g. `bot_name`). + +3. **Run** + + ```bash + python3 meshcore_bot.py + ``` + +## Production deployment + +### Systemd service + +Run the bot as a system service on Linux: + +```bash +sudo ./install-service.sh +sudo nano /opt/meshcore-bot/config.ini # configure +sudo systemctl start meshcore-bot +sudo systemctl status meshcore-bot +``` + +See [SERVICE-INSTALLATION.md](https://github.com/agessaman/meshcore-bot/blob/main/SERVICE-INSTALLATION.md) for full steps. + +### Docker + +Run in a container with Docker Compose: + +```bash +mkdir -p data/{config,databases,logs,backups} +cp config.ini.example data/config/config.ini +# Edit data/config/config.ini and set paths to /data/... (see [Docker](DOCKER.md)) +docker compose up -d --build +``` + +See [Docker deployment](DOCKER.md) for paths, serial access, and troubleshooting. + +### NixOS + +Use the flake: + +```nix +meshcore-bot.url = "github:agessaman/meshcore-bot/"; +``` + +## Next steps + +- **[Command Reference](COMMANDS.md)** — Full command reference (wx, aqi, sun, path, prefix, etc.) +- **[README](https://github.com/agessaman/meshcore-bot/blob/main/README.md)** — Features, keywords, configuration overview +- **Guides** (sidebar) — Path command, repeater commands, feeds, weather service, Discord bridge, map uploader, packet capture diff --git a/docs/index.md b/docs/index.md index 346abb4..ec94a8f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,29 +1,39 @@ ---- -layout: default -title: meshcore-bot Documentation ---- - # meshcore-bot Documentation Documentation for the MeshCore bot: setup, configuration, commands, and services. +**New to the project?** Start with [Getting Started](getting-started.md). + ## Project overview -- [README]({{ site.repository_url }}/blob/{{ site.repository_branch }}/README.md) – Getting started, installation, quick start -- [COMMANDS.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/COMMANDS.md) – Full command reference -- [DOCKER.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/DOCKER.md) – Docker deployment -- [SERVICE-INSTALLATION.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/SERVICE-INSTALLATION.md) – Systemd service setup -- [WEB_VIEWER.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/WEB_VIEWER.md) – Web viewer module +- [README](https://github.com/agessaman/meshcore-bot/blob/main/README.md) – Getting started, installation, quick start +- [Command Reference](COMMANDS.md) – Full command reference +- [Docker deployment](DOCKER.md) – Docker deployment +- [SERVICE-INSTALLATION.md](https://github.com/agessaman/meshcore-bot/blob/main/SERVICE-INSTALLATION.md) – Systemd service setup +- [Web Viewer](WEB_VIEWER.md) – Web viewer module -## Guides (this site) +## Configuration | Document | Description | |----------|-------------| -| [Path Command Configuration](PATH_COMMAND_CONFIG.html) | Path command presets and options | -| [Repeater Commands](REPEATER_COMMANDS.html) | Repeater management DM commands | -| [Feed Management](FEEDS.html) | RSS/REST feeds and posting to channels | -| [Weather Service](WEATHER_SERVICE.html) | Scheduled weather and alerts | -| [Discord Bridge](DISCORD_BRIDGE.html) | One-way bridge to Discord | -| [Map Uploader](MAP_UPLOADER.html) | Uploading to map.meshcore.dev | -| [Packet Capture](PACKET_CAPTURE.html) | Packet capture and MQTT | -| [Documentation site setup](DOCS_SITE.html) | How to enable and configure this GitHub Pages site | +| [Configuration](configuration.md) | config.ini structure and command options | +| [Path Command](PATH_COMMAND_CONFIG.md) | Path command presets and tuning | + +## Guides + +| Document | Description | +|----------|-------------| +| [Repeater Commands](REPEATER_COMMANDS.md) | Repeater management DM commands | +| [Feed Management](FEEDS.md) | RSS/REST feeds and posting to channels | +| [Web Viewer](WEB_VIEWER.md) | Web-based data viewer and API | +| [Documentation site setup](DOCS_SITE.md) | How to build and deploy this site | + +## Service Plugins + +| Document | Description | +|----------|-------------| +| [Service Plugins overview](service-plugins.md) | Enable and configure background services | +| [Discord Bridge](DISCORD_BRIDGE.md) | One-way bridge to Discord | +| [Packet Capture](PACKET_CAPTURE.md) | Packet capture and MQTT | +| [Map Uploader](MAP_UPLOADER.md) | Uploading to map.meshcore.dev | +| [Weather Service](WEATHER_SERVICE.md) | Scheduled weather and alerts | diff --git a/docs/service-plugins.md b/docs/service-plugins.md new file mode 100644 index 0000000..fa07860 --- /dev/null +++ b/docs/service-plugins.md @@ -0,0 +1,18 @@ +# Service Plugins + +Service plugins extend the bot with background services that run alongside the main message loop. Each can be enabled or disabled in `config.ini`. + +| Plugin | Description | +|--------|-------------| +| [Discord Bridge](DISCORD_BRIDGE.md) | One-way webhook bridge to post mesh messages to Discord channels | +| [Packet Capture](PACKET_CAPTURE.md) | Capture packets from the mesh and publish them to MQTT brokers | +| [Map Uploader](MAP_UPLOADER.md) | Upload node advertisements to [map.meshcore.dev](https://map.meshcore.dev) for network visualization | +| [Weather Service](WEATHER_SERVICE.md) | Scheduled weather forecasts, weather alerts, and lightning detection | + +## Enabling a plugin + +1. Add or edit the plugin's section in `config.ini` (see each plugin's doc for options). +2. Set `enabled = true` for that plugin. +3. Restart the bot. + +Some plugins require additional configuration (API keys, webhook URLs, etc.) before they will run successfully. diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..d571c76 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,62 @@ +# Material for MkDocs - meshcore-bot documentation +site_name: Meshcore Bot Documentation +site_description: Documentation for the MeshCore bot and its services +site_url: https://agessaman.github.io/meshcore-bot/ + +repo_name: meshcore-bot +repo_url: https://github.com/agessaman/meshcore-bot +edit_uri: edit/main/docs/ + +theme: + name: material + language: en + palette: + - scheme: default + primary: indigo + accent: cyan + toggle: + icon: material/brightness-7 + name: Switch to dark mode + - scheme: slate + primary: indigo + accent: cyan + toggle: + icon: material/brightness-4 + name: Switch to light mode + features: + - navigation.instant + - navigation.tracking + - navigation.tabs + - navigation.sections + - toc.integrate + - content.code.copy + +plugins: + - search + +markdown_extensions: + - pymdownx.superfences + - pymdownx.highlight: + anchor_linenums: true + - pymdownx.tabbed: + alternate_style: true + - tables + - attr_list + - md_in_html + +nav: + - Home: index.md + - Getting Started: getting-started.md + - FAQ: faq.md + - Command Reference: COMMANDS.md + - Configuration: + - Overview: configuration.md + - Path Command: PATH_COMMAND_CONFIG.md + - Web Viewer: WEB_VIEWER.md + - Service Plugins: + - Overview: service-plugins.md + - Discord Bridge: DISCORD_BRIDGE.md + - Packet Capture: PACKET_CAPTURE.md + - Map Uploader: MAP_UPLOADER.md + - Weather Service: WEATHER_SERVICE.md + - Feed Management: FEEDS.md diff --git a/pyproject.toml b/pyproject.toml index 888466a..cb011c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,9 @@ dependencies = [ "pynacl>=1.5.0", ] +[project.optional-dependencies] +docs = ["mkdocs-material>=9.0.0"] + [project.scripts] meshcore-bot = "meshcore_bot:main" meshcore-viewer = "modules.web_viewer.app:main"