Commit Graph
72 Commits
Author SHA1 Message Date
JUSNandClaude Opus 5 62d1d4286f Drei Ratgeber zu den angstbesetzten Briefen: Inkasso, Bussgeld, Kuendigung
Alle drei mit hohem Suchvolumen und dem gleichen Muster: die entscheidende
Frist zuerst, dann pruefen, dann Musterbrief.

- mahnung-inkasso-was-tun: Kernunterscheidung Inkasso-Brief (harmlos, keine
  gesetzliche Frist) vs. gerichtlicher Mahnbescheid (2 Wochen, sonst Titel
  fuer 30 Jahre). Dazu die Ratenzahlungs-Falle: Wer zahlt, erkennt an und
  die Verjaehrung beginnt neu.
- bussgeldbescheid-einspruch: Anhoerungsbogen vs. Bescheid, Frist laeuft ab
  ZUSTELLUNG nicht ab Bescheiddatum, Schweigerecht zur Sache, Einspruch ist
  kostenlos und braucht keine Begruendung.
- kuendigung-wohnung-eigenbedarf: zulaessige Gruende, Fristtabelle nach
  Wohndauer, warum pauschaler Eigenbedarf unwirksam ist, Sozialklausel,
  Schonfristzahlung bei Mietschulden.

Jetzt 13 Ratgeber, Sitemap 43 URLs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 14:30:12 +02:00
JUSNandClaude Opus 5 ba71bcf32f Zwei Ratgeber zur neuen Positionierung: Nebenkosten und Versicherung
Belegen das breitere Bild, statt es nur zu behaupten — und treffen Suchen,
die deutlich mehr Menschen tippen als 'Mitwirkungsaufforderung'.

- nebenkostenabrechnung-pruefen: die zwei leicht zu verwechselnden
  12-Monats-Fristen, Tabelle umlagefaehig/nicht umlagefaehig, Belegeinsicht
  als staerkstes Recht, Musterbrief mit Zahlung unter Vorbehalt
- versicherung-zahlt-nicht: warum eine Ablehnung kein Urteil ist, die vier
  Stufen bis zum Anwalt, Ombudsmann (kostenlos, bis 10.000 EUR bindend fuer
  den Versicherer), Musterbrief

Beide mit FAQPage-Schema, in Uebersicht, Startseite und Sitemap verlinkt.
Ratgeber-Kopf breiter gefasst ('Schwierige Briefe verstehen' statt
'Behoerdenbriefe'), neue Artikel stehen oben.

Jetzt 10 Ratgeber, Sitemap 40 URLs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 17:00:37 +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 5486a6aafb Sprachseiten: FAQ in allen 27 Sprachen (sichtbar + FAQPage-Schema)
Bisher lagen alle 9 FAQ-Bloecke auf deutschen Seiten — die Sprachseiten
hatten gar keine. Jetzt hat jede drei Fragen (Kosten, welche Briefe,
Datenschutz) in der jeweiligen Sprache.

Zwei Effekte: Google kann die aufklappbaren Fragen auch fuer diese Sprachen
anzeigen (groesserer Treffer, mehr Klicks), und die Seiten sind inhaltlich
nicht mehr duenn — das war mein Bedenken beim Anlegen der 28 Seiten.

Sichtbarer Text und Schema werden aus derselben Quelle erzeugt, koennen also
nicht auseinanderlaufen. Geprueft: 38 gueltige Bloecke, 0 kaputt, sichtbare
Fragen identisch mit dem Schema.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:14:14 +02:00
JUSNandClaude Opus 5 1a239b7763 Sprachseiten: strukturierte Daten zurueck + Sitemap mit Sprach-Angaben
Zwei Luecken geschlossen:

1. Beim Umbau auf den Generator hatten die Sprachseiten ihren JSON-LD-Block
   verloren (Regression von mir). Jetzt erzeugt build.js pro Seite ein
   SoftwareApplication-Schema mit der Beschreibung IN DER JEWEILIGEN SPRACHE —
   ein deutscher Block auf der tuerkischen Seite waere widerspruechlich.

2. Die Sitemap war eine nackte URL-Liste ohne Sprachinformation. Jetzt traegt
   jede der 28 Sprachseiten xhtml:link-Angaben fuer alle Alternativen
   (812 Eintraege). Getrennte Sitemaps je Sprache waeren der falsche Weg —
   Google erwartet die Alternativen innerhalb einer Sitemap.

