# MkDocs Setup This project uses [MkDocs](https://www.mkdocs.org/) with the [Material theme](https://squidfunk.github.io/mkdocs-material/) for documentation. All documentation tooling files are self-contained in the `docs/` directory. ## Prerequisites You can run MkDocs in two ways: **Option 1: Local Python Installation** - Python 3.8 or higher - pip (Python package manager) **Option 2: Docker (Recommended - No Python installation needed)** - Docker and Docker Compose ## Installation 1. Install the required Python packages: ```bash cd docs pip install -r requirements.txt ``` Or if you prefer using a virtual environment: ```bash cd docs python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt ``` ## Usage You can use either the Makefile commands from the project root (recommended) or run MkDocs directly from the `docs/` directory. ### Using Makefile (Recommended) From the project root, use the Makefile commands: ```bash # Using Docker (easiest, no Python needed) make docs-docker-compose-up # or make docs-docker # Using local Python make docs-install # Install dependencies make docs-serve # Serve documentation make docs-build # Build static site make docs-deploy # Deploy to GitHub Pages # Show all available commands make help ``` The documentation will be available at `http://127.0.0.1:8000` with live reload enabled. ### Using Docker Directly From the `docs/` directory: ```bash cd docs # Using docker-compose (easiest) docker-compose up --build # Using Docker directly docker build -t goplt-docs:latest . docker run --rm -it -p 8000:8000 -v "$(pwd):/docs:ro" goplt-docs:latest # Build static site docker run --rm -v "$(pwd):/docs:ro" -v "$(pwd)/site:/docs/site" goplt-docs:latest mkdocs build ``` ### Using MkDocs Directly From the `docs/` directory: ```bash cd docs # Serve documentation locally with auto-reload mkdocs serve # Build static site mkdocs build # Deploy to GitHub Pages mkdocs gh-deploy ``` ## Configuration The main configuration file is `docs/mkdocs.yml`. Key settings: - **Site name and metadata**: Configured at the top - **Theme**: Material theme with light/dark mode support - **Navigation**: Defined in the `nav` section - **Plugins**: Search and git revision date plugins enabled - **Markdown extensions**: Various extensions for code highlighting, tables, etc. - **docs_dir**: Set to "content" - markdown files are in the content/ subdirectory ## Project Structure ``` goplt/ ├── docs/ # Documentation directory (self-contained) │ ├── mkdocs.yml # MkDocs configuration │ ├── requirements.txt # Python dependencies │ ├── Dockerfile # Docker image for MkDocs │ ├── docker-compose.yml # Docker Compose configuration │ ├── .dockerignore # Docker ignore patterns │ ├── MKDOCS_README.md # This file │ ├── content/ # Documentation content (markdown files) │ │ ├── index.md # Home page │ │ ├── requirements.md # Requirements document │ │ ├── plan.md # Implementation plan │ │ ├── playbook.md # Implementation playbook │ │ ├── adr/ # Architecture Decision Records │ │ └── stories/ # Implementation tasks │ └── site/ # Generated site (gitignored) └── Makefile # Makefile with docs commands (runs from root) ``` ## Adding New Documentation 1. Add markdown files to the `docs/content/` directory 2. Update `docs/mkdocs.yml` to add entries to the `nav` section 3. Run `make docs-serve` or `make docs-docker` from project root to preview changes ## Customization ### Theme Colors Edit the `theme.palette` section in `docs/mkdocs.yml` to change colors. ### Navigation Update the `nav` section in `docs/mkdocs.yml` to reorganize or add new pages. ### Plugins Add or remove plugins in the `plugins` section of `docs/mkdocs.yml`. ## Troubleshooting - **Import errors**: Make sure all dependencies are installed: `cd docs && pip install -r requirements.txt` - **Navigation issues**: Check that file paths in `docs/mkdocs.yml` match actual file locations - **Build errors**: Run `mkdocs build --verbose` from the `docs/` directory for detailed error messages - **Docker issues**: Make sure Docker is running and you have permissions to run containers ## Benefits of Self-Contained Docs - All documentation tooling is in one place - Easy to share or move the docs directory - Doesn't pollute the project root - Can be versioned or deployed independently