Servala Documentation https://docs.servala.com
  • Dockerfile 52%
  • Just 48%
Find a file
Tobias Brunner 15e744ad4d
All checks were successful
Build, Push and Deploy Docs / build (push) Successful in 35s
Build, Push and Deploy Docs / deploy (push) Successful in 41s
document billing model
2026-06-15 15:33:05 +02:00
.forgejo/workflows chore(deps): update forgejo actions to v46.1.15 2026-06-09 03:00:51 +00:00
deployment make it the live docs 2026-06-09 16:37:38 +02:00
docs document billing model 2026-06-15 15:33:05 +02:00
.dockerignore add container build 2026-06-04 15:32:30 +02:00
.gitignore ignore tmp dir 2026-06-04 16:46:49 +02:00
CLAUDE.md define what is the content 2026-06-08 15:38:45 +02:00
Dockerfile small config adjustments 2026-06-08 16:52:49 +02:00
justfile updated dependencies and README 2026-06-04 14:50:01 +02:00
nginx.conf add container build 2026-06-04 15:32:30 +02:00
pyproject.toml Initial Servala documentation site using Zensical 2026-03-16 17:20:18 +01:00
README.md updated dependencies and README 2026-06-04 14:50:01 +02:00
renovate.json add renovate config 2026-06-04 16:41:07 +02:00
uv.lock chore(deps): lock file maintenance 2026-06-08 03:01:05 +00:00
zensical.toml document billing model 2026-06-15 15:33:05 +02:00

Servala Documentation

End-user documentation for the Servala Portal, built with Zensical — a modern static site generator.

The published site lives at https://docs.servala.com.

What's in here

Path Purpose
docs/ Documentation source (Markdown), images and styles
zensical.toml Site configuration: navigation, theme, branding
pyproject.toml Python project & dependency definition
uv.lock Pinned dependency versions (managed by uv)
.forgejo/workflows/ CI: builds and deploys to S3 on push to main
site/ Build output (generated, git-ignored)

The content structure mirrors the navigation defined in zensical.toml: Getting Started, Concepts, How-To Guides, Services, Cloud Providers and API Reference.

Prerequisites

  • uv for Python and dependency management
  • Python >= 3.12 (uv can install this for you)
  • Optionally just as a command runner (see below)

Task runner

A justfile wraps the most common commands. Run just to list them:

Command What it does
just install Install/sync dependencies into the local virtual env
just serve Serve the docs locally with live preview
just build Build the static site into site/
just clean Remove the generated site/ output
just upgrade Upgrade locked dependencies to their latest versions

If you'd rather not use just, the underlying uv commands are shown below.

Getting started

Install dependencies into a local virtual environment:

just install        # or: uv sync

Serve the docs locally with live preview (rebuilds on change):

just serve          # or: uv run zensical serve

Then open the URL printed in the terminal (typically http://localhost:8000).

Building

Produce the static site into site/:

just build          # or: uv run zensical build

This is exactly what CI runs before deploying.

Editing the docs

  • Write content as Markdown files under docs/.
  • Add new pages to the nav table in zensical.toml so they appear in the navigation.
  • Place images under docs/assets/images/ and custom styles in docs/stylesheets/extra.css.

Deployment

Deployment is automated. On every push to main, the .forgejo/workflows/deploy.yaml workflow:

  1. Installs dependencies with uv sync --dev
  2. Builds the site with uv run zensical build
  3. Syncs site/ to the configured S3 bucket with s3cmd

There is no manual deploy step — merge to main and the live site updates.

Updating dependencies

just upgrade        # or: uv lock --upgrade && uv sync

Commit the changed uv.lock afterwards.