Spec docs/superpowers/specs/2026-10-01-relaunch-design.md (wartet auf Freigabe), Karte aus Natural Earth (gemeinfrei) mit Punkt Falkenstein, 19 Portal-Aufnahmen mit erfundenen Demodaten, Regeln für Cloud-Sitzungen in CLAUDE.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.7 KiB
4.7 KiB
webklar.com
Website of WEBklar GbR (a small web agency in Winnweiler, Rhineland-Palatinate). Vite + React 18 + TypeScript + Tailwind + shadcn/ui, client-rendered SPA with React Router.
Current project: the relaunch. Read docs/superpowers/specs/2026-10-01-relaunch-design.md before any change. The material for it (Germany map, customer portal screenshots) is in docs/relaunch/.
Status: the spec is waiting for the owner's approval. Once it is approved, write an implementation plan with the superpowers:writing-plans skill and save it to docs/superpowers/plans/. Implement only after that.
Commands
npm install
npm run dev # local dev server
npm test # Vitest + Testing Library (must stay green)
npm run build # production build into dist/
npm run lint # ESLint (main already has old errors; add no new ones)
How this repository relates to the live site
- This GitHub repository is the workspace. Its
mainis not live. - webklar.com is built from a separate internal repository on the owner's server. Only the owner, or a session on that server, transfers an approved state there. Never try to deploy from here.
Rules
- Language: everything user-facing is German, in the polite form "Sie". Brand spelling is always "WEBklar". Write commit messages, PR texts and notes for the owner in German.
- The wording of the legal pages stays unchanged without the owner's explicit OK:
src/pages/AGB.tsx,Impressum.tsx,WartungsAbo.tsx,HostingAbo.tsx, and the privacy policy (the/datenschutzredirect to the customer portal).- For the new layout you may change their markup and CSS classes: remove their own header block, replace uppercase and old font/button classes.
- Keep their wording, order and structure.
- The tests in
src/test/abos.test.tsx,agb-haftung.test.tsxandagb-verguetung.test.tsxprotect them; never weaken or delete these three files. src/test/sofort-paket.test.tsxmay be adapted where it pins old copy or removed components. Keep its source-code scans against banned statements.
- No invented content:
- no numbers without a source (no "99,9 %", no project counters);
- no references without the customer's consent (AGB § 13);
- no stock or AI images of people;
- no promises of success (AGB § 2: no result is owed);
- SEO only as a separately ordered service;
- support after launch only through the subscriptions.
- Fixed facts:
- Phone: only 0176 23726355 (
tel:+4917623726355). E-mail: support@webklar.com. - Reply time: only "spätestens am nächsten Werktag".
- Servers: Hetzner in Falkenstein/Vogtland, Saxony. This applies only to the website and the customer portal. Never write "all data in Germany".
- Prices are final prices, small-business rule § 19 UStG, no VAT. Hosting-Abo 20 € per month, Wartungs-Abo 50 € per month, 12 months minimum term each. Extra work 100 € per hour in 15-minute steps, only after approval.
- Phone: only 0176 23726355 (
- Customer portal screenshots show only the invented demo customer "Bäckerei Sonnenschein". Never use real customer data.
- Privacy: no requests to third-party servers. Host fonts, images and scripts yourself; no Google Fonts, no CDNs, no tracking.
- Secrets: never commit them.
.envstays local;.env.exampleholds only public client IDs. - This repository may be public. Do not check in internal data: price calculations, customer names without consent, server details, logins.
- Before every push: run
npm test,npm run build, andnpm run lint(no new errors). For visual changes, put screenshots in the pull request: 1440 × 900 and 390 × 844, light and dark. - Work on branches and merge through pull requests. The relaunch branch is
relaunch. - Code style:
- Match the existing code.
- German comments where the code already uses them.
- Only
transform/opacityanimations, always behindprefers-reduced-motion. The spec section 8.4 lists the only exceptions: map outline drawing, a 3× pulse around the map dot, the rotating hero headline (one pass, with a pause button), and the scroll-linked word highlight. - Hover effects only for
(hover: hover) and (pointer: fine).
Structure (short)
src/routes.tsx: all routes. Subpages share one layout with the footer (SubpageLayout).src/App.tsx: providers,ScrollToTop. It jumps to anchors such as/#leistungenonce the fonts have loaded.src/hooks/use-page-meta.ts: title and description per route.src/pages/: pages.src/components/: sections and parts.src/components/ui/: shadcn.src/test/: tests.sofort-paket.test.tsxholds source-code scans against banned statements: the old phone number, Unsplash, "24 Stunden", "99,9", success promises. Keep these scans when sections are removed.