Projekt
Minside Admin
Eine kleine native Windows-Shell für Kunden mit SaaS-Produkten. Sie bettet Chromium ein, lädt das Live-Kundenportal und fühlt sich wie eine Desktop-App an - ohne die Website in den Installer zu kopieren. Der Produktkatalog ist noch Showcase, aber die Analytics-SaaS läuft vollständig.
Was ist das?
Minside Admin ist eine Electron-App: ein gesperrtes Fenster, das Login und Produktportal auf simonringwelski.dk öffnet. Keine Adressleiste und kein allgemeines Surfen - nur Desktop-Icon, persistente Session und Recovery, wenn Netzwerk oder Renderer Probleme machen.
Nur die Shell wird gepackt (Main-Prozess, Preload-Bridge, Icon). Die Website kommt immer vom Server, sodass Kunden dasselbe PHP-Backend, Auth und SaaS-Produkte wie im Browser bekommen - mit einem Desktop-first-Rahmen darum.
Stellen Sie sich Chrome ohne Chrome vor: dieselbe Site, dieselben Konten, auf die Domain beschränkt, mit Desktop-Verknüpfung und Crash-/Netzwerk-Recovery.
- Native Windows-Shell um das Live-Kundenportal
- SaaS-Produkt-Launcher mit Konto- und Lizenzprüfung
- Analytics-SaaS ist produktionsreif; der breitere Katalog ist noch Showcase
- Installer- und Portable-Builds via electron-builder
Sicherer Login
Beim Start öffnet sich ein fokussierter Admin-Login im Electron-Fenster. Nutzer melden sich mit Kontodaten an, bevor Produkte erscheinen - derselbe Auth-Stack wie das Webportal, in einem ruhigen Desktop-Rahmen.
Die Einstiegs-URL enthält client=desktop-app, damit die Site den Wrapper erkennt und die UI für das gesperrte Fenster anpasst (Theme-Toggle, Layout und Desktop-Hinweise).
- Lädt auth/login.php in einem gesperrten Electron-Fenster
- Saubere, ablenkungsfreie Authentifizierungs-UI
- Desktop-Client-Query lässt PHP/JS die Erfahrung anpassen
Zwei-Faktor-Authentifizierung
Wenn ein Konto 2FA aktiviert hat, setzt der Desktop-Client denselben Authenticator-Flow wie im Web fort: einen sechsstelligen App-Code oder einen der zehnstelligen Backup-Wiederherstellungscodes, falls das Telefon fehlt.
MFA wird in Electron nicht neu implementiert - die Shell hostet nur die gehärteten Login-Seiten, sodass die Sicherheitspolitik zentral auf dem Server bleibt.
- Authenticator-App-Codes (6 Stellen)
- Backup-Wiederherstellungscodes (10 Stellen)
- Abbrechen und zurück zum Passwort-Login bei Bedarf
Produkte-Dashboard
Nach dem Login landen Kunden auf einer Produkt-Startseite mit Abonnements und gekauften SaaS-Apps auf dem Konto. Aktive Produkte zeigen Status und eine Öffnen-Aktion, die die App in derselben Shell startet.
Zugriff und Lizenz prüft der Server beim Öffnen eines Produkts - der Desktop-Client ist der Launcher, kein separates Lizenzlager.
- Zentrale Liste aktiver Abonnements und Produkte
- Mit einem Klick in die gewählte SaaS-UI öffnen
- Kontozugriff und Lizenz werden serverseitig geprüft
Analytics-SaaS (live)
Analytics ist kein Mock-Screen. Kunden öffnen ein funktionierendes Analytics-Produkt vom Desktop: Traffic, Besucherverhalten, Content-Performance, Audience, Events, Nutzung und Core Web Vitals für ihre Property.
Zeiträume, Property-Verwaltung und einwilligungsbewusste Erfassung liegen auf demselben Backend wie die Web-Erfahrung - der native Client ist nur die bevorzugte Alltagsoberfläche.
- Traffic, Content, Audience, Performance, Events und Nutzung
- Core Web Vitals und verwandte Website-Einblicke
- Voll funktionsfähiges Produkt - kein Showcase-Platzhalter
Architektur
Minside Admin.exe startet einen Electron-Main-Prozess. Der besitzt BrowserWindow, Navigation Guards, persistente Cookie-Partition und Auto-Reload bei Fehlern. Chromium lädt dann die Live-Site auf simonringwelski.dk.
main.js steuert Fenster, Domain-Sperre, Recovery-Backoff und Session-Persistenz. preload.js ist die Bridge zwischen Electron und der Seite und bleibt absichtlich leer oder minimal. package.json treibt Scripts und electron-builder-Ausgabe.
Dev nutzt npm start gegen lokales main.js. Release läuft über npm run dist: Logo nach .ico konvertieren, dann Minside Admin Setup (Installer + Verknüpfung) und eine portable .exe bauen. Die Website selbst wird nie in die Binary gepackt.
- Electron-Main-Prozess + Chromium-Renderer
- Navigation Guards auf simonringwelski.dk (und Subdomains) begrenzt
- persist:minside-Partition für Cookies und Site-Storage
- Auto-Reload mit Backoff bei Load/Crash/Hang
- electron-builder Installer- und Portable-Windows-Builds
Shell-Verhalten & Sicherheit
Beim Start heißt das Fenster „Minside Admin“, und die erste URL ist der Live-Login mit client=desktop-app. Externe Links und Off-Domain-Redirects werden in der App blockiert und stattdessen im normalen Browser des Nutzers geöffnet.
Sessions überleben Neustarts, weil Cookies und Storage unter Electrons User-Data-Ordner liegen und beim Beenden auf die Festplatte geschrieben werden. Wenn die Hauptseite scheitert, der Renderer crasht oder die Seite hängt, wird Reload mit Backoff von 1s bis max. 30s geplant; ein erfolgreicher Load setzt den Zähler zurück.
Sicherheitsdefaults bleiben streng: nodeIntegration aus, contextIsolation und sandbox an - damit die Website über die Shell keine Node- oder Datei-APIs erreichen kann.
- Keine Adressleiste; domain-gesperrte Navigation
- Persistenter Login über App-Neustarts
- Backoff-Reload bei Load-Fehler, Crash oder Hang
- nodeIntegration: false, contextIsolation: true, sandbox: true