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
125 lines
4.9 KiB
TOML
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 © 2026 Fluksio · <a href="https://fluksio.com">fluksio.com</a> · <a href="https://stroblme.de/imprint/" target="_blank" rel="noopener">Impressum</a> · <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
|