- simple-icons als kompakter Index im Repository (3.459 Marken, 2 MB gzip),
erzeugt von scripts/vendor_simple_icons.py bzw. `make vendor-icons`
- logo.dev und Brandfetch als optionale Adapter, ohne Schlüssel übersprungen
- Favicon-Fallback und generierter Buchstaben-Avatar als Garantie
- Bei eindeutigem Offline-Treffer unterbleiben Anfragen nach außen komplett
- Cache im Dateisystem nach SHA-256, Auslieferung nur über /api/logos/{id}
mit immutable-Header und ETag
- Markenfarbe aus SVG-Fills bzw. per k-Means (k=4) über 64x64 Pixel, dazu eine
aufgehellte Variante mit mindestens 4,5:1 Kontrast auf dunklem Grund
- Kandidatensuche mit Vorauswahl, Auswahl, Upload und Zurücksetzen
- Bildtyp wird nur noch am Inhalt bestimmt, nicht an der gemeldeten Kopfzeile
- 60 neue Tests, insgesamt 208 grün
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
89 lines
3.5 KiB
Bash
89 lines
3.5 KiB
Bash
# =============================================================================
|
||
# moneyfy – Beispielkonfiguration
|
||
# Kopieren nach `.env` und anpassen. Niemals echte Secrets committen.
|
||
# =============================================================================
|
||
|
||
# --- Allgemein ---------------------------------------------------------------
|
||
ENVIRONMENT=production # development | production | test
|
||
DEBUG=false
|
||
TIMEZONE=Europe/Berlin # Durchgängige Zeitzone der Anwendung
|
||
HOLIDAY_REGION=DE-NW # Feiertagsregion für Werktagsverschiebungen
|
||
DEFAULT_CURRENCY=EUR
|
||
# Öffentliche Basis-URL, u. a. für Links in Benachrichtigungen
|
||
PUBLIC_BASE_URL=https://moneyfy.menzel.center
|
||
# Image-Tag, den docker-compose zieht (main, 0.1.0, latest, sha-abc1234)
|
||
TAG=latest
|
||
|
||
# --- Datenbank ---------------------------------------------------------------
|
||
POSTGRES_DB=moneyfy
|
||
POSTGRES_USER=moneyfy
|
||
POSTGRES_PASSWORD=bitte-aendern
|
||
# Vom Backend genutzte DSN. `postgresql://` wird automatisch auf asyncpg umgestellt.
|
||
DATABASE_URL=postgresql+asyncpg://moneyfy:bitte-aendern@moneyfy-db:5432/moneyfy
|
||
|
||
# --- Sicherheit --------------------------------------------------------------
|
||
# Signaturschlüssel für JWTs, mindestens 32 Zeichen.
|
||
# Erzeugen mit: openssl rand -hex 32
|
||
SECRET_KEY=bitte-aendern-mindestens-32-zeichen-lang
|
||
ACCESS_TOKEN_TTL_MINUTES=30
|
||
REFRESH_TOKEN_TTL_DAYS=14
|
||
COOKIE_SECURE=true # Hinter HTTPS-Proxy true, für lokales HTTP false
|
||
COOKIE_DOMAIN=
|
||
|
||
# Wird beim ersten Start angelegt (danach mit erzwungenem Passwortwechsel).
|
||
MONEYFY_ADMIN_USER=admin
|
||
MONEYFY_ADMIN_PASSWORD=bitte-aendern
|
||
|
||
# --- OIDC (vorbereitet, noch nicht implementiert) ----------------------------
|
||
OIDC_ENABLED=false
|
||
OIDC_ISSUER=
|
||
OIDC_CLIENT_ID=
|
||
OIDC_CLIENT_SECRET=
|
||
OIDC_SCOPES=openid profile email
|
||
|
||
# --- Logo-Service ------------------------------------------------------------
|
||
# Verzeichnis für den lokalen Logo-Cache (im Container auf das Volume gemountet).
|
||
# Logos werden ausschließlich von hier ausgeliefert – im Seitenaufruf entsteht
|
||
# kein Zugriff auf fremde Dienste.
|
||
LOGO_STORAGE_DIR=/data/logos
|
||
|
||
# Der lokale simple-icons-Katalog deckt die meisten Marken ohne Netzzugriff ab.
|
||
# Die folgenden Provider sind optional; ohne Schlüssel wird der jeweilige
|
||
# Adapter stillschweigend übersprungen.
|
||
|
||
# logo.dev: veröffentlichbarer Token von https://www.logo.dev
|
||
# Achtung: Auf dem kostenlosen Tarif verlangt logo.dev bei kommerzieller
|
||
# Nutzung einen sichtbaren Rückverweis. Für private Nutzung entfällt das.
|
||
LOGODEV_API_KEY=
|
||
|
||
# Brandfetch: API-Schlüssel der Brand API (https://docs.brandfetch.com).
|
||
# Wird nur genutzt, wenn zur Firma eine Domain hinterlegt ist.
|
||
BRANDFETCH_API_KEY=
|
||
|
||
LOGO_HTTP_TIMEOUT_SECONDS=5
|
||
LOGO_HTTP_RETRIES=2
|
||
LOGO_MAX_UPLOAD_BYTES=1048576
|
||
# Sucht nach dem Anlegen einer Firma automatisch im Hintergrund nach einem Logo.
|
||
LOGO_AUTO_RESOLVE=true
|
||
|
||
# --- Benachrichtigungen ------------------------------------------------------
|
||
NOTIFICATIONS_ENABLED=true
|
||
SCHEDULER_ENABLED=true
|
||
NOTIFICATION_HOUR=7 # Täglicher Lauf um 07:00 Europe/Berlin
|
||
NOTIFICATION_MINUTE=0
|
||
|
||
SMTP_HOST=
|
||
SMTP_PORT=587
|
||
SMTP_USER=
|
||
SMTP_PASSWORD=
|
||
SMTP_FROM=moneyfy@example.com
|
||
SMTP_USE_TLS=true # STARTTLS
|
||
SMTP_USE_SSL=false # Implizites TLS (Port 465)
|
||
|
||
# Komma-separierte Apprise-URLs, z. B. ntfy://host/topic,discord://...
|
||
APPRISE_URLS=
|
||
|
||
# --- CORS --------------------------------------------------------------------
|
||
# Nur für getrennte Frontend-Entwicklung nötig, z. B. http://localhost:5173
|
||
CORS_ORIGINS=
|