# Project: Hugo Documentation Framework (Blowfish) This repository manages the **Hugo build environment** (config, themes, and layouts) for both the Public and Private Wikis. ## 🏗️ Architecture To allow for seamless Dev vs. Prod workflows, the architecture is split into three repositories: 1. **Framework (`/srv/dev/hugo/wiki`)**: This repository (`hugo-framework`). Contains the Hugo engine, themes (Blowfish), and the **default configuration**. 2. **Public Content (`/srv/docs/public`)**: A separate repository (`docs-public`). 3. **Private Content (`/srv/docs/private`)**: A separate repository (`docs-private`). **Dynamic Configuration Merging:** The Framework defines the base styling in `config/_default/params.toml`. However, the Content repositories can dynamically override: * **Menus**: By providing a `config/_default/menus.en.toml` file. * **Theme Settings (Edit Links)**: Injected via Environment Variables (`HUGO_PARAMS_ARTICLE_EDITURL`) during the CI/CD pipeline to avoid destroying the framework's default arrays. ## 💻 Local Development ("Live Link") To write documentation with real-time previews, you use symbolic links on your host machine: 1. **Establish Symlinks**: ```bash cd /srv/dev/hugo/wiki rm -rf content static ln -s /srv/docs/public content ln -s /srv/docs/public/static static ``` 2. **Preview Changes**: ```bash hugo server --bind 0.0.0.0 --appendPort=false --baseURL="/" ``` ## 🚀 CI/CD Pipeline Deployment is fully automated through Gitea Actions stored in the **Content repositories** (e.g., `docs-public/.gitea/workflows/deploy.yaml`). During a build, the Runner dynamically clones this Framework via HTTPS, injects the Markdown files from the triggering repository, applies the `editURL` overrides, builds the site, and deploys directly into the Nginx web server volume (`/srv/caddy/sites`). *(Note: The volume name `/srv/caddy` is a legacy name; the servers actually running are lightweight `nginx:alpine` containers defined in `gitea/docker-compose.yaml`)*.