Sitemap wird ab jetzt vom Generator mitgeschrieben, bleibt also automatisch
synchron. Demo- und Ratgeber-URLs bleiben unveraendert erhalten.

Geprueft: 38 gueltige JSON-LD-Bloecke, 0 kaputt; Sitemap als XML valide.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:01:52 +02:00
JUSNandClaude Opus 5 15b09b9742 Startseite repariert: 8 abgeschnittene Zeilen wiederhergestellt
Acht Zeilen waren bei exakt 200 Zeichen abgeschnitten und endeten mit einem
woertlichen '[...]'. Folgen:
- Das Warteliste-Formular war KAPUTT (Brevo-Adresse 186 statt 248 Zeichen)
  -> Anmeldungen gingen ins Leere.
- Fuenf FAQ-Antworten im JSON-LD waren unvollstaendig -> Google meldete
  'Fehlerhafter Aufbau', keine Rich-Ergebnisse moeglich.
- Zwei sichtbare FAQ-Absaetze brachen mitten im Satz ab.

Inhalte dabei auf Stand gebracht: 'guenstiges Abo' -> Guthaben (2,99/6,99 EUR),
9 Sprachen -> ueber 25.

JSON-LD aller Seiten geprueft: 0 kaputte Bloecke.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 15:35:48 +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 fd97a76787 Webhook abgesichert: fehlendes Secret und kaputtes JSON fuehren nicht mehr zum 500er
Ohne gesetztes STRIPE_WEBHOOK_SECRET starb der Handler in hmacHex mit einer
Worker-Exception (error 1101 / HTTP 500). Jetzt: sauberes 503 mit Log-Hinweis.
JSON.parse ist zusaetzlich abgefangen -> 400 statt Absturz.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 13:36:07 +02:00
JUSNandClaude Opus 5 464e9b109f App: Sprachen von 9 auf 27 erweitert + RTL-Darstellung repariert
Neue Zielsprachen fuer die groessten Sprachgemeinschaften in Deutschland,
u. a. Kurdisch (Kurmanci), Bulgarisch, Kroatisch/Serbisch/Bosnisch,
Albanisch, Italienisch, Griechisch, Spanisch, Vietnamesisch, Hindi, Urdu,
Paschtu, Tigrinya, Somali, Chinesisch. Liste nach Groesse der Gemeinschaft
in Deutschland sortiert.

Ausserdem: Sprache bekommt ein rtl-Flag. Arabisch und Farsi wurden bisher
linksbuendig dargestellt, was bei diesen Schriften falsch ist — jetzt
laufen Kernaussage, Erklaerung, To-dos und Fachbegriff-Erklaerungen bei
ar/fa/ur/ps von rechts nach links (der deutsche Fachbegriff bleibt links).

Neuer Test sprachen.test.ts schuetzt vor doppelten Codes (die wuerden den
Uebersetzungs-Cache ueberschreiben). 35 Tests gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 15:13:59 +02:00
JUSNandClaude Opus 5 8dc9074691 Stripe-Fehlermeldung wieder nutzerfreundlich (Diagnose entfernt)
Der technische Stripe-Grund geht nur noch ins Worker-Log, nicht an den
Nutzer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 14:36:03 +02:00
JUSNandClaude Opus 5 a5e1a7d70b Fehlermeldung: Auth-/Konfigfehler nicht dem Foto anlasten
401/403 vom KI-Dienst sagte bisher 'machen Sie ein besseres Foto'. Jetzt
eigener Zweig (ki_konfig) mit ehrlicher Meldung.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 23:47:47 +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 874ba31344 SEO: 4 neue Ratgeber-Artikel (verstehen, uebersetzen, organisieren, antworten)
Gezielte Keyword-Seiten mit Title/H1/Meta/FAQ-Schema/Canonical, in
Ratgeber-Hub, Sitemap und (2 staerkste) auf der Startseite verlinkt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-19 00:12:19 +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 1f3aad7e62 Startseite: Guthaben-Kauf direkt oben (Preise + Stripe-Checkout)
Neue Kauf-Sektion #kaufen gleich unter dem Hero (Pakete 5/15 Analysen,
Pflicht-Einwilligung, POST /kaufen -> Stripe). Hero-CTA 'Guthaben kaufen'.
Rueckkehr/Aktivierung laeuft wie gehabt ueber /demo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 19:56:26 +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 7440d35efb Web-Bezahlung Backend: Credit-Guthaben per Stripe (Phase 1)
- /kaufen: Stripe-Checkout-Session (REST, kein SDK)
- /kauf-status: nach Rueckkehr Zahlung pruefen -> Guthaben aktivieren ->
  signiertes Wallet-Token (HMAC) zurueckgeben
