Commit Graph
18 Commits
Author SHA1 Message Date
JUSNandClaude Opus 5 8e4ee58055 Webseite: kaputte Verweise repariert + Hinweis zur Kamera-Abfrage
Ein Nutzer wurde beim Hochladen nach dem Mikrofon gefragt. Geprueft: Die
Seite fordert es NICHT an — sie laedt nur Turnstile als fremdes Skript, das
Datei-Feld akzeptiert nur image/jpeg, image/png und application/pdf (kein
capture, kein video), und im gesamten Web-Code gibt es kein getUserMedia.
Ohne das ist Mikrofonzugriff im Browser nicht moeglich.

Ursache ist die Kamera-App des Handys: Wer im Datei-Dialog 'Kamera' waehlt,
oeffnet die App des Geraets, und die fragt nach IHREN Berechtigungen
(Kamera + Mikrofon, weil sie auch Video kann). Fuer den Nutzer sieht es aus,
als frage die Webseite. Jetzt steht genau das als Hinweis unter dem
Upload-Knopf.

Nebenbei zwei tote Verweise gefunden: manifest.json und apple-touch-icon.png
existierten nicht, Cloudflare lieferte die HTML-Fehlerseite mit Status 200.
Der Browser las also HTML als JSON bzw. als Bild. Manifest neu angelegt,
Icon-Verweis entfernt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 14:38:22 +02:00
JUSNandClaude Opus 5 7cc60742c7 Positionierung verbreitert: weg vom 'Hartz-IV'-Bild, ohne die Staerke aufzugeben
Der Nutzer wollte nicht mehr nur mit Jobcenter verbunden werden, aber die
Spezialisierung ist sein einziger Vorteil gegenueber DeepL/ChatGPT. Also
nicht weg von Behoerdenbriefen, sondern breiter, WELCHE Briefe:

- Beispielbrief SGB-II-Sanktion -> Finanzamt-Steuerbescheid (§164 AO).
  Trifft Angestellte wie Selbstaendige, kein Armuts-Signal. Auf Deutsch und
  in allen 27 Sprachen ausgetauscht.
- Claim 'Brief vom Amt' -> 'Schwierige Post'
- Briefarten: Finanzamt, Versicherung, Vermieter, Bank zuerst genannt
- Zielgruppe in Meta/Schema: statt 'Asylbewerber, vulnerable
  Bevoelkerungsgruppen' jetzt 'alle, die schwierige Post bekommen'
- Zahlen-Sektion dreht die Schuld um: nicht 'ihr koennt nicht lesen',
  sondern 'Amtsdeutsch ist unnoetig schwer — das liegt nicht an Ihnen'

Name, Domain, Ratgeber und SEO bleiben — dort haengt die gesamte bisherige
Arbeit dran.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:52:15 +02:00
JUSNandClaude Opus 5 7780d381b3 Web-Demo mehrsprachig + Sprachseiten bekommen Demo und Kauf
Beim Nachgehen der Frage 'warum gibt es auf den Sprachseiten kein Payment'
kam heraus: Die Web-Demo antwortete AUSSCHLIESSLICH auf Deutsch. Die
Uebersetzung war bisher reine App-Funktion — und die App gibt es noch nicht.
Kauf-Knoepfe auf der tuerkischen Seite haetten also 2,99 EUR fuer eine
deutsche Antwort kassiert. Deshalb zuerst der Worker:

- /demo nimmt jetzt 'zielsprache' entgegen (28 erlaubte Codes, Whitelist —
  der Wert geht nie als freier Text in den Prompt, sonst koennte man eigene
  Anweisungen einschleusen).
- Der deutsche Fachbegriff bleibt deutsch, nur dessen Erklaerung wird
  uebersetzt — der Nutzer muss ihn im Brief wiederfinden.
- demo.html hat eine Sprachauswahl und merkt sich die Wahl; die Sprachseiten
  verlinken mit ?sprache=xx.

Erst danach die Sprachseiten: Demo-Knopf als Haupt-Handlung (es gab bisher
GAR KEINEN — man konnte das Produkt in 27 Sprachen nicht einmal ausprobieren)
und ein Kauf-Abschnitt mit uebersetzter Pflicht-Einwilligung nach §356 BGB.

Geprueft: 27 Dateien ohne Syntaxfehler, keine offenen Platzhalter, Kauf
liefert cs_live_. Zwei Tippfehler im bulgarischen Text korrigiert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:27:59 +02:00
JUSNandClaude Opus 5 7d0692150c Website: 28 Sprachen statt 7 — per Generator statt Handarbeit
tools/sprachseiten/ enthaelt jetzt vorlage.html + texte.js + build.js.
'node tools/sprachseiten/build.js' erzeugt alle 27 Sprachseiten und pflegt
hreflang + Sprachwaehler auch in der handgemachten index.html nach.

