Wiki
Alles was du als CEO wissen musst — kompakt, durchsuchbar, immer aktuell.
🔴 Live-Stats (aus Supabase, automatisch)
Aktualisiert: lädt … · automatisch nightly via wiki_state_sync v1.0
🏠 Überblick
Die digitale Infrastruktur von MAIERSHIRTS besteht aus 5 Apps (Cloudflare Pages), 2 Telegram-Bots, 13 aktiven n8n-Workflows und 1 zentralen Datenbank (Supabase). Shopify ist der Master für Artikelstamm und Lagerbestand.
📊 KPIs auf einen Blick
🗺️ Roadmap
✅ Phase 1 — Fundament (fertig)
- 5 Apps deployed auf Cloudflare Pages (Intranet, Nachkalk, Kalkulation, Mockup, Admin)
- 13 n8n-Workflows aktiv für Sync und Automatik
- 2 Telegram-Bots: Lager-Bot + Projekt-Bot
- Backup-Architektur in 3 Schichten (Manuell, Drive, R2)
- Snapshot-Historie täglich (
ms_lager_snapshots) - Lager-Inkonsistenzen bereinigt (37 SKUs Tüb/Mus-Fix, on_hand-Negative auf 0)
🔄 Phase 2a — Mockup-Persistenz (fertig)
ms_mockupsmit Snapshot-Strategie B1- Storage-Buckets
mockup-pdfs+mockup-logos - Save+Load funktional, Logo-Originale bleiben erhalten
- Projekt-Picker im PDF-Modal mit Inline-Anlage
📋 Phase 2b — Lex-Push (geplant)
- Manueller Trigger: Angebot aus Kalkulation → Lexoffice API
- Automatische Belegnummer-Vergabe
- Status-Sync zurück (Angebot → Auftragsbestätigung → Rechnung)
📦 Phase 3 — CSV-Shopify-Import (geplant)
- Ralawise-CSV als primäre Lieferantendaten
- Auswahl-UI statt reiner Bulk-Import
- Bearbeitungs-Interface vor dem Push
📊 Phase 4 — Bewegungs-Tracking (Idee)
ms_lager_movementsmit echten Bewegungen statt nur Snapshots- Shopify-Webhook-getriggert
- Slow-Mover-Reports + Verkaufs-Geschwindigkeit
🏠 Intranet
Startseite mit allen Tool-Links
Sammlung aller Apps + externer Tools (Shopify, Lexoffice, Supabase, n8n, Cloudflare).
📊 Nachkalkulation
Was du damit machst
- Lexoffice-Rechnungen einsehen, filtern, suchen
- Rechnungen Projekten zuordnen → Auftrag wird komplett trackbar
- Aufträge-Tab: Welche Rechnungen gehören zu welchem Auftrag
- Matching-Tab: Shopify-Kunde ↔ Lexoffice-Kontakt verknüpfen
💰 Kalkulation & Angebote
Was du damit machst
- Neue Angebote erstellen (Textil + Druck + Sonstiges)
- Druckpreise pro Anbieter pflegen (Stahls / Printpunk / König-R-D / Polytape)
- Stammdaten verwalten (Druckartikel, Textil-EK)
- Projekt direkt aus Angebot anlegen ("+Neu" Button)
🎨 Mockup-Generator
Was du damit machst
- Logo auf Textil-Bilder positionieren (Brust, Rücken, Ärmel etc.)
- Premium-PDF erzeugen (Cover, TOC, Detail-Zoom, Spec)
- Mockups projektgebunden in Supabase speichern
- Frühere Mockups laden (mit Original-Logos, nicht nur Platzhalter)
🛡️ Admin / Datensicherung
Was du damit machst
- Backup aller 22 DB-Tabellen + 3 Storage-Buckets als ZIP
- Lokal im Browser, dann Download
- Erinnerung wenn letztes Backup > 14 Tage
- Historie der letzten 50 Backups (im Browser localStorage)
📦 Lager-Bot (Shopify Lagerabgleich)
Telegram-Bot für alles rund um Bestand, Bestellungen und Wareneingang. Antworten kommen sofort mit dem aktuellen Stand aus Shopify.
| Befehl | Was passiert |
|---|---|
| /lager | Voller Abgleich: Telegram-Übersicht + HTML-Report-Datei |
| /bestellen | Nur die rote Liste — was bestellt werden muss |
| /zulauf | Offene Shopify-POs, was unterwegs ist |
| /offen | Offene Kundenbestellungen, gruppiert nach Bestellnummer |
n8n-Workflow
Shopify Lagerabgleich v4.34 — webhook-basiert, frischer 24h-Token wird automatisch geholt.
🎨 Projekt-Bot (MAIERSHIRTS Bot)
Der zentrale Projekt-Bot für die Auftragsabwicklung: Aufträge erfassen, Maße aufnehmen, Druckparameter nachschlagen, Fotos zuordnen, Produktionsblätter generieren.
Slash-Commands
| Befehl | Was passiert |
|---|---|
| /start oder /menu | Hauptmenü öffnen |
| /hilfe / /help | Hilfe-Übersicht |
| /heute | Heute-Tagesübersicht |
| /offen | Offene Aufträge (Status: Anfrage / Offen / In Produktion) |
| /druck | Druckparameter-Bibliothek aufrufen |
| /suche [Begriff] | In Aufträgen suchen (Projekt, Textil, Hersteller, Kommentar) |
Funktionen (per Buttons im Hauptmenü)
- 📁 Projekte: Letzte 10 + Archiv nach Jahr, Foto-Zähler pro Projekt
- 📋 Auftrag erfassen/bearbeiten: Textil, Hersteller, Transfer-Art, Druckeinstellungen, Material, Temperatur, Kommentar, Lieferdatum, Status
- 📐 Maße erfassen: Wizard mit Größenklassen (Klein/Logo/Brust/Rücken/Rücken XL) oder exakter Eingabe in cm
- 🔥 Druckparameter: Nachschlagen oder neu anlegen (Transfer Art → Hersteller → Untergrund → Temp/Pressen/Nachpressen/Druck%/Abzug)
- 📄 Produktionsblatt PDF: erzeugt automatisch mit Maßen + Druckparametern
- 📷 Foto-Upload: Bilder direkt in Telegram senden → Bot fragt Projekt + Kategorie + Unterordner
- 📝 Notizen: Pro Projekt
- 📋 Auftrag duplizieren: Wiederkehrende Aufträge schnell kopieren
n8n-Workflow
MAIERSHIRTS Bot v17.11.0 — webhook-basiert, ~294 Nodes, schreibt in Supabase (ms_projekte, ms_auftraege, ms_uploads, ms_notizen, ms_masse, ms_druckparameter).
🛒 Shopify-Workflows
| Workflow | Was er tut | Trigger |
|---|---|---|
| Shopify Lagerabgleich v4.34 aktiv | Telegram-Bot für /lager, /bestellen, /zulauf, /offen | Webhook |
| Shopify Snapshot Daily v1.7 aktiv | Tägl. Inventar-Snapshot in ms_lager_snapshots + Push | Cron 09:00 |
| Shopify Kunden Sync v1.2 aktiv | Synchronisiert Shopify-Kunden in ms_shopify_kunden | Manuell |
📑 Lexoffice-Workflows
| Workflow | Was er tut | Trigger |
|---|---|---|
| Lexoffice Netto Sync v1.6 aktiv | Synchronisiert Rechnungen (Netto-Beträge) → invoices | Manuell/Cron |
| Lexoffice Supabase Sync v1.5 aktiv | Globaler Sync Lexoffice → Supabase | Manuell |
| Lexoffice Kunden Sync v1.1 aktiv | Synchronisiert Lexoffice-Kontakte → contacts | Manuell |
| Lexoffice Kunden Sync Cron v1.0 aktiv | Triggert Kunden-Sync zeitgesteuert | Cron |
| Lexoffice AB Sync v1.0 aktiv | Synchronisiert Auftragsbestätigungen (AB) | Manuell/Cron |
| Lexoffice Positionen Webhook v1.0 aktiv | Webhook empfängt Position-Updates aus Lexoffice | Webhook |
💾 Backup-Workflows
| Workflow | Was er tut | Trigger |
|---|---|---|
| storage_backup_to_r2 v1.6 aktiv | Spiegelt Supabase Storage-Buckets nach Cloudflare R2 | Cron |
| MAIERSHIRTS Backup Supabase→Drive v1.2 aktiv | Sichert Supabase-Tabellen nach Google Drive | Cron |
| backup_status_notify v1.0 aktiv | Telegram-Status-Push nach Backup-Lauf (OK/Fehler) | nachfolgend |
📋 Alle Workflows (Übersicht)
Aktuell 13 aktive Workflows in n8n. Inaktive (alte Versionen, Migrationen) sind nicht aufgelistet.
| Kategorie | Workflow | Trigger |
|---|---|---|
| Bot | Shopify Lagerabgleich v4.34 | Webhook |
| Bot | MAIERSHIRTS Bot v17.11.0 | Webhook |
| Shopify | Shopify Snapshot Daily v1.7 | Cron 09:00 |
| Shopify | Shopify Kunden Sync v1.2 | Manuell |
| Lexoffice | Lexoffice Netto Sync v1.6 | Manuell |
| Lexoffice | Lexoffice Supabase Sync v1.5 | Manuell |
| Lexoffice | Lexoffice Kunden Sync v1.1 | Manuell |
| Lexoffice | Lexoffice Kunden Sync Cron v1.0 | Cron |
| Lexoffice | Lexoffice AB Sync v1.0 | Manuell/Cron |
| Lexoffice | Lexoffice Positionen Webhook v1.0 | Webhook |
| Backup | storage_backup_to_r2 v1.6 | Cron |
| Backup | MAIERSHIRTS Backup Supabase→Drive v1.2 | Cron |
| Backup | backup_status_notify v1.0 | Folge-Workflow |
Zugang: n8n.srv1578997.hstgr.cloud
🗺️ Systeme & Datenflüsse
| System | Hält | Master für |
|---|---|---|
| Shopify | Artikelstamm, Lagerbestand, Kundenbestellungen, Purchase Orders | Lager & Verkauf |
| Supabase | Mockup-Daten, Projekte, Aufträge (Bot), Maße, Druckparameter, Auftragstracking, Lager-Snapshots, Druckpreise | Eigene Geschäftslogik |
| Lexoffice | Rechnungen, Angebote, Belege, Kontakte | Buchhaltung |
| Google Drive | Foto-Uploads, Backup-ZIPs | Files |
| Cloudflare R2 | Storage-Bucket-Spiegel (Backup) | Disaster Recovery |
| n8n | 13 Workflows als Verbindungs-Glieder | Automatisierung |
🛒 Shopify (Lager-Master)
Alle Lager-Operationen passieren in Shopify. Standorte sind Tübinger Straße 24 (Hauptlager) und Z-Musterlager.
Wichtige Shopify-Felder pro Artikel/Standort
| Feld | Bedeutung |
|---|---|
on_hand | Was physisch im Regal liegt |
committed | Davon für offene Kundenbestellungen reserviert |
available | on_hand − committed — was wirklich verkaufbar ist |
incoming | Über offene Shopify-PO erwartet |
Shopify-Auth (technisch)
Seit 2026 hat Shopify einen 24-Stunden-Token. Beide Bot-Workflows holen sich automatisch alle 24h einen frischen — du musst nichts tun.
🗄️ Supabase (Datenbank)
Zentrale Datenbank. 22 Tabellen, 3 Storage-Buckets.
Wichtigste Tabellen
projects— Projekte (auch in Mockup + Kalkulation referenziert)contacts— Lexoffice-Kontakte (mit shopify_customer_id verknüpfbar)invoices+invoice_assignments— Lexoffice-Rechnungen mit Projekt-Zuordnungms_angebote+ms_angebote_positionen— Angebote aus Kalkulationms_mockups— gespeicherte Mockups inkl. Snapshot der Textil-/Kundendatenms_lager_snapshots— täglicher Lagerstand (für Trends)ms_druck_preise,ms_druck_artikel,ms_textil_einkauf— Stammdaten Kalkulationms_projekte,ms_auftraege,ms_uploads,ms_notizen,ms_masse,ms_druckparameter— Bot-Daten
Storage-Buckets
textil-bilder— Produkt-Bilder fürs Mockup-Toolmockup-pdfs— fertige Mockup-PDFs (privat, signed URLs)mockup-logos— Original-Logos pro Mockup
📑 Lexoffice
Buchhaltungssystem. Daten werden über mehrere n8n-Workflows in Supabase gespiegelt. Die Nachkalkulations-App liest aus Supabase, nicht direkt aus Lexoffice.
Textilien werden als Freitext in den Rechnungen geführt (kein Stammartikel pflichtig). Druckartikel haben Standard-Artikelnummern.
⚙️ n8n (Workflow-Engine)
Hier laufen alle Automatisierungen. Webhook-basiert (z.B. Telegram, Lexoffice) oder Cron-getriggert.
Zugang: n8n.srv1578997.hstgr.cloud
Vollständige Liste der aktiven Workflows: siehe Workflows-Übersicht oben.
✅ Häufige Aufgaben
Wieviel ist von einem Artikel auf Lager?
Lager-Bot → /lager oder im HTML-Report nach SKU suchen.
Was muss ich bei Joma bestellen?
Lager-Bot → /bestellen. Liste mit Mengen kommt sofort.
Sind alle Kundenbestellungen versendet?
Lager-Bot → /offen. Zeigt offene und teilversendete Bestellungen pro Order-Nr.
Neuen Auftrag erfassen
Projekt-Bot → /start → Projekt wählen → "Auftrag erfassen" → Wizard durchklicken (Textil, Hersteller, Druck, Material, Kommentar). Status-Default = Offen.
Maße aufnehmen / Produktionsblatt erstellen
Projekt-Bot → Auftrag öffnen → Maße erfassen (Brust, Rücken, Ärmel etc.) → "Produktionsblatt PDF" → Bot schickt PDF zurück.
Druckparameter nachschlagen
Projekt-Bot → /druck → Transfer Art → Hersteller → Untergrund. Bot zeigt Temperatur/Pressen/Nachpressen/Druck%/Abzug.
Foto zuordnen
Projekt-Bot → Foto direkt in den Chat senden → Bot fragt Projekt + Kategorie (Produktion/Marketing/Bilder aus Anfrage/Produktionsblatt) + Unterordner.
Backup ziehen
Admin-App öffnen → "Backup starten". ZIP-Download dauert ca. 30 Sek. Reminder nach 14 Tagen automatisch. Zusätzlich laufen 3 Cron-Backups im Hintergrund (R2, Drive, Status-Push).
Neues Angebot erstellen
Kalkulation-App → "Angebot" Tab → Kunde wählen → Positionen hinzufügen → Speichern. Anschließend in Lexoffice manuell anlegen (Phase 2b: API-Push noch nicht aktiv).
Mockup für Kunde erstellen
Mockup-App → Textil und Logo wählen → positionieren → PDF erstellen → an Projekt speichern.
Lagerbestand korrigieren
In Shopify Admin direkt → Bestand → Standort wählen → on_hand setzen. Wichtig: Wenn vom Musterlager verkauft wird, muss vorher umgebucht werden — sonst läuft Tübingen ins Minus.
🔧 Wenn etwas nicht geht
Telegram-Bot reagiert nicht
- 1. Auf n8n.srv1578997.hstgr.cloud einloggen
- 2. Workflow finden (
Shopify Lagerabgleich v4.34oderMAIERSHIRTS Bot v17.11.0) - 3. Aktiv-Toggle prüfen — falls aus, einschalten
- 4. Falls aktiv aber Bot stumm: Workflow deaktivieren + sofort wieder aktivieren (re-registriert Telegram-Webhook)
App zeigt "Invalid API key"
Anon-Key in der HTML-Datei wurde versehentlich mit altem Wert deployed. Re-Deploy mit korrektem Key (endet auf ...n2dA).
Lager-Zahl stimmt nicht
Wahrscheinlich: vom Musterlager verkauft ohne Umbuchung. Symptom: Tübingen on_hand < 0, Musterlager hat noch Bestand. Lösung: in Shopify on_hand korrigieren oder Umbuchung machen.
Backup-App lädt nicht
Browser-Konsole prüfen. Häufigster Fehler: Zero Trust nicht eingeloggt. Dann auf Login-Button klicken, Google-Account wählen.
Snapshot 9:00 kommt nicht
n8n Workflow Shopify Snapshot Daily v1.7 auf "active" prüfen. Executions-Liste zeigt ob's gelaufen ist und welcher Node ggf. fehlerhaft war.
Lexoffice-Daten in Nachkalkulation veraltet
Manuell Lexoffice Netto Sync v1.6 in n8n triggern (Manueller Start). Cron läuft sonst zeitgesteuert.
📖 Glossar
| Begriff | Bedeutung |
|---|---|
| SKU | Stock Keeping Unit — eindeutige Artikel-Nummer (z.B. SG-M-T-LM-JO-L) |
| on_hand | Physisch im Regal liegend |
| committed | Reserviert für offene Kundenbestellungen |
| available | Verkaufbar = on_hand − committed |
| incoming | Über offene Shopify-PO erwartet |
| Netto | Im Lager-Bot gleich available |
| Mit Zulauf | available + incoming — Bestand nach erwartetem Wareneingang |
| fulfillable_quantity | Menge in einer Bestellung, die noch versendet werden muss |
| PO | Purchase Order — Lieferantenbestellung (z.B. bei Joma) |
| Bestellung | Im Kontext immer Kundenbestellung, nicht Lieferantenbestellung |
| AB | Auftragsbestätigung (in Lexoffice) |
| Snapshot | Tagesgenauer Lagerstand (in ms_lager_snapshots) |
| Bewegung | Einzelne Bestand-Veränderung (Verkauf, Wareneingang) — noch nicht implementiert |
| Transfer Art | Druckverfahren — DTF, Flexfolie etc. |
| Druckparameter | Temperatur / Pressen / Nachpressen / Druck% / Abzug pro Transfer-Art × Hersteller × Untergrund |
| Größenklasse | Vordefinierte Maße: Klein 8×8, Logo 12×10, Brust 22×16, Rücken 32×24, Rücken XL 40×30 |
| Zero Trust | Cloudflare-Schutz: Apps nur mit Google-Login zugänglich |
| Service Account | Stabilere Auth-Variante als OAuth (kein Token-Expire) |
| Anon Key / Service Role | Supabase-Schlüssel: anon = Public-zugänglich, service_role = volle Rechte |