Umsetzung des "Website Masterplan" (16 Seiten) unter /webdesign. Zugangsschutz mit EIGENER Schranke (server/webdesign-gate.js) statt gate.js: gate.js laesst seit dem oeffentlichen Start am 21.08.2026 jeden durch, weil die Pruefung auf SITE_PUBLIC_LAUNCH_AT als allererste Zeile steht. Haette man /webdesign dahintergehaengt, waere der ausdruecklich nicht-oeffentliche Bereich inklusive Preisen und spaeteren Kundendaten ab der ersten Sekunde fuer jeden lesbar gewesen. Eigenes Sitzungs-Cookie, bereich="webdesign" im Token, damit ein gueltiges Universe-Cookie hier NICHT gilt. 37/37 Tests. Sieben oeffentliche Seiten in fuenf Sprachen (de, de-CH mit echtem Dialekt, en, fr, pt). Preise, Zeitrahmen, Paketnamen und die 30-%-Regel stehen an genau EINER Stelle in wd-core.js -- der Masterplan verlangt "ueberall widerspruchsfrei", und vier Kopien laufen bei der ersten Preisaenderung auseinander. Als App installierbar auf Handy und PC. Der Service Worker speichert bewusst KEINE HTML-Seite zwischen: nach dem Abmelden wuerden sonst geschuetzte Seiten weiter ausgeliefert, ohne dass der Server je gefragt wird. 18/18 Tests. Handy-Abnahme ueber alle Seiten in fuenf Breiten (320-1440) und fuenf Sprachen: 40/40. Der Test fand 35 echte Fehler (Touch-Ziele unter 44px), behoben im Designsystem statt einzeln pro Seite. PayPal (Wunsch 22.08.2026 "sofort auf meinem paypal"): Orders API mit intent=CAPTURE, also sofortiger Einzug statt blosser Reservierung. Gebuehr und Nettobetrag getrennt gespeichert. Betraege durchgehend als Ganzzahl in Cent. Gefaelschte Webhooks werden abgewiesen. Fail closed solange Zugangsdaten fehlen. 28/28 Tests gegen einen nachgebauten PayPal-Server. Datenbank: 15 Tabellen mit Praefix wd_, fachlich vollstaendig vom Universe getrennt. Co-Authored-By: Claude Opus 5 <[email protected]>
42 lines
1.5 KiB
JSON
42 lines
1.5 KiB
JSON
{
|
|
"name": "Dogfather Webdesign",
|
|
"short_name": "DF Webdesign",
|
|
"description": "Individuell gebaute Webseiten, persönlich umgesetzt. Projekte anfragen, Angebote und Dateien im eigenen Kundenbereich verwalten.",
|
|
"lang": "de",
|
|
"dir": "ltr",
|
|
"start_url": "/webdesign/",
|
|
"scope": "/webdesign/",
|
|
"id": "/webdesign/",
|
|
"display": "standalone",
|
|
"display_override": ["window-controls-overlay", "standalone", "minimal-ui"],
|
|
"orientation": "any",
|
|
"background_color": "#05070b",
|
|
"theme_color": "#05070b",
|
|
"categories": ["business", "productivity"],
|
|
"icons": [
|
|
{ "src": "/assets/img/wd-app-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
|
|
{ "src": "/assets/img/wd-app-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" },
|
|
{ "src": "/assets/img/wd-app-512-maskable.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
|
|
],
|
|
"shortcuts": [
|
|
{
|
|
"name": "Projekt anfragen",
|
|
"short_name": "Anfrage",
|
|
"url": "/webdesign/anfrage.html",
|
|
"icons": [{ "src": "/assets/img/wd-app-192.png", "sizes": "192x192" }]
|
|
},
|
|
{
|
|
"name": "Kundenportal",
|
|
"short_name": "Portal",
|
|
"url": "/webdesign/portal.html",
|
|
"icons": [{ "src": "/assets/img/wd-app-192.png", "sizes": "192x192" }]
|
|
},
|
|
{
|
|
"name": "Verwaltung",
|
|
"short_name": "Verwaltung",
|
|
"url": "/webdesign/verwaltung.html",
|
|
"icons": [{ "src": "/assets/img/wd-app-192.png", "sizes": "192x192" }]
|
|
}
|
|
]
|
|
}
|