Files
karim cf0b1869d4 feat: Rechtsseiten (Impressum/AGB/Datenschutz) + Footer + Menü-Fix
- content/impressum.md, agb.md, datenschutz.md (Einzelfirma Karim, CH-Recht,
  [PLATZHALTER] für Adresse/UID/Datum — vor Produktiv juristisch prüfen)
- custom/footer.html: 4-spaltiger Footer (Produkt/Ressourcen/Rechtliches/
  Hosting-CH-Hinweis) + Styling
- hugo.yaml: 'Anmelden' im Menü; doppeltes params bei Gitea entfernt
  (icon:github wurde von type:search überschrieben → Icon war kaputt)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 00:21:01 +02:00

1 line
66 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"/agb/":{"data":{"1-geltungsbereich#1. Geltungsbereich":"Diese AGB gelten für alle Verträge über die Bereitstellung gehosteter Rapport-Instanzen zwischen dem Anbieter und dem Kunden (nachfolgend «Kunde»). Abweichende Bedingungen des Kunden gelten nur bei ausdrücklicher schriftlicher Zustimmung.","10-änderungen-der-agb#10. Änderungen der AGB":"Der Anbieter kann diese AGB anpassen. Wesentliche Änderungen werden dem Kunden rechtzeitig mitgeteilt.","11-anwendbares-recht-und-gerichtsstand#11. Anwendbares Recht und Gerichtsstand":"Es gilt schweizerisches Recht. Gerichtsstand ist, soweit gesetzlich zulässig, [ORT/KANTON].","2-leistungsumfang#2. Leistungsumfang":"Der Anbieter stellt dem Kunden eine gehostete Instanz der Rapport-Software gemäss dem gewählten Abo (Solo, Studio, Business) bereit. Der Funktionsumfang und die Limits (Benutzer, Projekte, Speicher) richten sich nach dem gewählten Plan.\nDer Anbieter betreibt, wartet und sichert die Instanz. Ein Anspruch auf eine bestimmte Verfügbarkeit (Uptime-Garantie) besteht nur, soweit ausdrücklich zugesichert.","3-vertragsschluss-und-laufzeit#3. Vertragsschluss und Laufzeit":"Der Vertrag kommt mit der Registrierung und Wahl eines kostenpflichtigen Abos zustande. Abos werden monatlich abgerechnet und verlängern sich automatisch um einen Monat, sofern nicht gekündigt wird.","4-preise-und-zahlung#4. Preise und Zahlung":"Es gelten die zum Zeitpunkt der Bestellung auf der Website angegebenen Preise (in CHF, zzgl. allfälliger MwSt.). Die Zahlung erfolgt per Kreditkarte oder TWINT über den Zahlungsdienstleister Stripe. Geschäftskunden können auf Anfrage auf Rechnung bezahlen.","5-kündigung#5. Kündigung":"Der Kunde kann das Abo jederzeit zum Ende des laufenden Abrechnungsmonats kündigen. Nach Vertragsende werden die Daten dem Kunden für einen angemessenen Zeitraum zum Export bereitgestellt und anschliessend gelöscht.","6-pflichten-des-kunden#6. Pflichten des Kunden":"Der Kunde ist für die rechtmässige Nutzung seiner Instanz und der darin gespeicherten Daten verantwortlich. Eine Weitergabe der Zugangsdaten an Unbefugte ist untersagt.","7-datenschutz#7. Datenschutz":"Die Verarbeitung personenbezogener Daten richtet sich nach der Datenschutzerklärung und dem schweizerischen Datenschutzgesetz (DSG).","8-haftung#8. Haftung":"Der Anbieter haftet für Schäden nur bei Vorsatz oder grober Fahrlässigkeit. Die Haftung für leichte Fahrlässigkeit ist, soweit gesetzlich zulässig, ausgeschlossen. Der Kunde ist für eigene zusätzliche Backups seiner Daten mitverantwortlich.","9-open-source#9. Open Source":"Die Rapport-Software selbst steht unter der AGPL-3.0. Der Kunde kann sie jederzeit auch selbst betreiben. Das Hosting-Angebot betrifft ausschliesslich den Betrieb und die Wartung.","allgemeine-geschäftsbedingungen#Allgemeine Geschäftsbedingungen":"Allgemeine Geschäftsbedingungen Stand: [DATUM]. Diese AGB regeln die Nutzung von «RAPPORT Hosting», betrieben von Karim Gabriele Varano (nachfolgend «Anbieter»). Dies ist eine Vorlage — vor produktivem Einsatz juristisch prüfen lassen."},"title":"AGB"},"/datenschutz/":{"data":{"1-verantwortlicher#1. Verantwortlicher":"Karim Gabriele Varano [STRASSE, PLZ ORT], Schweiz E-Mail: [KONTAKT-EMAIL]","2-welche-daten-wir-verarbeiten#2. Welche Daten wir verarbeiten":"Kontodaten: E-Mail-Adresse, Passwort (verschlüsselt gespeichert), sowie optional Firma, Ansprechperson, Rechnungsadresse und Telefon.\nZahlungsdaten: Die Zahlungsabwicklung erfolgt über Stripe. Wir speichern keine vollständigen Kreditkartendaten; Stripe verarbeitet diese als eigener Verantwortlicher.\nInstanz-Daten: Die in Ihrer Rapport-Instanz erfassten Inhalte (Projekte, Zeiten, Rechnungen etc.) werden in Ihrem Auftrag verarbeitet. Sie bleiben Ihr Eigentum.\nTechnische Daten: Server-Logs (IP-Adresse, Zeitpunkt, abgerufene Ressource) zur Sicherstellung des Betriebs.","3-zweck-der-verarbeitung#3. Zweck der Verarbeitung":"Wir verarbeiten Daten ausschliesslich zur Bereitstellung, Abrechnung und Wartung des Dienstes sowie zur Kommunikation mit Ihnen.","4-hosting-standort#4. Hosting-Standort":"Ihre Daten werden in der Schweiz [bzw. Rechenzentrum-Standort präzisieren] gehostet. Tägliche Backups werden erstellt.","5-weitergabe-an-dritte#5. Weitergabe an Dritte":"Eine Weitergabe erfolgt nur, soweit für den Betrieb erforderlich (z.B. Zahlungsdienstleister Stripe) oder gesetzlich vorgeschrieben. Es findet kein Verkauf von Daten statt.","6-aufbewahrung-und-löschung#6. Aufbewahrung und Löschung":"Kontodaten werden für die Dauer des Vertragsverhältnisses gespeichert. Nach Kündigung werden die Instanz-Daten nach Ablauf der Export-Frist gelöscht.","7-ihre-rechte#7. Ihre Rechte":"Sie haben das Recht auf Auskunft, Berichtigung, Löschung und Datenübertragbarkeit Ihrer personenbezogenen Daten. Anfragen richten Sie an [KONTAKT-EMAIL].","8-cookies#8. Cookies":"Diese Website verwendet nur technisch notwendige Speicherung (z.B. Login-Token im Browser). Es findet kein Tracking durch Dritte statt.","9-kontakt#9. Kontakt":"Bei Fragen zum Datenschutz: [KONTAKT-EMAIL].","datenschutzerklärung#Datenschutzerklärung":"Datenschutzerklärung Stand: [DATUM]. Diese Erklärung beschreibt, wie «RAPPORT Hosting» mit personenbezogenen Daten umgeht. Vorlage — vor produktivem Einsatz juristisch prüfen lassen (insb. revDSG / DSGVO bei EU-Kunden)."},"title":"Datenschutz"},"/docs/":{"data":{"":"Vollständige Anleitung zu RAPPORT — von der Installation über den täglichen Arbeitsablauf bis zur Cloud-Variante und Eigen-Builds.","erste-schritte#Erste Schritte":"Quick-StartIn sechs Schritten von Null zur ersten Rechnung. InstallationmacOS, Gatekeeper, Signatur, geplante Plattformen. EinrichtungBürodaten, Mitarbeiter, Kunden, Projekte initial anlegen.","für-fortgeschrittene#Für Fortgeschrittene":"Web-Modus (Multi-User)Rapport im Browser via Supabase — für Studios mit mehreren Nutzern. Entwicklung \u0026 BuildAus dem Quellcode kompilieren, beitragen, eigenes Release. ChangelogVersionsgeschichte und Breaking Changes.","hilfe--support#Hilfe \u0026amp; Support":"Bei Bugs oder weiteren Fragen → Issue auf Gitea . Siehe auch die FAQ für häufige Fragen.","im-alltag#Im Alltag":"Typischer ArbeitsablaufKunde → Offerte → Projekt → Zeit → Rechnung. Datenhaltung \u0026 BackupWo die Daten liegen, wie du sie sicherst und wiederherstellst. TroubleshootingApp startet nicht, Daten weg, Update hängt."},"title":"Dokumentation"},"/docs/arbeitsablauf/":{"data":{"":"Vom Erstkontakt mit dem Kunden bis zur Schlussrechnung — der typische Weg eines Projekts durch Rapport.","1--kunde-anlegen#1 · Kunde anlegen":"Kunden → Neu — siehe Einrichtung § 3.\nFalls der Kunde später bestellt, lassen sich alle gesammelten Daten (Adresse, Honorartyp) direkt übernehmen.","2--offerte-erstellen#2 · Offerte erstellen":"Offerten → Neu\nFeld Inhalt Kunde aus Kundendatenbank wählen Bezeichnung Projekttitel (z. B. “Einfamilienhaus Müller, Bern”) Honorartyp Stundensatz / SIA 102 / Pauschal Bauschätzwert bei SIA — Bruttowert in CHF Phasen bei SIA — anzuklickende Phasen Positionen bei Stundensatz/Pauschal — Position, Beschreibung, Betrag Mit PDF exportieren — fertige Offerte für den Kunden.","3--offerte--projekt#3 · Offerte → Projekt":"Bei Status “Angenommen”: Knopf “In Projekt konvertieren”.\nDas erzeugt:\nEin neues Projekt mit den Daten der Offerte (Kunde, Bezeichnung, Honorar, Phasen) Eine Verknüpfung zwischen Offerte und Projekt Die Offerte selbst bleibt im Archiv erhalten Siehe auch Projekt-Feature.","4--zeit-erfassen#4 · Zeit erfassen":"Zeit → Mitarbeiter wählen → Woche navigieren\nKlick auf einen Halbstunden-Slot → Eintrag erstellen Drag über mehrere Slots → längerer Eintrag Projekt zuweisen (Pflichtfeld) — aus aktiven Projekten SIA-Phase zuweisen (optional, für detaillierte Auswertung)","5--akonto-rechnung#5 · Akonto-Rechnung":"Während der Projektlaufzeit — typisch nach jeder abgeschlossenen SIA-Phase oder monatlich.\nRechnungen → Neu → Akonto\nFeld Inhalt Projekt aus aktiven Projekten Bezug “Akonto für Phase 31 — Vorprojekt” Betrag Stundensatz × Stunden, oder Phasenanteil × Bausumme Fälligkeit i. d. R. 30 Tage Rapport zieht automatisch die geleisteten Stunden aus der Zeiterfassung — die kannst du als Basis nehmen oder überschreiben.\nPDF inkl. QR-Einzahlungsschein — siehe Rechnungen-Feature.","6--schlussrechnung#6 · Schlussrechnung":"Nach Projektabschluss — Differenz aus Gesamthonorar minus aller Akonto-Beträge.\nRechnungen → Neu → Schlussrechnung\nRapport rechnet die bisherigen Akonto-Rechnungen automatisch ab:\nGesamthonorar (SIA / Pauschal / Stundensatz) Akonto-Rechnung 1 Akonto-Rechnung 2 Akonto-Rechnung 3 = Schlussrechnung","7--projektabschluss#7 · Projektabschluss":"Im Projekt → Status auf “Abgeschlossen”.\nDas Projekt bleibt für historische Auswertungen sichtbar, taucht aber nicht mehr in der Zeiterfassungs-Auswahl auf.","auswertungen#Auswertungen":"Wöchentlich / monatlich / am Jahresende:\nZeit → Auswertungen — Stunden pro Mitarbeiter, pro Projekt, pro Phase Rechnungen → Übersicht — offene Beträge, bezahlt, Mahnungen Buchhaltung → Erfolgsrechnung — Einnahmen vs. Ausgaben Mitarbeiter → Lohnabrechnung — monatlich","offerten-status#Offerten-Status":"Status Bedeutung Entwurf noch nicht versandt Versandt beim Kunden, wartet auf Antwort Angenommen Kunde hat zugesagt — bereit zur Konvertierung Abgelehnt Kunde hat abgelehnt — Archiv","spezialfälle#Spezialfälle":"Ferien — eigener “Projekt”-Typ “Ferien”, in der Auswertung separat Krankheit/Absenz — eigener “Projekt”-Typ, ebenfalls separat Interne Stunden — z. B. Verwaltung, Marketing, IT — eigene interne Projekte","tipps-aus-dem-alltag#Tipps aus dem Alltag":"Zeit jeden Tag erfassen statt rückwirkend — sonst gehen Details verloren Akonto regelmässig statt einmal am Schluss — Liquidität Backups vor Jahresabschluss — siehe Datenhaltung Briefbogen-Logo in hoher Auflösung — sieht im PDF besser aus","übersicht#Übersicht":"Kunde → Offerte → Projekt → Zeit → Akonto → Schluss anlegen erstellen (aus Offerte) erfassen -Rechnung -Rechnung ↓ QR-Schein"},"title":"Arbeitsablauf"},"/docs/changelog/":{"data":{"":"Versionsgeschichte von RAPPORT. Aktuelle Releases: Gitea .","01x--initial#0.1.x — Initial":"Neu\nErste Setup-Routine (Bürodaten, Mitarbeiter, Kunden) Briefe und Lieferscheine Tauri-2-Bundle für macOS","02x--zeiterfassung#0.2.x — Zeiterfassung":"Neu\nWochenraster mit Halbstunden-Slots Drag \u0026 Drop zur Slot-Erfassung Projekt-Zuweisung pro Eintrag Auswertungen pro Mitarbeiter und Projekt","03x--rechnungen--qr#0.3.x — Rechnungen \u0026amp; QR":"Neu\nRechnungsmodul mit QR-Einzahlungsschein (via swissqrbill) Akonto-, Teil- und Schlussrechnungen PDF-Export mit Bürobriefbogen Stundensatz-Rechnungen ziehen direkt aus der Zeiterfassung","04x--projekte--sia-102#0.4.x — Projekte \u0026amp; SIA 102":"Neu\nProjektverwaltung nach SIA 102 Vorgeschlagene Phasen-Anteile am Gesamthonorar Bauschätzwert-basiertes Honorar Verbessert\nZeit-Auswertung pro SIA-Phase Akonto- und Schlussrechnungen mit automatischer Differenzberechnung","05x--mitarbeiter--lohn#0.5.x — Mitarbeiter \u0026amp; Lohn":"Neu\nMitarbeiterverwaltung mit Pensum, Stundensatz, Ferienanspruch Lohnabrechnung mit AHV/IV/EO, ALV, BVG, NBU Jahresabschluss mit Überstundenausgleich Ferien-Prorata bei Eintritt unter Jahr","06x--spesen--buchhaltung#0.6.x — Spesen \u0026amp; Buchhaltung":"Neu\nSpesenerfassung mit Beleg-Upload (Base64 in localStorage) Jahresbudget mit Einnahmen-/Ausgaben-Übersicht Vereinfachte Erfolgsrechnung pro Geschäftsjahr Verbessert\nLohnabrechnung integriert Spesen-Erstattungen CSV-Export aus der Zeiterfassung","070--auto-updater--system-tray#0.7.0 — Auto-Updater \u0026amp; System-Tray":"Neu\nAuto-Updater — Rapport prüft beim Start auf neue Versionen und installiert Updates signiert über Tauri. Einzelne Versionen können übersprungen werden. (Doku) System-Tray — Schnellzugriff über die Menüleiste mit Hide-on-Close. Beim Schliessen läuft Rapport im Hintergrund weiter, Cmd+Q beendet die App vollständig. (Doku) Quick-Open der letzten 5 Projekte direkt aus dem Tray-Menü Verbessert\nSchnellerer App-Start durch lazy-geladene Views Klarere Statusbadges in der Projekt-Übersicht","080081--patch-releases#0.8.00.8.1 — Patch-Releases":"Patch-Reihe mit kleineren Verbesserungen und Bugfixes. Details siehe Releases auf Gitea .","082--aktuelle-version-aktuell#0.8.2 — Aktuelle Version \u003cspan class=\"rapport-status new\"\u003eAktuell\u003c/span\u003e":"Veröffentlicht am 2026-05-24.\nNeu / Verbessert\nDiverse Verbesserungen und Bugfixes (Details werden im Release auf Gitea gepflegt) Bekannte Einschränkungen\nBuilds sind Tauri-signiert, aber noch nicht Apple-notarisiert — siehe Installation § Gatekeeper Linux- und Windows-Builds noch nicht verfügbar","roadmap#Roadmap":"Geplant — keine konkreten Termine:\nLinux-Build (Tauri 2 unterstützt es, Bedarf nötig) Windows-Build (analog) Cloud-Modus Stable (Supabase) — derzeit in Web-Modus verfügbar, aber experimentell Französische / Italienische Übersetzung PostgreSQL-Migration aus localStorage (Knopf in der App) Mobile App (iOS Companion zur Zeiterfassung) — offen Wünsche oder Prioritäten → Issue auf Gitea ."},"title":"Changelog"},"/docs/datenhaltung/":{"data":{"":"Wo Rapport seine Daten speichert, wie du sie sicherst und wiederherstellst.\nDiese Seite beschreibt die Desktop-App (Single-User). Wer im Team arbeitet und Rapport gegen einen Rapport Server betreibt, sichert stattdessen die Postgres-Datenbank — siehe Rapport Server § Backup.","a--einfach-manuell#A · Einfach (manuell)":"Den ganzen Ordner kopieren:\ncp -R \"~/Library/Application Support/com.rapport.app\" \\ \"~/Documents/Rapport-Backup-$(date +%Y%m%d)\" → Auf USB-Stick, externen Datenträger oder in die Cloud.","b--time-machine#B · Time Machine":"Wenn Time Machine läuft, ist der Ordner automatisch dabei. Versionierung inbegriffen.\nEinschränkung: Time Machine sichert nur lokal/USB. Für off-site-Backup separat sorgen.","backup-strategien#Backup-Strategien":"","c--cron-job-täglich-automatisch#C · Cron-Job (täglich automatisch)":"# In ~/Library/LaunchAgents/com.rapport.backup.plist hinterlegen # oder als crontab-Eintrag: 0 22 * * * rsync -a \"$HOME/Library/Application Support/com.rapport.app/\" \\ \"$HOME/Backups/rapport/$(date +\\%Y\\%m\\%d)/\"","d--icloud-drive-off-site#D · iCloud Drive (off-site)":"Application-Support liegt nicht automatisch in iCloud. Wer das will:\n# Symlink anlegen mkdir -p \"~/iCloud Drive/Rapport\" ln -s \"~/Library/Application Support/com.rapport.app\" \"~/iCloud Drive/Rapport/data\" Achtung: iCloud-Sync mit aktiver App kann zu Race-Conditions führen. Besser den Sync zeitversetzt (z. B. nachts via Cron).","datenmenge#Datenmenge":"Typische Grössen pro Bürojahr:\nInhalt Grösse Logo (PNG/SVG) 50 KB 1 MB 1 Jahr Zeiterfassung (1 MA) ~ 80 KB 1 Jahr Zeiterfassung (5 MA) ~ 400 KB 50 Projekte mit je 5 Rechnungen ~ 800 KB Total typisches Solo-Büro / Jahr ~ 12 MB localStorage hat Limits (i. d. R. ~10 MB pro Origin). Für Solo-Büros reicht das problemlos für viele Jahre. Wer das Limit erreicht oder im Team arbeitet → Rapport Server.","export-funktionen-in-der-app#Export-Funktionen (in der App)":"Aus Rapport selbst:\nWas Wo Format Zeit-Auswertung Zeit → Export CSV Rechnung Rechnung → PDF PDF (inkl. QR) Offerte Offerte → PDF PDF Lohnabrechnung Mitarbeiter → PDF PDF Jahres-Buchhaltung Buchhaltung → Export CSV Die Exports sind für externe Verwendung (Buchhalter, Treuhänder, Archiv) gedacht — kein Full-Backup.","macos#macOS":"~/Library/Application Support/com.rapport.app/ Dort liegt eine einzelne localStorage-Datenbank des WebView, in der alle Rapport-Daten als JSON unter dem Key studio_data_v1 gespeichert sind:\nBürodaten, Logo, IBAN Mitarbeiter, Kunden, Projekte, Offerten Zeit-Einträge, Rechnungen Spesen, Lohnabrechnungen, Protokolle App-Einstellungen Konsequenz: Wer den Application-Support-Ordner kopiert, hat ein vollständiges Backup. Wer ihn löscht, verliert alle Daten.","schema-migrationen#Schema-Migrationen":"Bei Updates kann sich das Datenformat ändern. Rapport hat einen Migrations-Mechanismus: beim Start prüft die App, ob das gespeicherte Format dem aktuellen entspricht, und migriert es automatisch.\nCode: src/storage/migrations.js .\nEmpfehlung: Vor jedem grösseren Update ein Backup machen — Migrationen sind getestet, aber 100%-Sicherheit gibt es nicht.","selektiv-nur-einzelne-daten#Selektiv (nur einzelne Daten)":"Da alle Daten in einem JSON unter studio_data_v1 liegen, ist selektive Wiederherstellung manuell:\nBackup-localStorage-Datei öffnen (WebKit-Format → mit Tool wie [WebKit Storage Inspector] lesen, oder via Rapport DevTools) Gewünschte Felder in die aktuelle Instanz übertragen In der Praxis: meistens lohnt sich die vollständige Wiederherstellung mehr.","speicherort-desktop-app#Speicherort (Desktop-App)":"Die Desktop-App speichert alles lokal — keine Cloud, kein Server.","vollständig-rapport-komplett-tot#Vollständig (Rapport komplett tot)":"Rapport beenden (Cmd+Q, nicht nur Fenster zu) Aktuellen Ordner umbenennen (falls noch da): mv \"~/Library/Application Support/com.rapport.app\" \\ \"~/Library/Application Support/com.rapport.app.bak\" Backup-Ordner zurück kopieren: cp -R \"~/Documents/Rapport-Backup-20260523\" \\ \"~/Library/Application Support/com.rapport.app\" Rapport starten","warum-localstorage#Warum localStorage?":"In der Desktop-App ist Rapport eine Single-User-Anwendung. localStorage ist dafür:\nSchnell — keine Datenbank-Roundtrips Einfach — keine Migration nötig, JSON-Schema im Code Portabel — eine Datei → ein Backup Für Multi-User-Betrieb existiert Rapport Server — Postgres + Auth + Realtime in einem Docker-Compose. Wechsel zwischen Desktop- und Server-Modus erfolgt im Login-Bildschirm der App.","was-wird-nicht-gespeichert#Was wird \u003cstrong\u003enicht\u003c/strong\u003e gespeichert?":"WebView-Cache — ~/Library/Caches/com.rapport.app/ und ~/Library/WebKit/com.rapport.app/ sind sicher zu löschen (UI-Caches, regenerieren sich) App-Updates — werden bei Bedarf erneut runtergeladen Logs — ~/Library/Logs/com.rapport.app/ (geplant, derzeit nicht geschrieben)","wiederherstellung#Wiederherstellung":""},"title":"Datenhaltung"},"/docs/einrichtung/":{"data":{"":"Nach der Installation: Bürodaten, Mitarbeiter, Kunden und Projekte initial anlegen.","1--bürodaten#1 · Bürodaten":"Einstellungen → Bürodaten\nFeld Beschreibung Verwendung Name Bürobezeichnung Briefbogen, Login-Screen Adresse Strasse, PLZ, Ort Briefbogen, QR-Rechnung (Empfänger) Telefon, E-Mail Kontaktdaten Briefbogen, Rechnung-Footer IBAN CH-IBAN (Format CH XX XXXX …) QR-Einzahlungsschein — Pflicht Logo PNG/SVG-Upload Briefbogen, Rechnung, Brief MwSt.-Nr. optional Rechnung-Footer Tipp: Das Logo wird hochauflösend gespeichert (Base64 im localStorage). Bei sehr grossen Dateien (\u003e1 MB) vorher in Vorschau verkleinern.","2--mitarbeiter#2 · Mitarbeiter":"Einstellungen → Mitarbeiter → Neu\nFeld Beschreibung Name, Vorname wird in Zeiterfassung \u0026 Lohn verwendet Initialen Kürzel für Auswertungen (z. B. “KGE”) Eintrittsdatum für Prorata der Ferien Pensum (%) 100 = Vollzeit Stundensatz (CHF) für Stundensatz-Rechnungen Ferienanspruch (Tage/Jahr) i. d. R. 2530 Lohn (brutto, monatlich) optional, für Lohnabrechnung Mindestens ein Mitarbeiter (z. B. der Inhaber selbst) muss angelegt sein, sonst lässt sich keine Zeit erfassen.","3--kunden#3 · Kunden":"Kunden → Neu\nFeld Beschreibung Typ Privatperson / Firma Anrede, Name für Brief / Rechnung Adresse Strasse, PLZ, Ort, Land Ansprechperson bei Firmen Telefon, E-Mail Kontakt Honorartyp Default Stundensatz / SIA / Pauschal Stundensatz falls vom Bürostandard abweichend MwSt.-pflichtig ja/nein","4--projekte#4 · Projekte":"Projekte → Neu\nFeld Beschreibung Projekt-Nr. freie Form, oder generiert (2026-001) Bezeichnung Kurztitel Standort Adresse Kunde aus Kundendatenbank Bauschätzwert für SIA-Phasen-Honorar SIA-Phasen Vorprojekt / Bauprojekt / … — alle anwählbar Honorartyp Stundensatz / SIA 102 / Pauschal Status aktiv / pausiert / abgeschlossen","checkliste#Checkliste":"Nach diesen vier Schritten ist Rapport einsatzbereit:\nBürodaten inkl. IBAN erfasst Mindestens ein Mitarbeiter angelegt Erster Kunde angelegt Erstes Projekt angelegt Eine Test-Zeitbuchung erfasst — wird das Projekt korrekt zugewiesen? Eine Test-Rechnung erstellt — kommt der QR-Schein sauber raus? Wenn alles funktioniert: Typischer Arbeitsablauf.","reihenfolge#Reihenfolge":"Die Reihenfolge ist wichtig — jede Stufe baut auf der vorherigen auf:\n1. Bürodaten → 2. Mitarbeiter → 3. Kunden → 4. Projekte ▼ ▼ ▼ ▼ Briefbogen, Zeiterfassung, Adressen, Zeiterfassung, QR-Schein, Lohn Rechnungen Rechnungen Login","sia-102-phasen#SIA-102-Phasen":"Wenn als Honorartyp SIA 102 gewählt ist, werden die Phasen-Anteile am Gesamthonorar vorgeschlagen — siehe Projekt-Feature.","sozialabzüge-optional#Sozialabzüge (optional)":"In Einstellungen → Lohn:\nAbzug Standardwert (CH) AHV / IV / EO 5,3 % ALV 1,1 % BVG (Pensionskasse) variabel — je Mitarbeiter NBU je nach Versicherung Die Standardsätze sind hinterlegt, können aber überschrieben werden."},"title":"Einrichtung"},"/docs/entwicklung/":{"data":{"":"Aus dem Quellcode kompilieren, beitragen, eigenes Release erzeugen.","architektur-in-einem-absatz#Architektur in einem Absatz":"RAPPORT ist eine monolithische SPA: ein React-Root in App.jsx hält den gesamten App-State in einem useState({...}), persistiert ihn synchron in localStorage unter studio_data_v1, und übergibt ihn als Props an lazy-geladene Views. Kein Routing-Framework, kein State-Library, kein TypeScript, kein CSS-Framework. Der Rust-Teil ist 109 Zeilen und macht nur drei Dinge: System-Tray, Window-Hide-on-Close, Plugin-Registrierung (Updater, Process, Log). Keine #[tauri::command] — Frontend ↔ Backend kommuniziert nur über das Event rapport:navigate (Tray → Frontend).\nDetaillierte Karte: ARCHITECTURE.md .","beitragen#Beitragen":"Issues \u0026 Pull Requests sind willkommen. Wertvoll sind:\nBug-Reports mit Reproduktionsschritten Workflow-Verbesserungen aus dem realen Büroalltag Vorlagen (Briefe, Protokolle, Lieferscheine) für andere Büros Übersetzungen / Internationalisierung (FR, IT) Linux-/Windows-Builds und plattformspezifische Fixes Vor grösseren Änderungen → Issue zum Diskutieren.","build#Build":"","desktop-tauri-dmg#Desktop (Tauri DMG)":"npm run build # erst Vite-Build (dist/) npx tauri build # dann Tauri-Bundle (DMG) Output: src-tauri/target/release/bundle/dmg/Rapport__aarch64.dmg","entwicklung#Entwicklung":"","konventionen#Konventionen":"JavaScript statt TypeScript — bewusste Entscheidung für Solo-Dev-Velocity Inline-Styles statt CSS-Framework kein Routing-Framework — view-State in App.jsx triggert Komponente JSON-Schema implizit — definiert durch defaultData in constants.js Migrationen als reine Funktionen in storage/migrations.js","lizenz#Lizenz":"GNU AGPL-3.0-or-later — eigene Builds erlaubt, Modifikationen müssen unter derselben Lizenz veröffentlicht werden, wenn die Software als Service angeboten wird.","native-window-tauri-fenster-mit-desktop-integration#Native Window (Tauri-Fenster mit Desktop-Integration)":"npx tauri dev Echtes Tauri-Fenster System-Tray, Updater, native APIs verfügbar Erster Start dauert lange (Rust-Compile)","release-workflow#Release-Workflow":"# 1 · Version bumpen in package.json + Cargo.toml + tauri.conf.json ./scripts/release.sh 0.7.1 # 2 · Build mit Signatur TAURI_SIGNING_PRIVATE_KEY=$(cat ~/.tauri/rapport-key) \\ TAURI_SIGNING_PRIVATE_KEY_PASSWORD=… \\ npx tauri build # 3 · latest.json aktualisieren mit neuer Signatur # 4 · DMG + latest.json auf Gitea Releases hochladen","setup#Setup":"git clone https://git.kgva.ch/karim/RAPPORT.git cd RAPPORT/APP npm install","verzeichnis-karte#Verzeichnis-Karte":"APP/ ├── src/ React 19 (kein TS, nur .jsx) │ ├── App.jsx Root: State, Navigation, Sidebar, Modals │ ├── constants.js STORAGE_KEY, NAV_ITEMS, defaultData, SIA-Phasen │ ├── utils.js Business-Logik: Kalkulation, QR-Bill, CSV, Lohn │ ├── storage/adapter.js LocalStorageAdapter (Phase 1), SupabaseAdapter (Phase 2) │ ├── storage/migrations.js Schema-Migrationen │ ├── views/ 20 Top-Level-Screens, lazy-geladen │ ├── components/UI.jsx StatusBadge, Modal, FormField, … │ ├── components/Update* Auto-Update-UI │ ├── print/ PrintComponents.jsx — alle Druckansichten │ └── utils/updater.js @tauri-apps/plugin-updater Wrapper │ ├── supabase/migrations/ Postgres-Schema für Cloud-Variante │ ├── src-tauri/ Rust-Backend (Tauri 2.10.3) │ ├── src/lib.rs ~103 Z. — Tray, Window-Events, Plugins │ ├── tauri.conf.json Updater-URL, Public-Key, CSP, Bundle-Targets │ └── capabilities/ Tauri Permissions │ ├── scripts/release.sh Build + Sign + latest.json erzeugen ├── latest.json Updater-Manifest └── deploy/ Docker-Compose für Web-Modus","voraussetzungen#Voraussetzungen":"Tool Version Node.js ≥ 20 (für Vite 8) npm ≥ 10 Rust toolchain ≥ 1.77.2 (via rustup) Plattform-Tools siehe Tauri Prerequisites Plattform-spezifisch:\nmacOS: Xcode Command Line Tools (xcode-select --install) Windows: Microsoft C++ Build Tools + WebView2 Linux: webkit2gtk-4.1, librsvg2-dev, libayatana-appindicator3-dev, build-essential","web-modus-hmr-schnellster-loop#Web-Modus (HMR, schnellster Loop)":"npm run dev # http://localhost:3000 Hot-Module-Replacement Schnellster Iteration-Loop für UI-Arbeit Datenpersistierung: Browser-localStorage","web-statisches-bundle#Web (statisches Bundle)":"npm run build # Output: dist/ (~500 KB) Für Hosting auf einem Static-Server (z. B. Nginx, Caddy, GitHub Pages). Siehe Web-Modus."},"title":"Entwicklung"},"/docs/erste-schritte/":{"data":{"":"Von der Installation bis zur ersten Rechnung — in sechs Schritten.","01--installation#01 · Installation":"DMG von Gitea Releases herunterladen. Rapport in den Programme-Ordner ziehen. Beim ersten Start: Systemeinstellungen → Datenschutz \u0026 Sicherheit öffnen und Rapport zulassen.\nDie Pre-Release-Builds sind signiert über Tauri, aber (noch) nicht über die Apple-Notarisierung gegangen — daher der manuelle Freigabe-Schritt.","02--einrichtung#02 · Einrichtung":"In den Einstellungen hinterlegen:\nBürodaten — Name, Adresse, IBAN, Logo Mitarbeiter — Namen, Pensum, Stundensatz, Ferienanspruch Kunden — Adresse, Ansprechperson, Honorartyp Projekte — SIA-102-Phasen, Budget, Beteiligte Danach ist die Zeiterfassung bereit.","03--zeiterfassung#03 · Zeiterfassung":"Im Modul Zeit:\nMitarbeiter wählen Woche navigieren Stunden per Klick oder Drag erfassen Jedem Eintrag ein Projekt zuweisen Auswertungen pro Mitarbeiter und pro Projekt sind unter Zeit → Auswertungen abrufbar. Halbe Tage und Mehrfacheinträge pro Slot werden unterstützt.","04--rechnungen#04 · Rechnungen":"Aus einer Offerte oder direkt erstellen:\nSIA-Phasen, Stundensatz oder Pauschal wählen Akonto-, Teil- oder Schlussrechnung Mit PDF exportieren wird die fertige Rechnung inkl. QR-Einzahlungsschein generiert Offerten lassen sich nahtlos in Projekte und Rechnungen konvertieren.","05--backup#05 · Backup":"In der Desktop-App liegen alle Daten als JSON im Applikationsordner:\n~/Library/Application Support/com.rapport.app/ Für ein Backup reicht es, diesen Ordner zu kopieren — z. B. auf einen externen Datenträger oder in die Cloud. Empfohlen: regelmässig (wöchentlich oder via Time Machine). Im Server-Modus läuft das Backup über Postgres-Dumps — siehe Rapport Server § Backup.","06--probleme-melden#06 · Probleme melden":"Ein Issue auf Gitea erstellen — mit kurzer Beschreibung, was passiert ist. Screenshots helfen. Bitte die Rapport-Version (links unten in der App) angeben.\nTipp: Wenn die App nicht mehr startet, hilft oft, den Cache-Ordner zu sichern und neu zu starten. Die JSON-Daten selbst bleiben unverändert."},"title":"Erste Schritte"},"/docs/installation/":{"data":{"":"Schritt-für-Schritt-Anleitung für die Installation der Desktop-App.","1--download#1 · Download":"Aktueller Build: Downloads-Seite oder direkt Releases auf Gitea .\nDatei Plattform RAPPORT__aarch64.dmg macOS Apple Silicon RAPPORT__x86_64.dmg macOS Intel (auf Anfrage)","2--dmg-öffnen--installieren#2 · DMG öffnen \u0026amp; installieren":"DMG doppelklicken Rapport.app in den Applications-Ordner ziehen DMG auswerfen","3--erster-start-macos-gatekeeper#3 · Erster Start (macOS Gatekeeper)":"Beim ersten Start verweigert macOS den Start, weil die Pre-Release-Builds Tauri-signiert, aber (noch) nicht Apple-notarisiert sind.","4--erstes-setup#4 · Erstes Setup":"Beim ersten Start zeigt Rapport den Setup-Bildschirm. Hier werden die Stammdaten erfasst — siehe Einrichtung.","5--update-strategie#5 · Update-Strategie":"Ab Version 0.7.0 prüft Rapport beim Start automatisch auf neue Versionen (siehe Auto-Updater). Updates können in den Einstellungen deaktiviert werden.\nManuelle Updates: einfach das neuere DMG installieren — die Daten bleiben erhalten, da sie unabhängig von der App liegen (siehe Datenhaltung).","alternative-terminal#Alternative (Terminal)":"Falls der GUI-Weg nicht funktioniert:\nxattr -d com.apple.quarantine /Applications/Rapport.app Das entfernt das Quarantäne-Flag und macOS akzeptiert den Start.","bekannte-probleme#Bekannte Probleme":"Problem Lösung App lässt sich nicht öffnen trotz Freigabe Terminal-Variante mit xattr “Rapport is damaged” DMG erneut von Gitea ziehen (Browser-Cache hat evtl. Müll) Schwarzer Bildschirm beim Start ~/Library/WebKit/com.rapport.app löschen, neu starten Mehr unter Troubleshooting.","deinstallation#Deinstallation":"# App entfernen rm -rf /Applications/Rapport.app # Daten entfernen (optional!) rm -rf \"~/Library/Application Support/com.rapport.app\" # Caches rm -rf \"~/Library/Caches/com.rapport.app\" rm -rf \"~/Library/WebKit/com.rapport.app\" Achtung: Schritt 2 löscht alle Rapport-Daten unwiederbringlich. Vorher Backup machen — siehe Datenhaltung.","lösung#Lösung":"Systemeinstellungen → Datenschutz \u0026 Sicherheit öffnen Bis ganz nach unten scrollen — es erscheint: “Rapport” wurde blockiert, da es nicht von einem identifizierten Entwickler stammt.\nAuf “Trotzdem öffnen” klicken Bestätigen Ab dem zweiten Start läuft Rapport ohne Rückfragen.","voraussetzungen#Voraussetzungen":"Plattform Status Versionen macOS Apple Silicon (M1 M4) ✅ Unterstützt macOS 12+ macOS Intel ⚠ Build auf Anfrage macOS 12+ Linux 🕐 Geplant — Windows 🕐 Geplant — Eine Portierung auf Linux und Windows ist mit Tauri 2 möglich. Issue erstellen , wenn du eine Plattform brauchst."},"title":"Installation"},"/docs/troubleshooting/":{"data":{"":"Typische Probleme und Lösungen. Wenn dein Problem nicht dabei ist → Issue auf Gitea .","app-startet-nicht#App startet nicht":"","app-startet-zeigt-aber-schwarzen-bildschirm#App startet, zeigt aber schwarzen Bildschirm":"Ursache: WebView-Cache korrupt.\nLösung:\nrm -rf \"~/Library/Caches/com.rapport.app\" rm -rf \"~/Library/WebKit/com.rapport.app\" App neu starten. Daten gehen dabei nicht verloren (liegen in Application Support, nicht im Cache).","app-stürzt-sofort-beim-start-ab#App stürzt sofort beim Start ab":"Ursache: wahrscheinlich beschädigte JSON-Daten in studio_data_v1.\nDiagnose:\n# Daten ansehen (DevTools-Output) open \"~/Library/Application Support/com.rapport.app\" Lösung:\nBackup wiederherstellen (siehe Datenhaltung) Oder als letzter Ausweg: Daten zurücksetzen mv \"~/Library/Application Support/com.rapport.app\" \\ \"~/Library/Application Support/com.rapport.app.bad\" App neu starten → erstellt frische Daten. Anschliessend Setup-Screen.","auto-update-findet-nichts#Auto-Update findet nichts":"Diagnose:\ncurl -s https://git.kgva.ch/karim/RAPPORT/raw/branch/main/APP/latest.json → sollte JSON liefern. Wenn nicht: Server-/Netzwerkproblem.","daten-weg#Daten weg":"","debug-informationen-sammeln#Debug-Informationen sammeln":"Bei einem Issue helfen folgende Infos:\n# Rapport-Version defaults read /Applications/Rapport.app/Contents/Info.plist CFBundleShortVersionString # macOS-Version sw_vers # Architektur uname -m # Datenverzeichnis-Grösse du -sh \"~/Library/Application Support/com.rapport.app\" # Cache-Verzeichnis-Grösse du -sh \"~/Library/Caches/com.rapport.app\" → Bei Issue mit anhängen.","diese-version-überspringen-rückgängig-machen#\u0026ldquo;Diese Version überspringen\u0026rdquo; rückgängig machen":"In Einstellungen → Updates → Übersprungene Versionen zurücksetzen. Beim nächsten Start wird die Version wieder angeboten.","localstorage-voll#localStorage voll":"Symptom: Rapport schreibt Fehler-Toast “Speicher voll” beim Sichern.\nUrsache: macOS WebView limitiert localStorage auf ~10 MB pro Origin.\nLösung:\nSehr grosse Logos durch kleinere ersetzen (Bürodaten → Logo) Belege (Spesen) selektiv löschen oder als externe Datei archivieren Auf Web-Modus wechseln (Postgres ohne praktisches Limit)","login-screen-zeigt-keine-server-url#Login-Screen zeigt keine Server-URL":"Ursache: .env.production enthielt nicht den richtigen VITE_SUPABASE_URL zur Build-Zeit.\nLösung: .env.production prüfen, dann npm run build neu, Container restart.","nach-einem-app-update-fehlen-einträge#Nach einem App-Update fehlen Einträge":"Ursache: mögliche fehlgeschlagene Migration.\nSofortmassnahme:\nRapport beenden (Cmd+Q, nicht nur Fenster zu) Aktuelles Datenverzeichnis sichern: cp -R \"~/Library/Application Support/com.rapport.app\" \\ \"~/Documents/Rapport-Notfall-$(date +%Y%m%d-%H%M)\" Issue erstellen mit: Version vor dem Update (falls bekannt) Version nach dem Update Was fehlt Optional: gesicherter Datenordner (via Pastebin oder verschlüsselt zugesandt)","pdf--qr-schein#PDF / QR-Schein":"","pdf-export-ist-leer--weisses-blatt#PDF-Export ist leer / weisses Blatt":"Ursache: Print-View hat keine Daten (möglicherweise Race-Condition beim Laden).\nLösung: Rechnung schliessen, erneut öffnen, dann PDF.","pdf-schrift-sieht-falsch-aus#PDF-Schrift sieht falsch aus":"Ursache: Web-Schrift nicht geladen, Fallback greift.\nLösung: Vor dem Drucken warten, bis das Vorschau-Bild komplett geladen ist (35 Sek).","qr-schein-hat-falsche-daten#QR-Schein hat falsche Daten":"Diagnose-Checkliste:\nIBAN korrekt? (CH, 21 Zeichen, keine Leerzeichen) Empfänger-Adresse vollständig? (PLZ und Ort beide gefüllt) Schuldner-Adresse vollständig? Betrag \u003e 0? Referenz nicht zu lang? (max 27 Zeichen) QR-Bibliothek: swissqrbill — bei merkwürdigen Fehlern dort nachschauen.","rapport-ist-beschädigt-beim-ersten-start#\u0026ldquo;Rapport ist beschädigt\u0026rdquo; beim ersten Start":"Ursache: macOS Gatekeeper blockt unsignierte/nicht-notarisierte Apps.\nLösung: siehe Installation § 3. Kurz:\nxattr -d com.apple.quarantine /Applications/Rapport.app","realtime-updates-kommen-nicht-an#Realtime-Updates kommen nicht an":"Ursache: Websocket-Support fehlt im Reverse Proxy.\nLösung: In Nginx Proxy Manager für api.* Websocket Support aktivieren.\nSiehe Web-Modus § Troubleshooting.","system-tray#System-Tray":"","tray-icon-erscheint-nicht#Tray-Icon erscheint nicht":"Plattform-Hinweis: Tray-Icons unter macOS sind bei extrem voller Menüleiste oder unter “Bartender”/“Hidden Bar” eventuell unsichtbar.\nDiagnose:\nps aux | grep -i rapport → wenn Prozess läuft, aber kein Icon: in den Tray-Manager-Apps prüfen.\nKonfiguration: Einstellungen → System-Tray → Tray-Icon ausblenden (aus → Icon erzwingen).","tray-menü-reagiert-nicht--hängt#Tray-Menü reagiert nicht / hängt":"Lösung: App via Activity Monitor hart beenden und neu starten. Daten gehen nicht verloren (alle Schreibungen sind synchron in localStorage).","update-lädt-lässt-sich-aber-nicht-installieren#Update lädt, lässt sich aber nicht installieren":"Ursache: Signaturprüfung scheitert (Public-Key in App ≠ Signatur in latest.json).\nLösung: Manuelles Update — DMG direkt von Releases laden und installieren. Daten bleiben erhalten.","updates#Updates":"","web-modus#Web-Modus":"","wenn-nichts-hilft#Wenn nichts hilft":"Neues Issue auf Gitea mit:\nWas du gemacht hast Was passiert ist Was du erwartet hättest Screenshots (auch von DevTools-Konsole falls möglich) Rapport-Version und macOS-Version"},"title":"Troubleshooting"},"/docs/web-modus/":{"data":{"":"Hinweis: Der frühere Supabase-basierte Web-Modus wurde durch Rapport Server abgelöst — den vollständigen Selfhost-Stack mit eigenem Postgres, Auth, Realtime und Storage. Keine externe Cloud-Abhängigkeit mehr.\nDiese Seite bleibt als Referenz erhalten, der empfohlene Weg für Multi-User-Setups ist Rapport Server.","architektur-kurzfassung#Architektur (Kurzfassung)":"┌────────────┐ HTTPS ┌──────────────┐ SQL ┌────────────┐ │ Browser │ ──────────────│ nginx │ ─────────────│ Postgres │ │ / Desktop │ │ (Frontend) │ │ + GoTrue │ └────────────┘ └──────────────┘ │ + REST │ │ + Realtime │ │ + Storage │ └────────────┘ Frontend: dieselbe React-App, aber Vite-Build statt Tauri (npm run build) Backend: Postgres-Stack (Rapport Server) Auth: E-Mail / Passwort über GoTrue Storage: Belege, Logos in Object-Storage","migration-desktop--cloud#Migration Desktop → Cloud":"Wer mit der Desktop-App startet und später auf den Web-Modus wechseln möchte:\nAktuell: manueller Export aus Rapport (CSV/PDF) und manuelles Wiederanlegen im neuen Setup Geplant: “localStorage → Postgres”-Import-Knopf direkt in der App Status: Issue auf Gitea .","setup#Setup":"Alle Setup-Schritte (Repo klonen, .env erstellen, Migrations syncen, Docker-Compose starten, Reverse-Proxy konfigurieren) sind in Rapport Server dokumentiert.","troubleshooting#Troubleshooting":"Siehe Rapport Server § Troubleshooting oder allgemeine Troubleshooting-Seite.","wann-brauchst-du-das#Wann brauchst du das?":"Anwendungsfall Empfehlung Solo-Büro, ein Mac Desktop-App — siehe Installation 25 Personen, gleicher Standort Rapport Server auf einem Mac Mini im LAN Verteiltes Team / Home-Office Rapport Server mit SSL + Reverse Proxy Hosted Backend (eigener VPS) Rapport Server auf Linux-VPS"},"title":"Web-Modus"},"/downloads/":{"data":{"":"Aktuelle Builds von Rapport. Quellcode und ältere Versionen auf Gitea .\nRapport besteht aus zwei Komponenten:\nKomponente Für wen Aktuelle Version Desktop-App Solo-Büro, lokale Datenhaltung 0.8.2 Rapport Server Team / Multi-User / Selfhost 0.1.0","auto-update#Auto-Update":"Seit 0.7.0 prüft die Desktop-App beim Start automatisch auf neue Versionen — siehe Auto-Updater. Für Rapport Server: git pull \u0026\u0026 docker compose pull \u0026\u0026 docker compose up -d.","desktop-app--pre-release-082#Desktop-App — Pre-Release 0.8.2":"Aktuelle Version\nNeuerungen — siehe Changelog für Details.","docker-linux--vps--headless#Docker (Linux / VPS / Headless)":"Für Linux-Server, NAS oder VPS — der reine Docker-Compose-Stack ohne GUI.\ngit clone https://git.kgva.ch/karim/rapport-server.git cd rapport-server git checkout 0.1.0 cp .env.example .env # .env editieren (POSTGRES_PASSWORD, JWT_SECRET, SITE_URL) docker compose up -d Vollständige Anleitung mit .env-Variablen, Reverse-Proxy und Backup → Server-Seite.\nContainer-Images werden von Docker Hub / Gitea-Registry gezogen — docker compose pull aktualisiert auf die neuesten Tags.","linux--windows#Linux \u0026amp; Windows":"Geplant. Rapport basiert auf Tauri 2 — eine Portierung ist möglich, sobald der Bedarf besteht. Issue erstellen , wenn du eine Plattform brauchst.","macos#macOS":"Architektur Download Apple Silicon (M1M4) RAPPORT_0.8.2_aarch64.dmg Intel (x86_64) auf Anfrage Erstinstallation: Systemeinstellungen → Datenschutz \u0026 Sicherheit öffnen und Rapport zulassen. Die Builds sind über Tauri signiert, aber (noch) nicht Apple-notarisiert.","quellcode#Quellcode":"Desktop-App — Tauri / React:\ngit clone https://git.kgva.ch/karim/RAPPORT.git cd RAPPORT/APP npm install npm run tauri dev Voraussetzungen: Node 20+, Rust (stable), Xcode-CLI (macOS).\nRapport Server:\ngit clone https://git.kgva.ch/karim/rapport-server.git Beide Repos auf Gitea — Issues und PRs willkommen.","rapport-server--010#Rapport Server — 0.1.0":"Erstes Release\nSelfhost-Backend für Multi-User-Setups — Postgres, Auth, Realtime-Sync, Storage. Details und Setup-Anleitung auf der Server-Seite.","server-app-macos#Server-App (macOS)":"GUI zum Starten, Stoppen und Verwalten der Server-Instanz auf einem Mac (Mac Mini, Studio-Rechner). Bündelt den Docker-Compose-Stack.\nArchitektur Download Apple Silicon (M1M4) RAPPORT_SERVER_0.1.0_aarch64.dmg Intel (x86_64) auf Anfrage Voraussetzung: Colima oder Docker Desktop muss installiert sein. Die App verwaltet den Container-Stack darüber."},"title":"Downloads"},"/faq/":{"data":{"":"Häufige Fragen zu RAPPORT. Bei Bugs oder weiteren Fragen → Issue auf Gitea .","für-wen-ist-rapport-gedacht#Für wen ist Rapport gedacht?":"Für kleine Architekturbüros in der Schweiz. Die Strukturen folgen der SIA 102 (Phasen, Honorar). Rapport wurde für den internen Gebrauch entwickelt und wird mit diesem Projekt öffentlich geteilt.","ist-die-software-stabil-genug-für-den-betrieb#Ist die Software stabil genug für den Betrieb?":"Noch nicht. Aktuell befindet sich Rapport in aktiver Entwicklung (Pre-Release 0.8.2). Funktionen können sich ändern, Bugs sind möglich. Regelmässige Backups sind empfohlen. Testen und Feedback geben ist erwünscht.","ist-rapport-kostenlos#Ist Rapport kostenlos?":"Ja, vollständig. Quellcode unter GNU AGPL-3.0-or-later. Keine versteckten Kosten, keine Telemetrie. Die Daten bleiben lokal auf deinem Computer bzw. in deiner Instanz. Du hast die komplette Kontrolle über deine Daten.","kann-ich-zum-projekt-beitragen#Kann ich zum Projekt beitragen?":"Ja. Issues und Pull Requests sind willkommen auf Gitea . Rapport ist kein Framework — konkrete Verbesserungen für den Büroalltag sind am wertvollsten:\nBug-Reports mit Reproduktionsschritten Workflow-Verbesserungen aus dem realen Büroalltag Vorlagen (Briefe, Protokolle, Lieferscheine) für andere Büros Übersetzungen / Internationalisierung","warum-open-source#Warum Open Source?":"Bürowissen sollte nicht in proprietären Tools eingesperrt sein. Studio-Management-Workflows sind in der Branche gut etabliert — ein Tool, das die Schweizer Konventionen (SIA 102, QR-Rechnung) sauber umsetzt, gehört allen.\nAGPL-3.0 stellt sicher, dass Verbesserungen wieder ins Projekt fliessen.","was-ist-mit-dem-qr-einzahlungsschein#Was ist mit dem QR-Einzahlungsschein?":"Rapport erzeugt Schweizer QR-Rechnungen nach Norm — direkt eingebettet in das PDF der Rechnung. IBAN, Bürodaten und Empfänger werden aus den Einstellungen bzw. den Kundendaten gezogen. Akonto-, Teil- und Schlussrechnungen werden unterstützt.","welche-systeme-werden-unterstützt#Welche Systeme werden unterstützt?":"Aktuell nur macOS (Intel \u0026 Apple Silicon). Rapport basiert auf Tauri — eine Portierung auf Linux und Windows ist möglich, sobald der Bedarf seitens Community besteht.","wie-erhalte-ich-hilfe-bei-einem-problem#Wie erhalte ich Hilfe bei einem Problem?":"Ein Issue auf Gitea ist der beste Weg. Bitte beschreibe, was du gemacht hast und was passiert ist. Screenshots helfen. Die Rapport-Version (links unten in der App) bitte angeben.\nKanal Verwendung Gitea Issues Bugs, Feature-Wünsche, allgemeine Fragen gabrielevarano.ch Entwickler-Kontakt","wie-funktioniert-die-zeiterfassung#Wie funktioniert die Zeiterfassung?":"Tages- und Wochenraster mit Drag \u0026 Drop. Jeder Eintrag wird einem Projekt zugewiesen. Auswertungen pro Mitarbeiter und Projekt sind unter Zeit abrufbar. Ferienverwaltung mit Prorata und Jahresabschluss mit Überstundenausgleich.","wo-werden-die-daten-gespeichert#Wo werden die Daten gespeichert?":"Rapport unterstützt zwei Modi, beide selbst-gehostet:\nDesktop-App (Single-User) — alle Daten liegen lokal auf deinem Mac (localStorage im Applikationsordner). Kein Server nötig, kein Cloud-Account, keine Telemetrie. Server-Modus (Multi-User) — Daten in einer eigenen PostgreSQL-Datenbank über Rapport Server. Mehrere Personen, Realtime-Sync, eigene Domain. Wechsel direkt im Login-Bildschirm der App. In beiden Fällen bleibt die Kontrolle über die Daten bei dir."},"title":"FAQ"},"/features/":{"data":{"":"Die Bausteine von RAPPORT — Studio-Management für Schweizer Architekturbüros.","module#Module":"ZeiterfassungTages- \u0026 Wochenraster mit Drag \u0026 Drop. Rechnungen \u0026 OffertenQR-Einzahlungsscheine, SIA-Phasen, Akonto. Projekt- \u0026 KundenverwaltungSIA 102, Budget, Phasen, Beteiligte. MitarbeiterFerien, Absenzen, Lohnabrechnung. Spesen \u0026 BürobudgetBelegupload, Jahresbudget, Internes. Protokolle \u0026 LieferscheineSitzungsprotokolle, Briefe, Lieferscheine. Auto-UpdaterSignierte Updates via Tauri. System-TrayHide-on-Close, Quick-Open."},"title":"Features"},"/features/auto-updater/":{"data":{"":"Neu in 0.7.0\nRapport prüft beim Start automatisch auf neue Versionen und installiert Updates signiert über Tauri. Einzelne Versionen können übersprungen werden.","funktionsweise#Funktionsweise":"Beim App-Start:\nAbfrage gegen https://git.kgva.ch/karim/RAPPORT/releases/latest.json Versionsvergleich mit lokaler version im Tauri-Bundle Bei neuer Version → Update-Dialog Bei Bestätigung → Download + Signaturprüfung + Installation + Neustart","latest-endpoint#Latest-Endpoint":"{ \"version\": \"0.8.2\", \"notes\": \"Rapport 0.8.2\", \"pub_date\": \"2026-05-24T00:00:00Z\", \"platforms\": { \"darwin-aarch64\": { \"signature\": \"…\", \"url\": \"https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.2/RAPPORT%20PRE-RELEASE.app.tar.gz\" } } }","optionen#Optionen":"Update installieren — Download \u0026 Neustart Diese Version überspringen — überspringt nur diese eine Version Später erinnern — beim nächsten Start erneut fragen Updates können in den Einstellungen komplett deaktiviert werden.","sicherheit#Sicherheit":"Updates werden mit dem Tauri-Updater-Schlüssel signiert Manipulierte Downloads werden abgelehnt Quellcode und Build sind reproduzierbar (Gitea CI, geplant)"},"title":"Auto-Updater"},"/features/mitarbeiter/":{"data":{"":"In Arbeit\nFerienverwaltung, interne Stunden / Absenzen und Lohnabrechnung. Jahresabschluss mit Überstundenausgleich.","absenzen#Absenzen":"Krankheit, Militär, Mutterschaft, unbezahlter Urlaub — getrennt erfasst, mit Auswertung pro Mitarbeiter.","ferienverwaltung#Ferienverwaltung":"Prorata-Berechnung bei Eintritt unter Jahr Ferien-Saldo in Tagen (live) Halbtage unterstützt Übertrag ins Folgejahr oder Auszahlung","jahresabschluss#Jahresabschluss":"Ferien-Restguthaben übertragen oder auszahlen Überstunden ausgleichen oder vergüten Lohnausweis vorbereiten (Export)","lohnabrechnung#Lohnabrechnung":"Monatliche Abrechnung mit:\nGrundlohn (basierend auf Pensum) Überstunden-Vergütung Spesen-Erstattung Sozialabzüge (AHV, ALV, Pensionskasse) PDF-Export pro Mitarbeiter.","stammdaten#Stammdaten":"Pro Mitarbeiter:\nName, Eintrittsdatum, Pensum (%) Stundensatz (intern, für Rechnungen) Ferienanspruch (Tage / Jahr) Lohn (monatlich, brutto)","verwandte-module#Verwandte Module":"Zeiterfassung — Pensum-Soll vs. Stunden-Ist Spesen — Spesen-Erstattung in der Lohnabrechnung"},"title":"Mitarbeiter"},"/features/projekte/":{"data":{"":"In Arbeit\nProjekte nach SIA 102 mit Budget, Phasen und Beteiligten. Erstellung aus einer Offerte mit Verknüpfung zu Zeiterfassung und Rechnungen.","auswertung#Auswertung":"Pro Projekt:\nGeleistete Stunden vs. Budget Honorar-Saldo (verrechnet / Akonto / offen) Phasen-Fortschritt","kundendatenbank#Kundendatenbank":"Adresse, Ansprechperson, Telefon, E-Mail Honorartyp (Stundensatz / SIA / Pauschal) Verknüpfung zu allen Projekten und Rechnungen des Kunden","projektstruktur#Projektstruktur":"Jedes Projekt besitzt:\nStammdaten — Nummer, Bezeichnung, Standort, Bauschätzwert Kunde — verknüpft mit Kundendatenbank Beteiligte — Bauleitung, Fachplaner, Behörden Phasen — SIA 102 (Vorprojekt, Bauprojekt, Ausschreibung, …) Budget — Gesamthonorar, pro Phase aufgeteilt","sia-102#SIA 102":"Standard-Phasenverteilung wird vorgeschlagen, kann pro Projekt überschrieben werden.\nPhase Anteil (Standard) 31 — Vorprojekt 9 % 32 — Bauprojekt 21 % 33 — Bewilligung 3 % 41 — Ausschreibung 18 % 51 — Ausführung 38 % 52 — Inbetriebnahme 6 % 53 — Abschluss 5 %","verwandte-module#Verwandte Module":"Rechnungen — Offerte → Projekt Zeiterfassung — Stunden-Auswertung pro Phase"},"title":"Projekte"},"/features/protokolle/":{"data":{"":"In Arbeit\nEinfache Erstellung von Sitzungsprotokollen mit Beschlüssen und Aufgaben. Briefe und Lieferscheine im gleichen Erscheinungsbild.","briefe#Briefe":"Brief-Editor mit:\nEmpfänger aus Kundendatenbank Bezugszeile, Anrede, Text, Grussformel Briefbogen-Vorlage mit Logo PDF-Export","lieferscheine#Lieferscheine":"Pro Lieferung:\nEmpfänger, Datum, Bezug Positionen (Plan-Nummer, Bezeichnung, Anzahl, Massstab) Unterschriftenfeld Konsistentes Erscheinungsbild über alle Dokumenttypen — eine Briefbogen-Vorlage, mehrere Verwendungen.","sitzungsprotokolle#Sitzungsprotokolle":"Pro Sitzung:\nDatum, Ort, Teilnehmer (aus Beteiligten-Liste) Traktanden als nummerierte Liste Pro Traktandum: Beschluss, Aufgabe, Verantwortlich, Frist Anhänge PDF-Export mit Bürobriefbogen.","verwandte-module#Verwandte Module":"Projekte — Beteiligte als Empfänger"},"title":"Protokolle"},"/features/rechnungen/":{"data":{"":"In Arbeit\nQR-Einzahlungsscheine, SIA-Phasen, Akonto-, Teil- und Schlussrechnungen. Offerten sind in Projekte und Rechnungen konvertierbar. PDF-Export.","honorarmodelle#Honorarmodelle":"Modell Berechnung Verwendung Stundensatz Aus Zeiterfassung × Mitarbeiter-Stundensatz Kleinaufträge, Beratung SIA-Phasen Bauschätzwert × Honorarsatz × Phasenanteil Reguläre Architektur-Aufträge Pauschal Fester Betrag Auf Wunsch des Kunden","pdf-export#PDF-Export":"Druckfertige Rechnung inkl. QR-Schein. Layout aus dem Büro-Briefbogen (mit Logo). Mehrsprachig DE/FR/IT (geplant).","qr-einzahlungsschein#QR-Einzahlungsschein":"Schweizer QR-Rechnung nach Norm — direkt eingebettet in die PDF.\nAusgelesen aus:\nBürodaten — IBAN, Empfänger-Adresse Kundendaten — Schuldner-Adresse Rechnungs-Daten — Betrag, Referenz, Zusatzinformation","verwandte-module#Verwandte Module":"Projekte — Honorarstruktur stammt aus dem Projekt Zeiterfassung — Stundensatz-Rechnungen","workflow#Workflow":"Offerte erstellen — auf Basis SIA 102 oder pauschal Kunde nimmt an → konvertieren in Projekt + Rechnung Akonto-Rechnungen während der Projektlaufzeit Schlussrechnung mit Differenz zum bisher Akonto-bezahlten"},"title":"Rechnungen"},"/features/spesen/":{"data":{"":"In Arbeit\nSpesenerfassung mit Belegupload. Jahresbudget mit Einnahmen und Ausgaben. Internes Rechnungswesen.","auswertung#Auswertung":"Einnahmen pro Kunde / Projekt Ausgaben pro Kategorie / Mitarbeiter Erfolgsrechnung pro Geschäftsjahr (vereinfacht)","jahresbudget#Jahresbudget":"Übersicht über:\nEinnahmen — Rechnungsbeträge, sortiert nach Eingang Ausgaben — Spesen, Bürokosten, Löhne, Sozialabzüge Saldo pro Monat / Quartal / Jahr","spesenerfassung#Spesenerfassung":"Pro Mitarbeiter:\nDatum, Betrag, Kategorie Beleg-Upload (PDF, JPG, PNG) Projekt-Zuordnung (optional) Status (offen / erstattet) Kategorien: Reise, Verpflegung, Material, Telefon, Sonstiges.","verwandte-module#Verwandte Module":"Mitarbeiter — Spesen-Erstattung in der Lohnabrechnung Rechnungen — Einnahmen-Quelle"},"title":"Spesen"},"/features/system-tray/":{"data":{"":"Neu in 0.7.0\nSchnellzugriff über die Menüleiste mit Hide-on-Close. Beim Schliessen läuft Rapport im Hintergrund weiter — Cmd+Q beendet die App vollständig.","konfiguration#Konfiguration":"In den Einstellungen:\nBeim Systemstart starten (Login-Item) — Standard: aus Beim Schliessen beenden statt ins Tray — Standard: aus Tray-Icon ausblenden — App läuft, aber kein Menüleisten-Icon","tray-menü#Tray-Menü":"Rapport zeigen — Fenster nach vorne Neue Zeiterfassung — direkt im Zeit-Modul Neue Rechnung — direkt im Rechnungs-Modul Letzte Projekte — Quick-Open der letzten 5 Projekte Einstellungen Rapport beenden","verhalten#Verhalten":"Aktion Verhalten Fenster schliessen (⌘W oder rotes X) App läuft im Tray weiter Cmd+Q App wird vollständig beendet Klick auf Tray-Icon Fenster nach vorne, oder zeigen Rechtsklick auf Tray-Icon Menü mit Schnellzugriffen","verwandte-module#Verwandte Module":"Auto-Updater — prüft Updates im Hintergrund"},"title":"System-Tray"},"/features/zeiterfassung/":{"data":{"":"In Arbeit\nTages- und Wochenraster mit Drag \u0026 Drop. Auswertungen pro Mitarbeiter und Projekt. Ferienverwaltung mit Prorata und Jahresabschluss.","auswertungen#Auswertungen":"Pro Mitarbeiter und pro Projekt:\nGeleistete Stunden vs. Soll-Pensum Ferienanspruch / -saldo (mit Prorata bei Eintritt unter Jahr) Überstunden-Saldo Stundenaufschlüsselung nach SIA-Phase pro Projekt","eingabe#Eingabe":"Wochenraster mit den 5 (oder 7) Arbeitstagen Halbstunden-Slots von 06:00 bis 22:00 Klick oder Drag über mehrere Slots Jeder Eintrag wird einem Projekt zugewiesen (Pflichtfeld) Mehrfacheinträge pro Slot möglich (z. B. parallele Telefonate)","jahresabschluss#Jahresabschluss":"Am Jahresende:\nFerien-Restguthaben übertragen oder auszahlen Überstunden ausgleichen oder vergüten Neues Jahr automatisch initialisieren","konzept#Konzept":"Die Zeiterfassung ist das Kernmodul von RAPPORT — alle anderen Module (Rechnungen, Auswertungen, Lohnabrechnung) greifen auf die hier erfassten Stunden zu.","verwandte-module#Verwandte Module":"Rechnungen — Stundensatz-Rechnungen ziehen direkt aus der Zeiterfassung Projekte — Stunden-Auswertung pro SIA-Phase Mitarbeiter — Pensum, Ferienanspruch"},"title":"Zeiterfassung"},"/glossary":{"data":{},"title":"Glossary"},"/hosting/":{"data":{"":"Gehostet in der Schweiz · Ohne eigenen Server RAPPORT Hosting Ihre eigene Rapport-Instanz — in Minuten startklar. Studio-Management für Architekturbüros, gehostet, gewartet und gesichert. Sie arbeiten, wir kümmern uns um den Rest. Jetzt starten Preise ansehen ↗ Schweizer Hosting Tägliche Backups Jederzeit kündbar Keine Installation SO EINFACH\nRegistrieren, Abo wählen, loslegen Keine Server-Administration, keine Updates, keine Sorgen um Backups. Sie bekommen eine fertige Rapport-Instanz mit eigener Adresse — wir betreiben sie für Sie in der Schweiz.\nIn Minuten startklar Konto erstellen, Abo wählen, fertig. Ihre Instanz wird automatisch eingerichtet — keine Installation, keine Technik.\nSchweizer Hosting Ihre Daten bleiben in der Schweiz. Tägliche Backups, sichere Infrastruktur — ohne dass Sie sich darum kümmern müssen.\nVoller Funktionsumfang Zeiterfassung, Rechnungen mit QR-Einzahlungsschein, Offerten, Projekte nach SIA 102, Mitarbeiter — alles in einer App.\nImmer aktuell Updates und Wartung übernehmen wir. Sie arbeiten immer mit der neuesten Version, ganz ohne Aufwand.\nFaire Preise Transparente Abos ab CHF 19/Monat. Monatlich kündbar, keine versteckten Kosten, keine Einrichtungsgebühr.\nKein Lock-in Rapport ist Open Source (AGPL). Hosting nimmt Ihnen nur die Technik ab — Sie können jederzeit zum Selbstbetrieb wechseln.\nKostenlos registrieren"},"title":"Hosting"},"/impressum/":{"data":{"betreiber#Betreiber":"Diese Website und der Dienst «RAPPORT Hosting» werden betrieben von:\nKarim Gabriele Varano [STRASSE UND HAUSNUMMER] [PLZ ORT] Schweiz\nE-Mail: [KONTAKT-EMAIL] Telefon: [TELEFON, optional]\nEinzelunternehmen nach schweizerischem Recht. [UID/MwSt-Nr., falls vorhanden — z.B. CHE-123.456.789]","haftungsausschluss#Haftungsausschluss":"Die Inhalte dieser Website wurden mit grösstmöglicher Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte wird keine Gewähr übernommen. Die Nutzung des Dienstes erfolgt gemäss den AGB.","impressum#Impressum":"Impressum","urheberrecht#Urheberrecht":"Die Rapport-Software ist quelloffen unter der AGPL-3.0 (siehe Lizenz). Die Hosting-Plattform sowie Texte, Grafiken und Gestaltung dieser Website sind, soweit nicht anders gekennzeichnet, urheberrechtlich geschützt.","verantwortlich-für-den-inhalt#Verantwortlich für den Inhalt":"Karim Gabriele Varano, Adresse wie oben."},"title":"Impressum"},"/lizenz/":{"data":{"":"Lizenz von RAPPORT, Zugehörigkeit zu OpenBureau und Attribution der verwendeten Open-Source-Software.","desktop-wrapper#Desktop-Wrapper":"Software Verwendung Lizenz Tauri 2 Cross-Platform Desktop-Wrapper MIT / Apache-2.0 WebKit WebView-Engine (macOS) LGPL-2.1 / BSD","diese-website#Diese Website":"Software Verwendung Lizenz Hugo Static-Site-Generator Apache-2.0 Hextra Hugo-Theme (von Xin) MIT Inter UI-Schrift (Rasmus Andersson) SIL OFL 1.1 Playfair Display Headings SIL OFL 1.1 Alle Logos und Marken-Namen gehören ihren jeweiligen Eigentümern.","frontend#Frontend":"Software Verwendung Lizenz React 19 UI-Bibliothek MIT Vite Build-Tool, Dev-Server MIT swissqrbill QR-Einzahlungsscheine MIT","kontakt#Kontakt":"Fragen zur Lizenz, kommerzieller Einsatz, Spezialfälle: Issue auf Gitea oder via gabrielevarano.ch .","lizenz#Lizenz":"Lizenziert unter GNU Affero General Public License v3.0 oder höher (AGPL-3.0-or-later ).\nDies bedeutet im Kern:\nFreie Nutzung für jeden Zweck (privat, kommerziell, behördlich) Freier Zugang zum Quellcode Freie Modifikation und Weitergabe — unter derselben Lizenz Netzwerk-Nutzung gilt als Weitergabe — wer eine modifizierte Version als Service anbietet, muss den Quellcode offenlegen Eigene Builds, eigene Forks, eigene Anpassungen — alles erlaubt, solange Modifikationen wieder unter AGPL-3.0 veröffentlicht werden.","lizenz-volltexte#Lizenz-Volltexte":"Die vollständigen Lizenztexte:\nAGPL-3.0 — RAPPORT MIT — React, Vite, Tauri, Hextra, swissqrbill Apache-2.0 — Tauri, Hugo, Supabase SIL OFL 1.1 — Inter, Playfair Display","mitwirkende#Mitwirkende":"RAPPORT wird derzeit als Ein-Personen-Projekt von Karim Gabriele Varano entwickelt. Beiträge — Code, Issues, Übersetzungen, Vorlagen — sind willkommen.\nWer beitragen möchte → Gitea Issues .","openbureau#OpenBureau":"RAPPORT ist Teil der OpenBureau-Initiative — einer Sammlung freier Software-Werkzeuge für den Architektur-Büro-Alltag.\nDie Idee: Bürowissen — Workflows, Konventionen, Vorlagen — sollte nicht in proprietären Tools eingesperrt sein. OpenBureau-Tools setzen die in der Branche etablierten Konventionen (SIA-Normen, QR-Rechnung, Plan-Verwaltung) sauber um und stehen unter freien Lizenzen zur Verfügung.\nTool Zweck Status RAPPORT Studio-Management Desktop-App (Zeit, Rechnungen, Projekte) Pre-Release Rapport Server Selfhost-Stack (Postgres + Auth + Realtime + Storage) Pre-Release DOSSIER Rhino-8-Plugin für Plan- und Dokumentationsausgabe Pre-Release Mehr unter gabrielevarano.ch .","rapport#RAPPORT":"RAPPORT — Studio Management Software für Architekturbüros.\nQuellcode: git.kgva.ch/karim/RAPPORT Autor: Karim Gabriele Varano","rapport-server-selfhost-stack#Rapport Server (Selfhost-Stack)":"Software Verwendung Lizenz PostgreSQL Datenbank PostgreSQL-Lizenz GoTrue Authentication-Service MIT PostgREST REST-API über Postgres-Schema MIT Realtime WebSocket-Sync Apache-2.0 Storage Object-Storage für Belege \u0026 Logos Apache-2.0 Kong API-Gateway Apache-2.0 nginx Frontend-Webserver BSD-2-Clause Docker Compose Orchestrierung Apache-2.0","verwendete-open-source-software#Verwendete Open-Source-Software":"RAPPORT baut auf freier Software auf. Diese Liste nennt die wichtigsten Komponenten und ihre jeweiligen Lizenzen."},"title":"Lizenz"},"/server/":{"data":{"":"Self-Hosting\nRapport Server — der vollständige Selfhost-Stack für Rapport. Eigene Daten, eigene Domain, eigener Server. Komplett Open-Source, Docker-Compose, AGPL-3.0.","1--repo-klonen#1 · Repo klonen":"git clone https://git.kgva.ch/karim/rapport-server.git cd rapport-server","2--env-erstellen#2 · \u003ccode\u003e.env\u003c/code\u003e erstellen":"cp .env.example .env In .env müssen mindestens diese Werte ersetzt werden:\nVariable Was POSTGRES_PASSWORD DB-Passwort (≥ 32 Zeichen, zufällig) JWT_SECRET JWT-Signatur (≥ 32 Zeichen, zufällig) ANON_KEY / SERVICE_ROLE_KEY aus JWT-Secret abgeleitet SITE_URL Public-URL der Instanz (z. B. https://app.rapport.studio.ch) Zufallswerte generieren:\nopenssl rand -hex 32 # für POSTGRES_PASSWORD und JWT_SECRET node scripts/generate-keys.mjs # ANON_KEY + SERVICE_ROLE_KEY aus JWT_SECRET","3--migrations-holen#3 · Migrations holen":"Die SQL-Migrations stammen aus dem App-Repo. Einmal initial holen:\n./scripts/sync-migrations.sh Bei späteren Rapport-Updates erneut ausführen, dann docker compose down \u0026\u0026 docker compose up -d.","4--stack-starten#4 · Stack starten":"docker compose up -d Erststart dauert ~1 Minute (Postgres initialisiert sich, Migrations laufen, Container starten).","5--health-check#5 · Health-Check":"docker compose ps Alle Container sollten healthy zeigen. Frontend ist dann erreichbar unter http://localhost:8080.","architektur#Architektur":"Rapport Server bündelt sechs Open-Source-Komponenten zu einem stimmigen Stack:\n┌──────────────────────────────────────────────────────┐ │ Browser / Desktop-App │ └──────────────┬───────────────────────┬───────────────┘ │ │ ▼ ▼ ┌──────────┐ ┌──────────┐ │ nginx │ │ Kong │ ← API-Gateway │ (app) │ │ │ └──────────┘ └──────────┘ │ ┌───────────────────┼─────────────────────┐ ▼ ▼ ▼ ┌────────┐ ┌──────────┐ ┌─────────┐ │ GoTrue │ │PostgREST │ │ Realtime│ │ (Auth) │ │ (API) │ │ (WS) │ └────────┘ └──────────┘ └─────────┘ │ │ │ └───────────────────┼─────────────────────┘ ▼ ┌─────────────────┐ │ PostgreSQL │ └─────────────────┘ │ ▼ ┌─────────────────┐ │ Storage │ ← Belege, Logos └─────────────────┘ Komponente Funktion PostgreSQL Datenbank — alle Rapport-Daten GoTrue Authentication — Email/Passwort, JWT-Tokens PostgREST REST-API direkt aus dem Postgres-Schema Realtime WebSocket-Sync für Live-Updates Storage Object-Storage für Belege \u0026 Logos Kong API-Gateway, routet alle Calls app (nginx) Liefert das Rapport-Frontend (React-Build) Alles in einem Docker-Compose. Keine Cloud-Abhängigkeit, keine Telemetrie.","backup#Backup":"","bezug-rapport--rapport-server#Bezug Rapport ↔ Rapport Server":"Komponente Wo Lizenz Rapport Desktop-App git.kgva.ch/karim/RAPPORT AGPL-3.0 Rapport Server git.kgva.ch/karim/rapport-server AGPL-3.0 Die Desktop-App kann wahlweise im Lokal-Modus (JSON, kein Server nötig) oder im Cloud-Modus (gegen Rapport Server) betrieben werden. Wechsel erfolgt im Login-Bildschirm der App.","brauche-ich-supabase-cloud#Brauche ich Supabase Cloud?":"Nein. Rapport Server ist die Selfhost-Variante derselben Komponenten (Postgres + GoTrue + PostgREST + Realtime + Storage), aber komplett auf eigener Infrastruktur. Kein Supabase-Account, keine externe Abhängigkeit.","häufige-fragen#Häufige Fragen":"","kann-ich-von-der-desktop-app-auf-rapport-server-migrieren#Kann ich von der Desktop-App auf Rapport Server migrieren?":"Im Login der Desktop-App auf Cloud wechseln, Server-URL eingeben, Account erstellen, Daten manuell wieder anlegen (Bürodaten, Mitarbeiter, Kunden). Ein direkter localStorage → Postgres-Import ist geplant .","postgres-dump#Postgres-Dump":"docker compose exec -T db pg_dumpall -U postgres \u003e backup-$(date +%Y%m%d).sql Empfohlen: per cron täglich + auf externe Disk / S3 / Backblaze sichern.","quellcode#Quellcode":"git.kgva.ch/karim/rapport-server — Issues, Pull Requests und Forks willkommen.","restore#Restore":"docker compose down docker volume rm rapport-server_postgres-data docker compose up -d db sleep 10 cat backup-YYYYMMDD.sql | docker compose exec -T db psql -U postgres docker compose up -d","reverse-proxy--https#Reverse-Proxy + HTTPS":"Für Production-Setups mit eigener Domain — Caddy ist die einfachste Variante (config-as-code, Lets-Encrypt automatisch):\napp.rapport.studio.ch { reverse_proxy localhost:8080 } api.rapport.studio.ch { reverse_proxy localhost:8000 } In .env dann:\nSITE_URL=https://app.rapport.studio.ch API_EXTERNAL_URL=https://api.rapport.studio.ch Alternativ über Nginx Proxy Manager mit Web-UI — siehe Troubleshooting.","setup-in-5-schritten#Setup in 5 Schritten":"","storage-belege-logos#Storage (Belege, Logos)":"docker compose exec storage tar -czf - /var/lib/storage \u003e storage-$(date +%Y%m%d).tar.gz","updates#Updates":"git pull ./scripts/sync-migrations.sh # falls neue SQL-Migrationen docker compose pull # neueste Container-Versionen docker compose up -d # neu starten Daten bleiben erhalten — das Volume postgres-data wird nicht angetastet.","voraussetzungen#Voraussetzungen":"OS Container-Runtime Linux (Ubuntu 22.04+, Debian 12+, …) Docker Engine + Compose v2 macOS (Mac Mini etc.) Colima + Docker CLI — voll OSS Auf macOS funktionieren auch OrbStack oder Docker Desktop, beide sind aber proprietär. Colima ist die OSS-Alternative und für Selfhost vollkommen ausreichend.\nPlus: ein DNS-Name für TLS (z. B. rapport.studio.ch), und optional ein Reverse-Proxy wie Nginx Proxy Manager oder Caddy .","wann-brauchst-du-rapport-server#Wann brauchst du Rapport Server?":"Szenario Lösung Ein Mensch, ein Mac Desktop-App reicht — Installation Mehrere Personen im Studio Rapport Server auf einem Mac Mini oder Linux-Server Verteiltes Team, Home-Office, Mobile-Zugriff Rapport Server mit Reverse-Proxy + SSL Cloud-Hosting bei einem Anbieter Rapport Server auf VPS/Hetzner/etc. Die Desktop-App speichert lokal als JSON. Rapport Server bringt Postgres + Multi-User + Realtime-Sync — für alle, die zu zweit oder im Team arbeiten.","was-kostet-das#Was kostet das?":"Nichts — Rapport Server ist Open-Source (AGPL-3.0). Du brauchst nur einen Server (Mac Mini, NAS, VPS) und ggf. eine Domain.","wieviel-server-resourcen#Wieviel Server-Resourcen?":"Ein Mac Mini M1 (8 GB RAM) reicht problemlos für ein 5-Personen-Studio. Linux-VPS mit 2 GB RAM + 2 CPU reicht auch."},"title":"Server"}}