A self-hosted print studio: images at exact physical sizes, sheet layout with crop marks, tiling, 1:1 PDF. Everything else — image generation, delivery, share links, mail, Telegram — is an optional module that is off by default. This is the neutral public twin of a private tool. Compared to that original: - optional modules behind KLARBILD_MODULES; the default install is print-only - English interface with German as a full second language (1,038 strings); the English sentence is the translation key - no built-in accounts — first boot creates one admin from ADMIN_USERNAME / ADMIN_PASSWORD, or generates a password and logs it once - delivery and backup targets are generic SFTP/FTPS endpoints, off by default - English routes, English identifiers, English comments throughout - two compose files: print-only by default, everything in the full one - AGPL-3.0, CI (build, tests, type check, secret scan), CONTRIBUTING, SECURITY 124 tests green, type check clean, verified end to end against a live instance. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nh4A79bbqT9dcd2inzYUdg
This commit is contained in:
164 files changed
+27190
No files matched your search
@@ -0,0 +1,19 @@
|
||||
-- Backup to any target, metadata sidecar files, API token for external access (MCP).
|
||||
|
||||
-- Any extra target can be flagged as a backup target (receives ALL results).
|
||||
ALTER TABLE delivery_targets ADD COLUMN IF NOT EXISTS is_backup bool NOT NULL DEFAULT false;
|
||||
|
||||
-- Send metadata along as a companion .md file (prompt, file name, model, …).
|
||||
ALTER TABLE settings ADD COLUMN IF NOT EXISTS metadata_sidecar bool NOT NULL DEFAULT false;
|
||||
|
||||
-- API token for programmatic access (Klarbild MCP / automations).
|
||||
ALTER TABLE settings ADD COLUMN IF NOT EXISTS api_token text;
|
||||
|
||||
-- Backup status per target and item (for "backed up to several targets").
|
||||
CREATE TABLE IF NOT EXISTS item_backups (
|
||||
item_id uuid REFERENCES items(id) ON DELETE CASCADE,
|
||||
target text NOT NULL, -- 'mirror' | delivery_target UUID
|
||||
status text NOT NULL DEFAULT 'mirrored' CHECK (status IN ('mirrored','failed')),
|
||||
at timestamptz NOT NULL DEFAULT now(),
|
||||
PRIMARY KEY (item_id, target)
|
||||
);
|
||||
Reference in new issue
Block a user