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,24 @@
|
||||
---
|
||||
import Base from '../layouts/Base.astro';
|
||||
import SharesApp from '../components/SharesApp';
|
||||
import { tFor, dictFor } from '../lib/i18n.server';
|
||||
const locale = Astro.locals.locale ?? 'en';
|
||||
const t = tFor(locale);
|
||||
const dict = dictFor(locale);
|
||||
---
|
||||
<Base title={t('Shared links · Klarbild')}>
|
||||
<section class="page">
|
||||
<header class="pagehead">
|
||||
<h1>{t('Shared links')}</h1>
|
||||
<p class="lead">{t('Links that let other people look at your images — without an account. Here you can see how often they were opened, and switch them off whenever you want.')}</p>
|
||||
</header>
|
||||
<SharesApp client:load locale={locale} dict={dict} />
|
||||
</section>
|
||||
<style>
|
||||
.page { max-width: var(--maxw); margin: 0 auto; padding: 26px 20px 80px; }
|
||||
.pagehead { margin-bottom: 20px; }
|
||||
.pagehead h1 { font-size: clamp(1.4rem, 4vw, 1.9rem); margin: 0 0 6px; letter-spacing: -0.02em; }
|
||||
.lead { margin: 0; color: var(--ink-soft); line-height: 1.6; max-width: 64ch; font-size: 0.95rem; }
|
||||
@media (max-width: 640px) { .page { padding: 18px 14px 90px; } }
|
||||
</style>
|
||||
</Base>
|
||||
Reference in new issue
Block a user