Skip to content
Merged

Docs #86

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ jobs:
- name: frontend
context: frontend/omni
package: modai-chat-frontend
- name: docs
context: .
dockerfile: docs/Dockerfile
package: modai-chat-docs
permissions:
contents: read
packages: write
Expand Down Expand Up @@ -51,6 +55,7 @@ jobs:
uses: docker/build-push-action@v7
with:
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile || format('{0}/Dockerfile', matrix.context) }}
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
Expand All @@ -69,6 +74,8 @@ jobs:
package: modai-chat-backend
- name: frontend
package: modai-chat-frontend
- name: docs
package: modai-chat-docs
permissions:
packages: write
steps:
Expand Down
55 changes: 55 additions & 0 deletions backend/omni/src/modai/default_config.mermaid
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
graph TD
subgraph Auth["🔐 Auth & Session"]
session["session"]
auth_oidc["auth_oidc"]
user["user"]
end

subgraph UserData["👤 User Data"]
user_store["user_store"]
user_settings["user_settings"]
user_settings_store["user_settings_store"]
end

subgraph Chat["💬 Chat"]
chat_router["chat_router"]
chat_openai["chat_openai"]
end

subgraph ModelProvider["🤖 Model Provider"]
openai_model_provider["openai_model_provider"]
model_provider_store["model_provider_store"]
central_model_provider_router["central_model_provider_router"]
end

subgraph Tools["🔧 Tools"]
tool_registry["tool_registry"]
openapi_tool_registry["openapi_tool_registry"]
predefined_tool_registry["predefined_tool_registry"]
http_client["http_client"]
end

subgraph Infra["⚙️ Infra"]
health["health"]
full_reset["full_reset"]
end

chat_router --> chat_openai
chat_router --> session
chat_openai --> openai_model_provider
chat_openai --> tool_registry
openai_model_provider --> model_provider_store
openai_model_provider --> session
central_model_provider_router --> openai_model_provider
central_model_provider_router --> session
auth_oidc --> session
user --> session
user --> user_store
user_settings --> session
user_settings --> user_settings_store
tool_registry --> predefined_tool_registry
predefined_tool_registry --> openapi_tool_registry
openapi_tool_registry --> http_client
full_reset --> model_provider_store
full_reset --> user_store
full_reset --> user_settings_store
1 change: 1 addition & 0 deletions backend/omni/src/modai/default_config.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Whenever this file is updated, also update the sidekick file default_config.mermaid
modules:
health:
class: modai.modules.health.simple_health_module.SimpleHealthModule
Expand Down
3 changes: 3 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
doc_build/
node_modules/
.rspress/
17 changes: 17 additions & 0 deletions docs/.pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
orphan: true

repos:
- repo: local
hooks:
- id: biome-check
name: biome check
language: system
entry: pnpm check
always_run: true
pass_filenames: false
- id: i18n-parity
name: i18n parity check
language: system
entry: bash scripts/check-i18n-parity.sh
always_run: true
pass_filenames: false
33 changes: 33 additions & 0 deletions docs/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# NOTE: Must be built from the repo root, not from docs/:
# docker build -f docs/Dockerfile -t modai-docs:latest .
#
#################
## Build stage ##
#################
FROM node:24-slim AS build

WORKDIR /workspace

# Install pnpm
RUN npm install -g pnpm

# Copy docs and the referenced external source files
COPY docs/ ./docs/
COPY backend/omni/src/modai/ ./backend/omni/src/modai/
COPY frontend/omni/public/ ./frontend/omni/public/

# Install dependencies and build
WORKDIR /workspace/docs
RUN pnpm install --frozen-lockfile
RUN pnpm build

#################
## Final stage ##
#################
FROM caddy:alpine

COPY --from=build /workspace/docs/doc_build /srv

EXPOSE 8080

