mikkelmanniche.dk
Die Seite, auf der Sie gerade sind. Von Grund auf handgeschrieben, ohne WordPress, Theme oder Build-Prozess, und auf Dänisch, Englisch und Deutsch verfasst. Das Video zeigt die Preisseite, vom Festpreis bis zur Zahlung.
Der Ausgangspunkt
Ich wollte eine Seite, die das tut, was ich anderen anbiete: schnell, ohne unnötige Dritte und ehrlich darüber, was gemessen wird. Standardlösungen wie Google Fonts und fertige Cookie-Banner-Skripte fielen deshalb weg, weil sie selbst Daten weitergeben, bevor jemand zugestimmt hat.
Was gebaut wurde
Seiten in drei Sprachen in handgeschriebenem HTML, CSS und etwas JavaScript. Die Schriften liegen auf meiner eigenen Domain. Die Statistik startet erst, wenn Sie auf Akzeptieren drücken; lehnen Sie ab, passiert nichts.
Die Preisseite hat Festpreise, und die Zahlung läuft über Stripe direkt von der Seite. Das Video oben zeigt den Ablauf von der Paketwahl bis zur Zahlung.
Feste Einmalpreise, ohne Umsatzsteuer, laut preise.html. Nur die "Größere Website" ist ein Richtpreis.
Dahinter
Hinter der Seite steht ein Admin-Panel für Anfragen, Postfächer und Besucherzahlen, gebaut mit Vite und React, sowie ein Lead-Werkzeug zur Kundengewinnung. Benachrichtigungen sind optional und standardmäßig ausgeschaltet.
Der Stack des Admin-Panelspackage.json
- Vite 6Build und lokaler Server
- React 19+ react-router-dom
- Tailwind CSS 4+ HeroUI
- PHP-APInpm run api, lokaler Router
Lokal wird die API mit npm run api gegen Testdaten ausgeführt; Testdaten werden mit npm run testdata zurückgesetzt, sonst funktioniert der Test-Login nicht.
Die Technik
Reines HTML und CSS ohne Framework, derselbe Ansatz wie auf terjepedersen.dk. Eine strenge Sicherheitsregel im Browser erlaubt nur Inhalte von meiner eigenen Domain, sodass nichts von anderswo geladen werden kann, ohne dass ich es selbst eingetragen habe.
Sicherheitsregel in .htaccessContent-Security-Policy
default-src 'self'; script-src 'self' https://www.googletagmanager.com https://datafa.st https://www.googleadservices.com https://googleads.g.doubleclick.net https://www.google.com; connect-src 'self' https://admin.mikkelmanniche.dk https://datafa.st https://*.google-analytics.com …; img-src 'self' data: https://*.google-analytics.com …; style-src 'self' 'unsafe-inline'; font-src 'self'; form-action 'self'; frame-ancestors 'self'; base-uri 'self'
-
/assets/style.cssEigene Domain erlaubt -
fonts.googleapis.comGoogle Fonts — font-src erlaubt nur 'self' blockiert -
cdnjs.cloudflare.comFremdes Script-CDN, nicht in script-src blockiert -
www.googletagmanager.com/gtag/jsIn script-src, wird aber erst geladen, wenn Sie zugestimmt haben von der Regel erlaubt -
www.youtube.com/embed/…Fremdes iframe, keine frame-src-Ausnahme blockiert
Die Regel lässt Script, Stil, Schrift und Bilder nur von den Domains zu, die sie selbst nennt — der Rest fällt zurück auf default-src 'self' und wird vom Browser gestoppt, nicht vom Server.