Warum ein Generator: 28 Seiten von Hand zu pflegen heisst, jede kuenftige
Aenderung 28-mal zu machen. So ist es eine Aenderung an einer Stelle.

Neue Sprachen u. a. Rumaenisch, Kurdisch (Kurmanci), Bulgarisch, Kroatisch,
Serbisch, Bosnisch, Albanisch, Italienisch, Griechisch, Vietnamesisch, Hindi,
Urdu, Paschtu, Tigrinya, Somali, Chinesisch.

Sprachleiste ist jetzt ein Aufklappmenue — 28 Links nebeneinander waeren
unbenutzbar, besonders auf dem Handy. Google findet die Seiten weiter ueber
hreflang (28 + x-default, auf jeder Seite identisch) und die Sitemap (38 URLs).

Ausserdem: Hinweis in beiden Kauf-Boxen, warum sich die E-Mail-Angabe lohnt
(Zugangs-Link -> Guthaben auf jedem Geraet nutzbar).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 15:56:49 +02:00
JUSNandClaude Opus 5 3cdf9d0bd1 Werbetexte: '9 Sprachen' -> 'ueber 25 Sprachen' (22 Stellen)
App unterstuetzt jetzt 27 Zielsprachen, die Texte sagten noch 9. Betrifft
Startseite (Meta/OG/JSON-LD/sichtbar), Demo, alle 6 Sprachseiten, Ratgeber-Hub,
3 Artikel und die Beratungsstellen-Mails.

Im Uebersetzen-Artikel ausserdem die sichtbare Sprachliste von 9 auf 28
erweitert und die FAQ-Antwort angepasst (sonst haette der Artikel der eigenen
Ueberschrift widersprochen). Dessen Meta-Description von 166 auf 147 Zeichen
gekuerzt — sie wurde von Google abgeschnitten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 13:55:46 +02:00
JUSNandClaude Opus 5 e8a48049dd Stripe: auf LIVE-Preise umgestellt (Worker + Startseite + Demo)
price_1U6BNn… = 5 Analysen / 2,99 EUR
price_1U6BPR… = 15 Analysen / 6,99 EUR

Achtung: funktioniert erst, wenn STRIPE_SECRET_KEY auf sk_live_ steht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 17:41:45 +02:00
JUSNandClaude Opus 5 16e9d33b71 Branding: BehoerdenKlar by Webklar + Anbieter-Hinweis an der Kasse
Statt Statement-Descriptor-Trick: Webklar wird auf der Seite sichtbar
gemacht. Kauf-Boxen nennen Webklar GbR als Anbieter und sagen an, dass
auf der Kontoabrechnung 'Webklar' erscheint (verhindert Chargebacks).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 17:30:30 +02:00
JUSNandClaude Opus 4.8 0b71cce57d Rechtstexte: AGB + Widerruf neu, Impressum/Datenschutz auf Webklar GbR
- Impressum: Webklar GbR (Justin Klein, Kenso Grimm), Kleinunternehmer §19,
  EU-Streitschlichtung; Steuernummer bewusst nicht veroeffentlicht
- Datenschutz: Verantwortlicher = Webklar GbR; neuer Abschnitt Bezahlung
  (Stripe) + Wiederherstellungs-Mail (Brevo)
- AGB (agb.html) + Widerrufsbelehrung (widerruf.html) neu, verlinkt
- Kauf-UI: falsche 'inkl. USt' entfernt -> §19-Hinweis; AGB/Widerruf im
  Pflicht-Haekchen und in den Footern verlinkt

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-19 00:03:25 +02:00
JUSNandClaude Opus 4.8 3c2e5c24ae Web-Kauf: Kauf-Block nach oben (jetzt §2, direkt hinter Upload)
Guthaben-Kauf erscheint jetzt gleich unter dem Upload statt ganz unten.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 19:52:49 +02:00
JUSNandClaude Opus 4.8 0634e3cd38 Web-Kauf: Guthaben jederzeit kaufbar (auch ohne Gratis-Test)
Kauf-Block ist von Anfang an sichtbar — beide Wege parallel: sofort kaufen
oder erst 2x gratis testen. Einleitungstext angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 19:46:51 +02:00
JUSNandClaude Opus 4.8 521f504aa3 Web-Kauf: Guthaben kaufen & nutzen im Browser (Stripe, Demo-Seite)
- demo.html: Kauf-Block mit Paketen (5/15 Analysen), Guthaben-Banner,
  Pflicht-Einwilligung (sofortige Leistung, Widerruf erlischt), Rückkehr
  von Stripe (/kauf-status), Wallet-Token in localStorage, bezahlte
  Analysen umgehen die Gratis-Sperre und zählen das Guthaben herunter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 19:40:58 +02:00
