Files
app/zensical.toml
T
stroblmeandClaude Opus 5 11e032386b Publish the documentation site: docs.fluksio.com
A zensical site under docs/, served by a new `docs` compose service behind
Traefik, built with --strict in CI. Same pattern the sibling n3xd workspace
uses.

Getting started splits the way the landing page does — one path is
`pip install fluksio` and a training script, the other is a Docker stack and
an afternoon in the browser — because the two audiences will not spend the same
amount of time. Everything after that is shared: the concepts, the web
interface (app and portal), the CLI and the API, and a reference for node types,
payload types and configuration.

The three flow guides move here from the docs submodule rather than being
copied, so there is one version of them.

Styling mirrors DESIGN-GUIDELINES.md: the app's token palette remapped onto
Material's variables in both schemes, Inter, the 16px panel radius, and the one
terracotta accent spent on the facility lane of the audience split.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M7Xv3cJEW5c8AXxn2hoojV
2026-08-22 05:55:34 +02:00

125 lines
4.9 KiB
TOML

# Fluksio documentation site, built with zensical (https://zensical.org).
# Content lives in docs/, the static build goes to site/ (gitignored).
# Build: `make docs` | Live preview: `make docs-serve`
# This config is zensical-native (TOML). It is portable to Material for MkDocs
# by translating to mkdocs.yml if the engine ever needs to change.
[project]
site_name = "Fluksio"
site_description = "Documentation for Fluksio, node-based automation for experiments and for buildings."
site_url = "https://docs.fluksio.com/"
# Footer line. HTML renders as-is, so the legal links (mirroring the index
# landing footer) and a link back to the main site live here.
copyright = """Copyright &copy; 2026 Fluksio &middot; <a href="https://fluksio.com">fluksio.com</a> &middot; <a href="https://stroblme.de/imprint/" target="_blank" rel="noopener">Impressum</a> &middot; <a href="https://stroblme.de/privacy-policy/" target="_blank" rel="noopener">Privacy Policy</a>"""
# Fluksio brand color schemes (slate blue on neutral white/near-black, with
# terracotta as the one secondary accent), layered over the built-in
# default/slate schemes. See docs/stylesheets/extra.css.
extra_css = ["stylesheets/extra.css"]
# Site navigation. Must stay above the first [project.*] table header, or TOML
# would nest it inside that table and zensical would silently fall back to
# auto-generated (alphabetical) navigation.
nav = [
{ "Home" = "index.md" },
{ "Getting started" = [
{ "Pick your starting point" = "getting-started/index.md" },
{ "Data science" = "getting-started/data-science.md" },
{ "Facility automation" = "getting-started/facility-automation.md" },
] },
{ "Concepts" = [
{ "Flows, nodes and messages" = "concepts/flows.md" },
{ "Where a node's values come from" = "concepts/values.md" },
{ "Keeping state in a flow" = "concepts/state.md" },
{ "Runs: pipelines that finish" = "concepts/runs.md" },
] },
{ "The interface" = [
{ "The dashboard app" = "interface/index.md" },
{ "The flow editor" = "interface/flow-editor.md" },
{ "Dashboards and panels" = "interface/dashboards.md" },
{ "Secrets, modules and alerts" = "interface/operations.md" },
{ "Accounts and the portal" = "interface/portal.md" },
] },
{ "Code and the CLI" = [
{ "The fluksio command" = "code/cli.md" },
{ "Writing node code" = "code/nodes.md" },
{ "The HTTP API" = "code/api.md" },
{ "Remote workers" = "code/workers.md" },
{ "Agents over MCP" = "code/agents.md" },
] },
{ "Reference" = [
{ "Node types" = "reference/node-types.md" },
{ "Payload types" = "reference/payload-types.md" },
{ "Configuration" = "reference/configuration.md" },
] },
# The roadmap, the design guidelines and the architecture material stay in
# the repositories — repo-only, intentionally not published.
]
# Drop the "Made with Zensical" generator notice from the footer.
[project.extra]
generator = false
[project.theme]
language = "en"
# The brand mark the dashboard SPA uses (frontend/public/favicon.svg), as both
# the browser favicon and the header logo, so the docs match the app.
favicon = "assets/favicon.svg"
logo = "assets/favicon.svg"
features = [
"content.code.copy",
"navigation.footer",
"navigation.indexes",
"navigation.instant",
"navigation.sections",
"navigation.top",
"navigation.tracking",
"search.highlight",
"toc.follow",
]
# Body font mirrors both frontends (Inter); code font stays the theme default,
# which matches the app's system monospace stack.
[project.theme.font]
text = "Inter"
# Three states, the same as both frontends: follow the system, then an explicit
# light and an explicit dark the toggle cycles through.
[[project.theme.palette]]
media = "(prefers-color-scheme)"
toggle.icon = "lucide/monitor-cog"
toggle.name = "Follow the system theme"
[[project.theme.palette]]
media = "(prefers-color-scheme: light)"
scheme = "default"
toggle.icon = "lucide/sun"
toggle.name = "Switch to dark mode"
[[project.theme.palette]]
media = "(prefers-color-scheme: dark)"
scheme = "slate"
toggle.icon = "lucide/moon"
toggle.name = "Switch to light mode"
# Markdown extensions: admonitions, grids (attr_list + md_in_html), code blocks
# with highlighting and copy, content tabs, collapsible details, mermaid.
[project.markdown_extensions.abbr]
[project.markdown_extensions.admonition]
[project.markdown_extensions.attr_list]
[project.markdown_extensions.def_list]
[project.markdown_extensions.footnotes]
[project.markdown_extensions.md_in_html]
[project.markdown_extensions.toc]
permalink = true
[project.markdown_extensions.pymdownx.details]
[project.markdown_extensions.pymdownx.highlight]
anchor_linenums = true
[project.markdown_extensions.pymdownx.inlinehilite]
[project.markdown_extensions.pymdownx.superfences]
custom_fences = [
{ name = "mermaid", class = "mermaid", format = "pymdownx.superfences.fence_code_format" }
]
[project.markdown_extensions.pymdownx.tabbed]
alternate_style = true