- /stripe-webhook: Signatur pruefen -> Guthaben aktivieren (idempotent) ->
  Wiederherstellungs-Link per Brevo mailen
- demoHandler: nimmt optional walletToken; gueltiges Guthaben umgeht die
  Gratis-Grenzen, wird nach Erfolg um 1 verringert
- neue Secrets: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET,
  TOKEN_SIGNING_SECRET, BREVO_API_KEY; PAKETE-Mapping (Price-ID->Credits,
  echte IDs noch einzutragen)

Typecheck gruen. Noch nicht deployed (wartet auf Stripe-Einrichtung).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-17 14:34:38 +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
JUSNandClaude Opus 4.8 b2336d0594 SEO-Aufraeumung Kopfbereich: kaputte/wirkungslose Meta-Tags entfernt
- kaputten description/robots-Merge repariert -> saubere getrennte Tags
- Platzhalter-Tags mit '...' raus (msvalidate/Bing, apple-app-site-association,
  app-links) - Bing war nie geplant
- erfundene, von Google ignorierte Tags raus (target-audience, topics,
  target-organizations, problem-statement, accessibility)
- Verweise auf fehlende Dateien raus (manifest.json, apple-touch-icon.png -> 404)
- BEHALTEN: Titel, Description, sauberer robots, canonical, hreflang, OG,
  FAQ-Schema, theme-color, Google-Verifizierung
- ausserdem: Ratgeber-Links auf der Startseite absolut (/ratgeber/...)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-12 09:46:28 +02:00
JUSNandClaude Opus 4.8 d90c5beff3 Startseite: sichtbarer Ratgeber-Abschnitt (Paragraf 7)
- 4 Ratgeber-Artikel als anklickbare Karten direkt auf der Startseite
  (statt nur Fusszeilen-Link) + 'Alle Ratgeber ansehen'
- hilft Besuchern (Auffindbarkeit) und interner Verlinkung (SEO)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 23:52:36 +02:00
JUSNandClaude Opus 4.8 2012e124d3 App Phase 2: Antwort-Assistent als 3-Schritte-Assistent (Design-Layout)
- Fortschrittsbalken + 'Schritt X von 3'
- Schritt 1: Antwort-Art als Karten (Icon + Beschreibung, 'Empfohlen'-Tag
  fuer die vom Brief vorgeschlagenen Typen)
- Schritt 2: optionale Angaben + Info-Box (Aktenzeichen/Behoerde kommen
  automatisch aus dem Brief), dann KI-Entwurf
- Schritt 3: Entwurf pruefen/bearbeiten + PDF-Export + Teilen
- alle Funktionen erhalten (generiereAntwort, sichern, PDF, Teilen);
  bei vorhandenem Entwurf Start direkt in Schritt 3
- warme Design-Farben durchs zentrale Theme

Typecheck + 30 Tests gruen. Visuelle Pruefung (Analyse + Antwort) im
Simulator steht noch aus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 23:29:53 +02:00
JUSNandClaude Opus 4.8 e401bc8d72 SEO: Ratgeber komplett (4 Artikel) - Jobcenter, Finanzamt, Auslaenderbehoerde, Widerspruch
- 3 weitere Artikel im Muster-Stil: Steuerbescheid/Einspruch,
  Auslaenderbehoerde/Aufenthaltstitel (mit Uebersetzungs-Hinweis),
  Widerspruch (mit Muster-Text zum Abschreiben)