JUSNandClaude Opus 4.8 ce8a08a14d Fix: neues Turnstile-Widget mit behoerdenklar.de als Hostname
Altes Widget war nur fuer pages.dev freigeschaltet -> auf der neuen Domain
kam kein Token, Demo blockiert. Neues Widget (Hostnames: behoerdenklar.de,
www, pages.dev): Sitekey in demo.html, Secret als Worker-Secret gesetzt.
Token-Erzeugung auf behoerdenklar.de verifiziert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-17 12:55:10 +02:00
JUSNandClaude Opus 4.8 b2b7abb53b Google Search Console: Verifizierungs-Tag auf behoerdenklar.de-Property umgestellt
Neuer Code (6o1s...) fuer die .de-Property statt des alten pages.dev-Codes,
auf allen Seiten aktualisiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 22:02:56 +02:00
JUSNandClaude Opus 4.8 4f692ad667 Domain-Umzug: behoerdenklar.pages.dev -> behoerdenklar.de
- Website: alle canonical/OG/hreflang/Sitemap/robots-URLs auf behoerdenklar.de
  (alle Sprachseiten, Demo, Ratgeber)
- Worker: Demo-CORS erlaubt jetzt behoerdenklar.de (und www), nicht nur
  pages.dev -> Demo funktioniert auf der neuen Domain
- eigene Domain via Cloudflare Pages Custom Domain verbunden (SSL aktiv)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 21:47:15 +02:00
JUSN f3dc04d2f3 Update SEO and verification meta tags 2026-08-10 17:39:53 +02:00
JUSN ff568f7499 Meta Tags passend zur seite 2026-08-09 23:11:55 +02:00
JUSNandClaude Fable 5 b27c69c4bd Web-Demo Fix: geteilte Anschluesse blockierten den ersten Versuch
Fehler: Der anonyme Erst-Versuch war auf 1 pro IP (30 Tage) begrenzt.
Teilen sich mehrere Menschen eine Leitung (Familie, WLAN, Mobilfunk/CGNAT),
bekam der Zweite sofort 'E-Mail noetig' statt einer Analyse. Trat auch
beim Testen ueber denselben Anschluss auf.

- IP- und Anon-Zaehler jetzt TAEGLICH (Datum im Schluessel), 48h TTL
- Anonyme Erst-Analysen pro Anschluss/Tag: 3 (statt 1/30 Tage)
- IP-Gesamtlimit pro Tag: 8 (statt 3/30 Tage)
- 'Wallet'-Schutz unveraendert: globales Tagesbudget 100 + Turnstile +
  E-Mail-Hash (dauerhaft 1x/Adresse)
- Client: email_noetig markiert den Browser NICHT mehr als verbraucht
  (sonst dauerhafte Blockade ohne gelungene Analyse); localStorage-Key
  auf 'bk_demo_v2' umbenannt -> setzt falsche Testphasen-Staende zurueck

Ende-zu-Ende verifiziert: frischer Erst-Upload liefert wieder das Ergebnis.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:51:37 +02:00
JUSNandClaude Fable 5 ec6ec22421 Web-Demo: 2 Gratis-Analysen direkt auf der Webseite
Worker (/demo auf behoerdenklar-proxy):
- Turnstile-Verifikation serverseitig (Bot-Mauer)
- Analyse 1 anonym (1x pro IP/30 Tage), Analyse 2 nur mit E-Mail
  (SHA-256-Hash mit Pepper, dauerhaft — nie Klartext gespeichert)
- IP-Gesamtlimit 3/30 Tage, globales Tagesbudget 100 (~2,50 EUR Deckel)
- Wegwerf-Mail-Blockliste, 5-MB-Limit, CORS nur eigene Domain
- Prompt/Schema identisch zur App (ohne Antwort-Generator)

Webseite:
- demo.html im Papier-Design: Einwilligung, Upload mit Client-Downscaling
  (2000px/JPEG wie App), Ampel-Logik, Ergebnis-Karten, Warteliste-CTA
  mit vorbelegter E-Mail, gestaffelter Ablauf 1. anonym / 2. mit E-Mail
- Startseite verlinkt Demo im Hero
- Datenschutz: neuer Abschnitt 8 Gratis-Demo (Einwilligung, Turnstile,
  E-Mail-Hash), Folgeabschnitte neu nummeriert; Sitemap + /demo

Ende-zu-Ende getestet: echte Analyse (Jobcenter-Testbrief korrekt erklärt,
Ampel erkennt fruehere Absagefrist), Schummler-Szenarien (Browser-Loeschen,
doppelte E-Mail) serverseitig abgefangen. Dabei entdeckt: Anthropic-Key
war ungueltig -> erneuert (App-Analyse funktionierte wieder).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:06:03 +02:00