CMD ["caddy", "file-server", "--root", "/srv", "--listen", ":8080"]
4 changes: 4 additions & 0 deletions docs/Dockerfile.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
docs/node_modules
docs/doc_build
frontend/omni/node_modules
frontend/omni/dist
37 changes: 37 additions & 0 deletions docs/biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"$schema": "https://biomejs.dev/schemas/2.4.13/schema.json",
"root": true,
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"includes": ["**", "!**/node_modules", "!doc_build"]
},
"formatter": {
"enabled": true,
"formatWithErrors": false,
"attributePosition": "auto",
"useEditorconfig": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
82 changes: 82 additions & 0 deletions docs/components/Mermaid.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import { useEffect, useRef, useState } from "react";

interface MermaidProps {
chart: string;
}

let mermaidLoaded = false;

async function loadMermaid() {
if (mermaidLoaded) return;
const mermaid = (await import("mermaid")).default;
mermaid.initialize({
startOnLoad: false,
theme: "default",
securityLevel: "loose",
});
mermaidLoaded = true;
}

export default function Mermaid({ chart }: MermaidProps) {
const ref = useRef<HTMLDivElement>(null);
const [svg, setSvg] = useState<string>("");
const [error, setError] = useState<string>("");

useEffect(() => {
let cancelled = false;

async function render() {
try {
await loadMermaid();
const mermaid = (await import("mermaid")).default;
const id = `mermaid-${Math.random().toString(36).slice(2)}`;
const { svg: renderedSvg } = await mermaid.render(id, chart.trim());
if (!cancelled) setSvg(renderedSvg);
} catch (err) {
if (!cancelled) setError(String(err));
}
}

render();
return () => {
cancelled = true;
};
}, [chart]);

if (error) {
return (
<pre
style={{
color: "red",
border: "1px solid red",
padding: "8px",
borderRadius: "4px",
}}
>
Mermaid error: {error}
</pre>
);
}

if (!svg) {
return (
<div
style={{
padding: "16px",
textAlign: "center",
color: "var(--rp-c-text-2)",
}}
>
Loading diagram…
</div>
);
}

return (
<div
ref={ref}
style={{ overflowX: "auto", margin: "1.5rem 0" }}
dangerouslySetInnerHTML={{ __html: svg }}
/>
);
}
14 changes: 14 additions & 0 deletions docs/docs/de/_nav.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"text": "userManual",
"link": "/de/user-guide/"
},
{
"text": "adminManual",
"link": "/de/admin-guide/"
},
{
"text": "devDocs",
"link": "/de/dev-guide/"
}
]
17 changes: 17 additions & 0 deletions docs/docs/de/admin-guide/_meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[
{
"type": "file",
"name": "index",
"label": "overview"
},
{
"type": "file",
"name": "quickstart",
"label": "quickstart"
},
{
"type": "dir-section-header",
"name": "modules",
"label": "modules"
}
]
25 changes: 25 additions & 0 deletions docs/docs/de/admin-guide/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: Administratorhandbuch
description: Alles, was Sie zur Installation, Konfiguration und zum Betrieb einer modAI-Instanz benötigen.
---

# ![modAI admin guide](/img/admin-guide.png)

Willkommen in der modAI-Administratordokumentation. Dieser Leitfaden deckt alles ab,
was Sie zur Installation, Konfiguration und zum Betrieb einer modAI-Instanz benötigen.

## Was Sie hier finden

- **Schnellstart** — modAI in wenigen Minuten mit Docker starten
- **Konfigurationsreferenz** — vollständige Referenz für `config.yaml`
- **Authentifizierung** — Integration Ihres Identity Providers (OIDC/OAuth2)
- **KI-Anbieter** — OpenAI-kompatible Backends und lokale Modelle verbinden
- **Betrieb** — Protokollierung, Backups, Upgrades und Fehlerbehebung

## Schnellzugriff

| Thema | Beschreibung |
|---|---|
| [Schnellstart](quickstart) | modAI in wenigen Minuten starten |
| Konfiguration | Vollständige `config.yaml`-Referenz |
| Authentifizierung | Identity Provider einrichten |
17 changes: 17 additions & 0 deletions docs/docs/de/admin-guide/modules/_meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[
{
"type": "file",
"name": "what-are-modules",
"label": "whatAreModules"
},
{
"type": "file",
"name": "installing-backend-modules",
"label": "backendModules"
},
{
"type": "file",
"name": "installing-frontend-modules",
"label": "frontendModules"
}
]
Loading