- je FAQPage-Schema, saubere URL, CTA zur Demo, Rechtshinweis, Breadcrumb
- Hub-Seite verlinkt alle 4; alle in sitemap.xml
- ehrlicher, hilfreicher Inhalt in einfacher Sprache (A2/B1)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 23:27:26 +02:00
JUSNandClaude Opus 4.8 18a1480769 SEO: Ratgeber-Bereich gestartet + Meta-Aufraeumung
- Neuer Ratgeber (/ratgeber/): Hub-Seite + erster Artikel
  'Mitwirkungsaufforderung vom Jobcenter' in einfacher Sprache,
  mit FAQPage-Schema, sauberer URL, CTA zur Demo, Rechtshinweis
- Von Startseite verlinkt (Fusszeile) + in sitemap.xml
- index.html: wirkungsloser keywords-Tag entfernt, Beschreibung auf
  138 Zeichen gekuerzt (Google schnitt sie sonst ab)

Ziel: eigene Seiten fuer konkrete Suchfragen (Jobcenter, Finanzamt,
Auslaenderbehoerde) statt nur einer Landingpage.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 23:03:12 +02:00
JUSNandClaude Opus 4.8 8bd6bf2dce Aufraeumen: ungenutzte Google-Verification-HTML-Dateien entfernt
Verifizierung laeuft ueber den Meta-Tag in webseite/index.html (jetzt live
deployed). Die HTML-Datei-Methode funktioniert auf Cloudflare Pages nicht
(unbekannte Pfade liefern die Startseite als Fallback), daher entfernt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 22:44:32 +02:00
JUSN f3dc04d2f3 Update SEO and verification meta tags 2026-08-10 17:39:53 +02:00
Justin07012005 2c8ed14094 Add Google Search Console verification meta tag with correct content 2026-08-09 23:45:49 +02:00
Justin07012005 1bf661d70c Add new Google Search Console verification file 2026-08-09 23:38:38 +02:00
Justin07012005 f98eb0aaa2 Fix Google Search Console verification file - use exact content format 2026-08-09 23:32:40 +02:00
Justin07012005 1a5185501d Fix Google Search Console verification file - correct HTML format 2026-08-09 23:26:08 +02:00
Justin07012005 663b97da2b Add Google Search Console verification file 2026-08-09 23:24:35 +02:00
JUSN ff568f7499 Meta Tags passend zur seite 2026-08-09 23:11:55 +02:00
JUSN 523bf91e06 first commit 2026-08-09 22:40:51 +02:00
JUSN 715b8b8848 Initial commit 2026-08-09 22:37:25 +02:00
JUSNandClaude Opus 4.8 779261fbad Design: warme Palette aus dem Entwurf (Beige/Gold/Tinte) statt iOS-Blau
Korrektur zur Rueckmeldung des Nutzers: der Lesbarkeits-Einwand galt nur der
duennen Serifenschrift, nicht den Farben. Die warmen Design-Farben sind gut
lesbar und vereinheitlichen App + Website.

