| Ebene | Technologie |
|---|---|
| Sprache | Rust (stable) |
| Web-Framework | Axum 0.8 |
| Templates | Askama 0.13 (SSR, typsicher) |
| Datenbank | SQLite via sqlx (Compile-Time geprüft) |
| Sessions | tower-sessions 0.14 + SQLite Store |
| Auth | OIDC (Casdoor empfohlen) |
| CSS | TailwindCSS v4 + DaisyUI |
| Video | FFmpeg (HLS) + MediaMTX (RTMP) |
| Observability | OpenTelemetry 0.31 + OTLP/gRPC |
Aipokit ist ein Cargo-Workspace mit 34 Crates, nach Domäne organisiert:
crates/
common/ # Gemeinsame Typen, Storage, Datenbank
media-core/ # Medienerkennung, EXIF-Extraktion
media-manager/ # Upload, Auslieferung, Suche, CRUD
video-manager/ # HLS-Transcoding (8-stufige Pipeline)
access-control/ # 4-stufiges Berechtigungsmodell
access-codes/ # Teilbare Zugangslinks
access-groups/ # Team-Rollen und Einladungen
user-auth/ # OIDC + Session-Management
workspace-manager/ # Workspace-Browser und Ordner-Typen
vault-manager/ # Storage-Vault-Isolation
site-generator/ # Astro-Site-Generierung
course/ # Kurs-Viewer + Präsentationen
...und 22 weitere
Jedes App-Crate implementiert das FolderTypeRenderer-Trait für den eingebetteten Modus (im Workspace-Browser) und exportiert einen Router für den Standalone-Modus (eigene URL). Dieselbe Logik, dieselben Templates, zwei Deployment-Modi.
storage/
workspaces/{workspace_id}/ # File-Browser-Inhalte
folder-a/ # Regulärer Ordner
media-gallery/ # Typisierter Ordner (media-server)
vaults/{vault_id}/ # Medienpipeline-Storage
media/
images/{slug}.webp
videos/{slug}/index.m3u8
documents/{filename}
thumbnails/
images/{slug}_thumb.webp
videos/{slug}_thumb.webp
Drei Stufen nach Ressourcenintensität:
| Stufe | Limit | Endpoints |
|---|---|---|
| Default | 60 RPM | Die meisten API-Endpoints |
| Upload | 15 RPM | Datei-Upload, Transcoding |
| Serving | 300 RPM | Medienauslieferung, Thumbnails |