Projekt
Minside Admin
En lille native Windows-shell til kunder med SaaS-produkter. Den indlejrer Chromium, loader den live klientportal og føles som en desktop-app - uden at kopiere websitet ind i installeren. Produktkataloget er stadig en showcase, men Analytics-SaaS’en virker fuldt.
Hvad er det?
Minside Admin er en Electron-app: et låst vindue, der åbner det rigtige login og produktportal på simonringwelski.dk. Ingen adresselinje og ingen generel browsing - bare et desktop-ikon, vedvarende session og recovery, når netværk eller renderer fejler.
Kun shell’en pakkes (main-proces, preload-bro, ikon). Websitet kommer altid fra serveren, så kunder får samme PHP-backend, auth og SaaS-produkter som i browseren - med en desktop-først ramme omkring.
Tænk på det som Chrome uden chrome: samme site, samme konti, låst til domænet, med genvej på skrivebordet og recovery ved crash/netværksfejl.
- Native Windows-shell omkring den live klientportal
- SaaS-produktlauncher med konto- og licenstjek
- Analytics-SaaS er produktionsklar; det bredere katalog er stadig showcase
- Installer og portable builds via electron-builder
Sikkert login
Ved start åbnes et fokuseret admin-login i Electron-vinduet. Brugere logger ind med deres kontooplysninger, før produkter vises - samme auth-stack som webportalen, i en rolig desktop-ramme.
Entry-URL’en inkluderer client=desktop-app, så sitet kan opdage wrapperen og tilpasse UI’et til det låste vindue (temaskift, layout og desktop-hints).
- Loader auth/login.php i et låst Electron-vindue
- Rent, distraktionsfrit login-UI
- Desktop-client query lader PHP/JS tilpasse oplevelsen
To-faktor-autentifikation
Når en konto har 2FA aktiveret, fortsætter desktop-klienten samme authenticator-flow som på web: en sekscifret app-kode eller en af de ticifrede backup-recovery-koder, hvis telefonen mangler.
MFA genimplementeres ikke i Electron - shell’en hoster blot de hærdede login-sider, så sikkerhedspolitikken forbliver centraliseret på serveren.
- Authenticator-app-koder (6 cifre)
- Backup-recovery-koder (10 cifre)
- Annullér og gå tilbage til password-login ved behov
Produktdashboard
Efter login lander kunder på en produkthjemmeside med abonnementer og købte SaaS-apps på kontoen. Aktive produkter viser status og en åbn-handling, der starter appen i samme shell.
Adgang og licens verificeres af serveren, når et produkt åbnes - desktop-klienten er launcheren, ikke et separat licenslager.
- Central liste over aktive abonnementer og produkter
- Åbn med ét klik ind i den valgte SaaS-UI
- Kontoadgang og licens tjekkes på serveren
Analytics-SaaS (live)
Analytics er ikke en mock-skærm. Kunder åbner et fungerende analytics-produkt fra desktop: trafik, besøgsadfærd, indholdsperformance, publikum, events, forbrug og Core Web Vitals for deres property.
Datoperioder, property-styring og samtykkebaseret indsamling ligger på samme backend som weboplevelsen - den native klient er bare den foretrukne måde at køre det i hverdagen.
- Trafik, indhold, publikum, performance, events og forbrug
- Core Web Vitals og relaterede website-indsigter
- Fuldt fungerende produkt - ikke en showcase-placeholder
Arkitektur
Minside Admin.exe starter en Electron main-proces. Den ejer BrowserWindow, navigation guards, persistent cookie-partition og auto-reload ved fejl. Chromium loader derefter den live site på simonringwelski.dk.
main.js styrer vindue, domænelås, recovery-backoff og sessionspersistens. preload.js er broen mellem Electron og siden og holdes bevidst tom eller minimal. package.json driver scripts og electron-builder-output.
Dev bruger npm start mod lokal main.js. Release kører npm run dist: konverter logo til .ico, og byg Minside Admin Setup (installer + genvej) plus en portable .exe. Websitet pakkes aldrig ind i binary’en.
- Electron main-proces + Chromium-renderer
- Navigation guards begrænset til simonringwelski.dk (og subdomæner)
- persist:minside-partition til cookies og site-storage
- Auto-reload med backoff ved load/crash/hang
- electron-builder installer og portable Windows-builds
Shell-adfærd og sikkerhed
Ved start hedder vinduet “Minside Admin”, og første URL er det live login med client=desktop-app. Eksterne links og redirects uden for domænet blokeres i appen og åbnes i brugerens normale browser i stedet.
Sessioner overlever genstart, fordi cookies og storage ligger under Electrons user data-mappe og flushes til disk ved luk. Hvis hovedsiden fejler, renderer crasher, eller siden hænger, planlægges reload med backoff fra 1s op til 30s; et vellykket load nulstiller tælleren.
Sikkerhedsdefaults er stramme: nodeIntegration slået fra, contextIsolation og sandbox slået til - så websitet ikke kan nå Node eller fil-API’er gennem shell’en.
- Ingen adresselinje; domænelåst navigation
- Vedvarende login på tværs af app-genstarter
- Backoff-reload ved load-fejl, crash eller hang
- nodeIntegration: false, contextIsolation: true, sandbox: true