- theme.ts: Papier-Beige-Grund, warme Karten, Gold-Akzent (#B68235) fuer
  Icons/Tabs/Rahmen, dunkles Bronze (#7D5411, neu: primaerFuellung) als
  Fuellung gefuellter Buttons (weisse Schrift kontrastreich), warme
  Ampel-Toene (Backstein/Bronze/Salbei), warme Trennlinien/Graustufen
- GrossButton: Fuellung + Sekundaer-Text auf primaerFuellung (Kontrast)
- FAB-Scan-Knopf auf Bronze
- FristenScreen: ueberfaellige Zeilen zeigen 'faellig' statt 'Tage'

Im Simulator geprueft: Fristen-Start + Scan-Screen in warmen Farben, gut
lesbar. Typecheck + 30 Tests gruen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 21:29:19 +02:00
JUSNandClaude Opus 4.8 ed627bc10e App-Redesign Phase 1: Fristen-Start + Tab-Leiste (Struktur aus Postklar-Design)
Uebernimmt den Aufbau des Claude-Design-Entwurfs, umgesetzt im bestehenden
lesbaren iOS-Look (System-Schrift, iOS-Blau) statt der Serifenschrift.

- Neue untere Tab-Leiste: Fristen - Scannen (erhabener Knopf) - Archiv
  (@react-navigation/bottom-tabs; Root-Stack mit Detail-Screens darueber)
- FristenScreen (neuer Start): Briefe nach Dringlichkeit statt Datum,
  naechste Frist gross mit Countdown, weitere Fristen, Info-Briefe,
  Datenschutz-Hinweis; nutzt echte Archivdaten
- ArchivScreen: Suche + Behoerden-Filter-Chips (aus echten Absendern),
  uebernimmt die Listenrolle vom alten Start
- ampel.ts: naechsteFrist() + formatiereLangDatum() (Countdown/Sortierung)
- Ikone.tsx: uhr, archiv, schloss, lupe, pfeilLinks ergaenzt
- alten HomeScreen entfernt; types: HauptTabParamList, Root 'Tabs'

Typecheck gruen, 30 Tests gruen. Visuelle Pruefung im Simulator steht aus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 21:06:31 +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 Opus 4.8 2f770ebfad Startseite: Demo und Warteliste als gleichwertige Knoepfe (Mischung)
- Warteliste nicht mehr nur Textlink, sondern zweiter Knopf (heller,
  umrandeter Sekundaer-Stil .cta-sek) neben dem Demo-Knopf
- Beide Wege mit eigenem Nutzen benannt: Testen (eigener Brief, kein Konto)
  / Warteliste (5 Gratis-Analysen zum Start)
- Bald-im-App-Store-Stempel auf eigene Zeile

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 13:17:56 +02:00
JUSNandClaude Opus 4.8 5557b26364 Startseite: Web-Demo zur Haupt-Handlung machen
- Hero-Knopf ist jetzt die Demo ('Brief testen — 2x gratis', groesser),
  Warteliste rueckt zum sekundaeren Textlink
- Subline: 'Mit Ihrem eigenen Brief, kein Konto, sofort im Browser'
- Zusaetzliche Probier-Box direkt nach dem Vorher/Nachher-Beispiel
  ('Genau das — mit Ihrem Brief') fuer den zweiten Impuls

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 13:12:55 +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
JUSNandClaude Fable 5 02523b0467 SEO Quick Wins 1-5: Social-Vorschau, Title, FAQ-Schema, Sitemap
- Open-Graph-Tags + Vorschaubild (1200x630, Papier-Design) auf allen
  7 Sprachseiten, lokalisierte og:title/description je Sprache
- Title-Tag mit Suchwort vorn: 'Behördenbriefe einfach erklärt – per Foto'
- Meta-Description gestrafft (146 Zeichen, mit Handlungsaufruf)
- FAQPage-Schema (JSON-LD) mit 6 Fragen
- 2 neue FAQ-Einträge (Long-Tail: Jobcenter, Ausländerbehörde, Sprachen)
- canonical + hreflang x-default auf allen Seiten
- robots.txt, sitemap.xml, favicon.svg

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 22:24:37 +02:00
JUSNandClaude Opus 4.8 78d8c6246a Marketing: Prompts + Anleitung für KI-Werbevideo
- App-Beschreibung als wiederverwendbarer Prompt-Block (EN/DE)
- 3 Szenen-Prompts (Problem/Lösung/Erleichterung) + Zielgruppen-Varianten
- App-Szene bewusst als echte Bildschirmaufnahme, nicht KI-generiert
- Texteinblendungen, Formate, Tool-Übersicht

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 09:27:00 +02:00
JUSNandClaude Fable 5 30702677b6 Marketing: fertige E-Mails für Diakonie Donnersbergkreis + Caritas KL
- Diakonie-Version: Zielgruppe breiter (nicht nur Migration)
- Caritas-Version: Migrationsfokus, Adresse Engelsgasse recherchiert
- Status-Tabelle zum Nachfassen ergänzt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:41:07 +02:00
JUSNandClaude Fable 5 24d44f3d69 Warteliste: echtes Brevo-Anmeldeformular statt Mailto-Button
- E-Mail-Feld + Knopf im Papier-Design auf allen 7 Landingpages
  (DE/EN/TR/AR/UK/RU/PL), lokalisierte Platzhalter/Button-Texte
- POST an Brevo (Double-Opt-in aktiv), Honeypot gegen Spam
- Besucher können sich jetzt mit 2 Klicks eintragen statt eine Mail
  abzuschicken — deutlich niedrigere Hürde
- DE-Bonustext präzisiert: Code kommt per Mail, sobald die App fertig ist

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:26:50 +02:00