Internes Portal — App-Übersicht
Alle Anwendungen laufen auf eigener Infrastruktur. Personenbezogene und finanzielle Daten verlassen den eigenen Server nicht — kein SaaS, kein Drittanbieter.
14Apps + Dienste
1Login (SSO)
100%Selbst betrieben
E2EVault-Verschlüsselung
01
Budget — Haushaltsbuch
✓ Produktiv
Problem
Einnahmen, Kreditraten und Daueraufträge verlieren sich ohne Struktur — der Überblick fehlt.
→
Lösung
Buchungen nach Konto und Kategorie, Echtzeitsalden, Kredit- und Dauerauftragsverwaltung in einer Oberfläche.
→
Effekt
Jederzeit vollständiges Bild der Finanzsituation — kein Suchen in Kontoauszügen.
Funktionen
Mehrere Konten (Bank, PayPal, Bar)
Sammelbon mit Einzelpositionen
Daueraufträge mit Fälligkeitstag
Kreditverwaltung + Tilgungsplan
Pfandkasse separat erfassen
Mehrwährungsunterstützung
Technisches Prinzip — Manipulationssicherer Saldo
// Kein gespeicherter Saldo-Wert — alles zur Laufzeit:
kontostand = anfangssaldo
+ SUMME(alle Eingänge auf diesem Konto)
- SUMME(alle Ausgänge von diesem Konto)
// Umbuchung = atomares Paar: entweder beide Seiten oder keine
BEGIN TRANSACTION
buche_ausgang(quell_konto, betrag)
buche_eingang(ziel_konto, betrag)
COMMIT
Laufzeit-Saldierung
Atomare Umbuchungen
ACID-Transaktionen
Selbst betrieben
Keine Drittanbieter
02
Belege — Belegverwaltung
✓ Produktiv
Problem
Eingangsrechnungen als Papierstapel oder unstrukturierte Dateien — steuerliche Auswertung kaum möglich.
→
Lösung
Digitale Belegerfassung mit SKR03-Kontenplan, Scan-Anhang und lückenloser Nummerierung.
→
Effekt
Steuerliche Auswertung per Klick — Belege nicht mehr suchen, sondern filtern.
Funktionen
Datei-Anhang (PDF, Bild, max. 10 MB)
SKR03-Kontenplan vorbesetzt
Split-Buchungen (mehrere Kostenstellen)
Zahlungsstatus + Zahlungsmittel
Projektzuordnung zur Weiterberechnung
Zeitraumauswertung nach Konto
Technisches Prinzip — Gesicherter Datei-Download
// Datei liegt AUSSERHALB des öffentlichen Web-Verzeichnisses
ANFRAGE: /belege/download?id=42
→ Sitzung prüfen // Angemeldet?
→ Berechtigung prüfen // Gehört dieser Beleg dem Nutzer?
→ Datei aus gesichertem Pfad streamen
// Direkte URL zur Datei existiert nicht — kein Bypass möglich
GoBD-Nummerierung: B-JJJJ-00001, 00002, 00003 …
// Lücken sind detektierbar — Revisionssicherheit
Zugriffsgeschützte Dateispeicherung
GoBD-Nummerierung
SKR03
GoBD-relevant
Selbst betrieben
Keine Cloud
03
Kalender & Erinnerungen
✓ Produktiv
Problem
Termine über verschiedene Apps verstreut — Nextcloud-Sync manuell und fehleranfällig.
→
Lösung
Lokale + Nextcloud-Kalender in einer Ansicht, Aufgaben mit Priorität direkt im Kalender sichtbar.
→
Effekt
Ein Blick zeigt Termine und To-Dos — automatisch synchronisiert, kein Google, kein Apple.
Funktionen
Mehrere Kalender mit Farbkodierung
Wochen-/Monats-/Listenansicht
Aufgaben (Normal / Hoch / Dringend)
Fälligkeiten als Kalendermarkierung
Nextcloud CalDAV-Sync (bidirektional)
Technisches Prinzip — Offenes Protokoll, kein Vendor Lock-in
// Offener Standard: CalDAV (RFC 4791) + iCalendar (RFC 5545)
Lokaler Termin
→ iCalendar-Format (VEVENT)
→ HTTPS PUT → Nextcloud CalDAV-Endpunkt
→ Nextcloud synct weiter auf Smartphone, Desktop …
Eingehend vom Server:
→ HTTPS GET → iCalendar parsen → lokale DB aktualisieren
// Kompatibel mit: macOS, iOS, Android, Thunderbird, Outlook
CalDAV RFC 4791
iCalendar RFC 5545
Nextcloud
Kein Vendor Lock-in
Eigener Nextcloud-Server
DSGVO-konform betreibbar
04
Kontakte — mit Nextcloud-Sync
✓ Produktiv
Problem
Kunden- und Lieferantendaten verteilt auf Programme und Notizbücher — Rechnungsformulare manuell befüllen kostet Zeit.
→
Lösung
Zentrales Adressbuch mit automatischer Kundennummer, Volltextsuche, Tag-Filter und CardDAV-Sync.
→
Effekt
Rechnungen und Projekte befüllen Adressfelder automatisch — Kontakte überall synchron.
Funktionen
Vollständige Adress- und Firmendaten
Tag-System (Kunde, Lieferant, Privat …)
Automatische Kundennummervergabe
Volltextsuche + Tag-Filter
Nextcloud CardDAV-Sync (bidirektional)
Technisches Prinzip — Offenes Adressbuch-Protokoll
// Offener Standard: CardDAV (RFC 6352) + vCard 3.0 (RFC 6350)
Lokaler Kontakt (Name, Adresse, Tel, E-Mail …)
→ vCard serialisieren: FN, ADR, TEL, EMAIL, ORG …
→ HTTPS PUT → Nextcloud CardDAV-Endpunkt
Eingehend:
→ vCard parsen → lokale DB aktualisieren
// Kundennummer: atomar vergeben → keine Duplikate möglich
Neue Kundennummer = MAX(bestehende) + 1 ← in einer Transaktion
CardDAV RFC 6352
vCard RFC 6350
Atomare Nummernvergabe
DSGVO — Löschung jederzeit möglich
Kein Drittanbieter
05
Fahrtenbuch
✓ Produktiv
Problem
Dienstliche Fahrten für das Finanzamt lückenlos dokumentieren — Excel-Listen sind fehleranfällig und Änderungen schwer nachzuverfolgen.
→
Lösung
Digitales Fahrtenbuch mit automatischer km-Berechnung und serverseitigem 7-Tage-Sperrmechanismus.
→
Effekt
Manipulationsresistenter, druckfertiger Nachweis — TÜV und Versicherungsfristen immer im Blick.
Funktionen
Mehrere Fahrzeuge verwaltbar
Fahrtyp: privat / geschäftlich / Arbeitsweg
Einträge nach 7 Tagen gesperrt
Wartungsbuch + Tankbuch
TÜV-Warnung 60 Tage vor Ablauf
Druckfertiger Export
Technisches Prinzip — Serverseitige Sperrlogik
// Sperre ist serverseitig — UI-Manipulation ohne Wirkung
BEARBEITUNGS-ANFRAGE für Eintrag vom [Datum]:
tage_vergangen = HEUTE − EINTRAGSDATUM
WENN tage_vergangen > 7:
→ Anfrage ablehnen (403) // unabhängig vom Nutzer, unabhängig vom Browser
SONST:
→ Bearbeitung erlaubt
// TÜV-Warnung: täglich geprüft, 60 Tage Vorlauf
WENN (tüv_datum − HEUTE) < 60 Tage → Dashboard-Warnung
Serverseitige Unveränderlichkeit
Steuerliche Anforderungen
Proaktive Fristen-Überwachung
Unveränderlichkeit (steuerrechtlich)
Selbst betrieben
06
Pausenliste — Arbeitszeiterfassung
✓ Produktiv
Problem
Dienstpläne und Arbeitszeitnachweise manuell erstellen — Soll/Ist-Vergleich, Kranktage und Urlaub verlieren sich.
→
Lösung
Digitaler Wochenplan, Stempeluhr per Klick, Urlaubskontingent und automatische Überstundenberechnung.
→
Effekt
CSV-Export mit vollständigem Arbeitszeitnachweis — Saldo immer tagesaktuell.
Funktionen
KW-basierter Wochendienstplan
Kommen/Gehen per Klick stempeln
Status Krank / Urlaub / Feiertag
Urlaubskontingent + Jahresverbrauch
Über-/Fehlstunden automatisch berechnet
CSV-Export mit Dezimalstunden
Technisches Prinzip — Arbeitnehmerfreundliche Rundung + Saldo
// Rundung zugunsten des Mitarbeiters (15-Minuten-Schritte)
Zu spät gekommen → Abweichung wird AUFGERUNDET // MA bekommt weniger Minus
Zu früh gegangen → Abweichung wird ABGERUNDET // MA bekommt weniger Minus
// Einheitliche Tagessoll-Berechnung für Krank/Urlaub/Feiertag:
tagessoll = wochenstunden ÷ 6 // Mo–Sa, unabhängig vom Anlass
// Monatssaldo:
saldo = (gearbeitet + urlaub_std + krank_std + feiertag_std)
− (geplante_arbeitstage × tagessoll)
// positiv = Überstunden / negativ = Fehlstunden
Arbeitnehmerfreundliche Rundungslogik
Automatische Saldierung
DSGVO-Arbeitszeitdaten
DSGVO — Mitarbeiterdaten intern
Kein Drittanbieter
07
Schwarzes Brett — interne Pinnwand
✓ Produktiv
Problem
Abteilungsübergreifende Anfragen per E-Mail und mündlich gehen unter — Bearbeitungsstand nicht nachvollziehbar.
→
Lösung
Internes Ticket-System zwischen Abteilungen — mit Priorität, Status-Workflow und automatischer Eskalation.
→
Effekt
Keine Anfrage geht mehr unter — Bearbeitungsstand transparent, Eskalation automatisch.
Funktionen
Ticket an Abteilung senden
Prioritäten: Normal / Dringend / Kritisch
Status: Offen → In Bearbeitung → Geschlossen
Interne Notizen (nur Ziel-Abteilung sieht sie)
Lese-Bestätigungen
Automatische Eskalation nach 72 h
Technisches Prinzip — Automatische Eskalation
// Zeitgesteuerte Eskalation — läuft serverseitig
FÜR JEDES offene Ticket:
stunden_ohne_antwort = JETZT − letzter_aktivitäts_zeitstempel
WENN stunden_ohne_antwort > 72:
→ Status → "Eskaliert"
→ Priorität → mindestens "Dringend"
→ Sichtbarkeit → für Abteilungsleitung markiert
// Interne Notizen sind ein eigener Datensatz-Typ —
// sie können nicht versehentlich an externe Parteien weitergeleitet werden.
Automatische Eskalationslogik
Rollenbasierte Sichtbarkeit
Typsichere interne Notizen
Interne Kommunikation bleibt intern
Keine externen Dienste
08
Projekte — mit Vault-Verschlüsselung
✓ Produktiv
Problem
Zeiterfassung, Belege, Protokolle und Zugangsdaten für Kundenprojekte verteilt auf Tabellen, E-Mails und Passwort-Zettel.
→
Lösung
Projekt-Hub mit Zeiterfassung, P&L-Übersicht und verschlüsseltem Zugangsdaten-Tresor — Rechnung per Knopfdruck.
→
Effekt
Alles zum Projekt an einem Ort — Zugangsdaten sicher, Abrechnung ohne manuelle Übertragung.
Funktionen
Zeiterfassung + Pauschalen
Belege direkt zuordnen (Weiterberechnung)
Besprechungsprotokolle
P&L-Übersicht (Einnahmen vs. Kosten)
Rechnung aus Positionen generieren
Vault: verschlüsselte Zugangsdaten
Technisches Prinzip — Ende-zu-Ende-Verschlüsselung (Vault)
// Verschlüsselung: XSalsa20-Poly1305 (libsodium) — same as Signal/WhatsApp
VERSCHLÜSSELN:
schluessel = Argon2id(master_passwort, zufaelliges_salt)
↑ Speicher+CPU-intensiv → Brute-Force wirtschaftlich unmöglich
nonce = 24 zufällige Bytes (einmalig pro Eintrag)
geheimtext = XSalsa20-Poly1305(klartext, nonce, schluessel)
→ gespeichert: nonce ‖ geheimtext ← nur das in der DB
NACH NUTZUNG:
schluessel = sodium_memzero() ← sofort aus RAM löschen
// Ohne Master-Passwort: Vault-Inhalt bei DB-Zugriff unlesbar.
XSalsa20-Poly1305
Argon2id Key Derivation
libsodium
Zero-Knowledge Vault
Ende-zu-Ende-Verschlüsselung
Eigene Infrastruktur
Keine Drittanbieter
09
Rechnungen
✓ Produktiv
Problem
Rechnungen manuell in Word erstellen — Nummernvergabe, Zahlungsüberwachung und Mahnwesen fehleranfällig.
→
Lösung
Rechnungen aus Positionen mit automatischer Nummernvergabe, Zahlungsüberwachung und direkter Belegverbuchung.
→
Effekt
Rechnungsstand jederzeit im Blick — Zahlungseingang verbucht mit einem Klick, kein doppeltes Erfassen.
Funktionen
Dynamische Positionen (Menge × Preis)
Kontaktsuche befüllt Adressfelder
Status: Entwurf → Offen → Bezahlt
Überfälligkeits-Markierung
Mahnung drucken
Projektintegration
Technisches Prinzip — GoBD-Unveränderlichkeit + Atomare Nummernvergabe
// Finalisierung = Snapshot + Nummernvergabe in einer Transaktion
RECHNUNG FINALISIEREN:
→ Status: "Entwurf" → "Offen"
→ Kundendaten einfrieren: Name, Adresse, USt-ID kopieren
// Spätere Adressänderungen berühren die Rechnung nicht mehr
→ Rechnungsnummer vergeben: R-JJJJ-NNN ← atomar, keine Duplikate
→ Rechnung ist ab jetzt schreibgeschützt
// Zahlungseingang → automatisch Beleg in Belegverwaltung
ZAHLUNG BUCHEN: 1 Klick → Beleg R-2025-042 erscheint in Belegverwaltung
GoBD-Unveränderlichkeit
Kunden-Snapshot
§19 UStG konfigurierbar
Atomare Nummernvergabe
GoBD-relevant
Kein Cloud-Rechnungsdienst
Kundendaten intern
10
Ticket-System — Kunden-Support
✓ Produktiv
Problem
Kunden ohne Portal-Zugang schreiben Anfragen per E-Mail — Bearbeitungsstand weder für Kunden noch intern nachvollziehbar.
→
Lösung
Öffentliches Einreichungsformular (DE/EN) ohne Login-Pflicht, internes Admin-Backend mit Filterfunktionen.
→
Effekt
Strukturierter Eingang, priorisierte Bearbeitung — kein Zendesk, kein Freshdesk, volle Datenkontrolle.
Funktionen
Öffentliches Formular DE/EN
Ticketstatus per E-Mail abfragen
Verschiedene Anfragetypen
Admin-Backend mit Portal-Auth
Filter nach Status, Kategorie, Suche
Technisches Prinzip — Eingabe-Bereinigungskette
// Jeder eingehende Wert durchläuft diese Kette — keine Ausnahme:
ÖFFENTLICHES FORMULAR (kein Login nötig):
eingabe = { name, email, betreff, beschreibung }
→ HTML-Escape // verhindert XSS-Angriffe
→ Länge begrenzen // verhindert Overflow-Angriffe
→ CSRF-Token prüfen // verhindert Cross-Site-Einreichungen
→ als neues Ticket speichern
ADMIN-BACKEND:
→ Portal-Authentifizierung erforderlich
→ nur Nutzer mit Ticket-Berechtigung
XSS-Schutz
CSRF-Protection
Rollenbasierter Zugriff
Kundendaten intern
Kein Zendesk/Freshdesk
11
Website Admin — eigenes CMS
✓ Produktiv
Problem
Websiteinhalte pflegen ohne schwerfälliges CMS — zweisprachige Inhalte, Bilder und Navigation sollen einfach verwaltbar sein.
→
Lösung
Schlankes CMS mit zweisprachigen Beiträgen, flexiblem Spalten-Layout (1–6 Spalten) und visuellem Menü-Editor.
→
Effekt
Inhalte sofort live — kein WordPress, kein Joomla für die eigene Seite, keine Plugin-Updates.
Funktionen
Beiträge: Entwurf / Veröffentlicht / Archiviert
Zweisprachig: DE + EN je Beitrag
Spalten-Layout: 1–6 Spalten pro Zeile
Spaltentypen: Text, Bild, HTML-Block
Medienverwaltung mit Alt-Texten
Menü-Editor für Navigation + Footer
Technisches Prinzip — Datenbankgesteuertes Frontend-Routing
// Keine statischen HTML-Dateien — jede Seite entsteht zur Laufzeit
AUFRUF: /?lang=de&slug=ueber-uns
→ Sprache aus URL (de / en, Standard: de)
→ Beitrag anhand slug aus DB laden
→ Abschnitte + Spalten laden (Reihenfolge aus DB)
→ Pro Spalte: Typ prüfen
Text → HTML-Inhalt der gewählten Sprache ausgeben
Bild → Alt-Text der gewählten Sprache ausgeben
HTML → rohen Block ausgeben (nur admin-erstellte Inhalte)
→ Menü aus DB laden → Navigation rendern
// Änderung im Admin → sofort live, kein Deployment, kein Cache-Flush nötig
Datenbankgesteuertes Routing
Mehrsprachig (DE/EN)
Kein WordPress / Joomla
Selbst betrieben
Redaktionszugang nur mit Portal-Login
12
Notizen — mit Nextcloud-Sync
✓ Produktiv
Problem
Notizen auf verschiedenen Geräten nicht synchron — iPhone, Desktop und Browser zeigen unterschiedliche Stände.
→
Lösung
Notizen-App mit Nextcloud-Backend, Kategorien, Markdown-Unterstützung und IndexedDB-Offline-Cache.
→
Effekt
Eine App, alle Geräte synchron — iPhone-Sync über Nextcloud Notes-App, kein iCloud, kein Google Keep.
Funktionen
Erstellen, Bearbeiten, Löschen im Browser
Kategorien mit Filteransicht
Favoriten-Markierung
Markdown-Vorschau (Überschriften, Listen, Code)
iPhone-Sync über Nextcloud Notes-App (nativ)
Offline-Schreiben mit automatischer Synchronisation
Technisches Prinzip — Offline-Queue + Nextcloud REST-API
// Alle Schreiboperationen landen in einer IndexedDB-Queue
OFFLINE:
create/update/delete → IDB pending-Store (localId, action, data)
Notiz sofort sichtbar (temporäre ID, negativ)
ONLINE (reconnect):
FÜR JEDE pending-Operation (in Reihenfolge):
→ POST /nextcloud/notes/api/v1/notes (create)
→ PUT /nextcloud/notes/api/v1/notes/{id} (update)
→ DELETE /nextcloud/notes/api/v1/notes/{id} (delete)
→ temporäre ID → echte NC-ID ersetzen
// iPhone-Sync läuft parallel über dieselbe NC-API — kein Extra-Aufwand
Nextcloud Notes REST-API
IndexedDB Offline-Queue
Markdown (marked.js)
Kein iCloud / Google Keep
Eigener Nextcloud-Server
Notizen verlassen den eigenen Server nicht
13
PLU-Liste — Artikelreferenz
✓ Produktiv
Problem
PLU-Codes für Artikel auf Zetteln und in Tabellen — nicht durchsuchbar, nicht immer auf dem aktuellen Stand.
→
Lösung
Digitale PLU-Referenzliste im Portal: schnelle Volltextsuche, Übersicht nach Kategorien, Nextcloud-Sync.
→
Effekt
Artikel sofort per Code oder Name gefunden — immer aktuell, geräteübergreifend verfügbar.
Funktionen
Volltextsuche nach Code oder Bezeichnung
Filterung nach Kategorie
Einträge anlegen, bearbeiten, löschen
Nextcloud-Synchronisation
Zugriff über Portal-Login (rollenbasiert)
Technisches Prinzip — Servergestützte Suche mit NC-Datenbasis
// Suche läuft serverseitig — kein vollständiger Download der Liste nötig
ANFRAGE: /plu/api.php?q=apfel
→ Sitzung prüfen // Portal-Auth erforderlich
→ SQL LIKE-Suche:
WHERE code LIKE '%apfel%'
OR bezeichnung LIKE '%apfel%'
→ JSON-Antwort an Browser
// Datenbestand via Nextcloud synchronisiert —
// Änderungen auf einem Gerät sofort auf allen sichtbar.
Servergestützte Volltextsuche
Nextcloud-Sync
Rollenbasierter Zugriff
Selbst betrieben
Keine externen Dienste
14
Matrix — Eigener Kommunikations-Server
✓ Produktiv
Problem
Interne Kommunikation läuft über WhatsApp, Signal oder Slack — Nachrichten auf fremden Servern, keine Kontrolle über Metadaten und Verläufe.
→
Lösung
Eigener Matrix-Homeserver (Synapse) auf dem VPS — Ende-zu-Ende-verschlüsselt, offen standardisiert, erreichbar über Element (Web, iOS, Android).
→
Effekt
Kein WhatsApp, kein Slack, kein Teams — volle Kontrolle über Nachrichten, Teilnehmer und Verläufe auf eigener Infrastruktur.
Funktionen
Einzel- und Gruppenchats (E2E-verschlüsselt)
Datei- und Bildversand über eigenen Media-Store
Element-App: Web, iOS, Android
Offener Standard (Matrix-Protokoll / RFC)
Föderierbar — Kommunikation mit anderen Matrix-Servern möglich
Keine Metadaten bei Drittanbietern
Technisches Prinzip — Dezentrales Messaging-Protokoll
// Alle Nachrichten laufen ausschließlich über den eigenen Server
CLIENT (Element-App / Browser):
→ HTTPS zur Matrix-API auf eigenem VPS
→ Ende-zu-Ende-Verschlüsselung per Megolm (Olm/Double-Ratchet)
→ Schlüssel werden nur lokal auf dem Gerät gespeichert
SERVER (Synapse auf VPS):
→ speichert ausschließlich verschlüsselte Nachrichten
→ kein Klartext serverseitig lesbar
→ föderiert nur auf Anfrage mit anderen Matrix-Servern
// Föderation deaktivierbar — rein interner Betrieb möglich
Matrix-Protokoll (offener Standard)
Synapse Homeserver
Megolm E2E-Verschlüsselung
Kein WhatsApp / Slack / Teams
Eigener VPS
Nachrichten verlassen den eigenen Server nicht