Skip to content

17 – Public Website / Landing / Lösungen (Marketing)

Reifegrad: 🟡 funktional, CMS-abhängig · Schicht: WORK7_SURFACE=landing, src/app/{page,[slug],[locale],loesungen,solutions,resources}, src/lib/payload-cms.ts, src/lib/firecrawl/*, src/components/{marketing,resources}/*, src/app/api/contact/*

Zweck

Öffentliche Marketing-Website (Landingpages, Lösungen, Blog/Ressourcen, Kontaktformular), die über das landing-Surface desselben Codebestands ausgeliefert wird (siehe adr-0001-landing-app-domain-split).

Surface & Routing

  • Bei WORK7_SURFACE=landing liefert die App nur Marketing-Routen aus; App-Pfade werden auf app.work7.net umgeleitet (src/middleware.ts, src/lib/site-surface.ts).
  • Marketing-Routen: / (Startseite, seit 2026-07-02 konsolidiert aus dem statischen Prototyp, siehe feature-landing-consolidation), /kontakt (Cal.com + Demo-Konto), /loesungen + /loesungen/[gewerk] (hardcoded Gewerke-Seiten), /vergleiche/[slug], /hosting-sicherheit, /solutions (CMS), /resources (Ressourcen/Blog), /[slug] (CMS-Detailseiten), /[locale]/{about,blog} (lokalisiert), /impressum, /datenschutz (siehe 19-legal-impressum-datenschutz), sitemap.xml + robots.txt (Next-Metadata-Routen).
  • Erlaubte Landing-APIs: /api/contact, /api/health.

Content über Payload-CMS

  • Inhalte (Artikel, Landingpages, programmatische Seiten, FAQ) kommen aus einer externen Payload-CMS-Instanz (src/lib/payload-cms.ts): fetchResourceBySlug, fetchResourcesList, fetchSolutionBySlug etc.
  • Env: PAYLOAD_CMS_URL, PAYLOAD_CMS_API_KEY, USE_PAYLOAD_INSIGHTS=true (lokal über ngrok aus payload-seo-cms, Prod-Parität cms.laendletech.at, siehe src/README.md).
  • ISR: Detailseiten revalidate = 60. SEO-Metadaten (Title/Description/OG/Canonical/noindex) kommen aus den CMS-seo-Feldern.
  • Komponenten: src/components/resources/* (Shell, Cover-Image, Author-Byline), src/components/marketing/SiteNavbar.tsx.

Kontaktformular

  • POST /api/contact (Zod-validiert: Name, E-Mail, Branche, Interessen, Nachricht, Datenschutz-Zustimmung) → Versand per Microsoft Graph über no-reply@work7.net.
  • POST /api/contact/access-request – Zugangs-/Demo-Anfrage.

Tracking / SEO

Firecrawl

src/lib/firecrawl/client.ts – Web-Scraping; primär für die Impressum-Extraktion bei Kontakten genutzt (siehe 03-kontakte-crm), nicht für die öffentliche Site selbst.

Bekannte Befunde / offene Punkte

  • /solutions und /resources sind ohne erreichbares Payload-CMS leer (harte Laufzeit-Abhängigkeit). Für Dev: npm run seed:dev-golden-samples im payload-seo-cms.
  • Es existieren zwei Sprach-/Pfadwelten: /loesungen (de) und /solutions sowie ein [locale]-Segment (about/blog) – Routing-Strategie bei Bedarf vereinheitlichen.
  • customer_website-Feld (Migration 032) gehört zu Kontakten, nicht zur Marketing-Site.

Verwandte Notes

Work7 · Software für Handwerksbetriebe