Produktseite ausgebaut: Unterseiten und Bildschirmfotos aus der App

Neue öffentliche Routen unter src/app/(marketing): Übersicht /funktionen, sechs Detailseiten
(planung, baustelle, zeiterfassung, berichte, abrechnung, lotse), /sicherheit und /preise,
gemeinsames Gerüst mit Kopf- und Fußzeile.

scripts/marketing-shots.ts nimmt die Bilder direkt aus der laufenden App auf (Playwright über
den installierten Chrome, Session wie im Smoke-Test, ohne Passworteingabe); 14 Aufnahmen in
public/marketing ersetzen die gezeichneten Vorschauen.

Plantafel: „Vorschläge" hängt jetzt als Fußzeile in der Auftragskarte statt frei zwischen zwei
Karten zu stehen (neue Prop footer an OrderCard, Schlüssel unplanned.suggestionsFor).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-17 13:35:04 +02:00
co-authored by Claude Opus 5
parent 31343d329a
commit 4815a957b0
32 changed files with 951 additions and 188 deletions
+145 -14
View File
@@ -23,20 +23,7 @@
"ctaSecondary": "Funktionen ansehen",
"bullet1": "In wenigen Minuten eingerichtet, ohne Installation",
"bullet2": "Offline nutzbar — Eingaben gehen nie verloren",
"bullet3": "Keine Zahlungsdaten für den Test nötig",
"mockup": {
"label": "Beispielansicht der Plantafel",
"board": "Plantafel",
"today": "Heute",
"crewNorth": "Team Nord",
"crewSouth": "Team Süd",
"job1": "Heizungswartung",
"job2": "Thermostatventile",
"job3": "Rückstauklappe",
"load": "7,5 h / 8 h",
"conflict": "Überbucht",
"live": "In Arbeit"
}
"bullet3": "Keine Zahlungsdaten für den Test nötig"
},
"pillars": {
"title": "Was Craftvia zusammenhält",
@@ -267,5 +254,149 @@
"privacy": "Datenschutz",
"imprint": "Impressum",
"rights": "Alle Rechte vorbehalten."
},
"pages": {
"planung": {
"title": "Planung und Plantafel",
"lead": "Die Woche im Blick: Aufträge auf Kolonnen verteilen, Auslastung sehen, Konflikte erkennen, bevor der Kunde anruft.",
"p1": "Aufträge per Maus auf Team und Tag ziehen — oder über „Einplanen …“ ganz ohne Maus",
"p2": "Auslastung je Kolonne und Tag in Prozent, gemessen am Kolonnentag",
"p3": "Meldung bei Überbuchung, Überschneidung und unvollständiger Kolonne",
"p4": "Ungeplante Aufträge in einer eigenen Spalte, mit Vorschlägen direkt an der Karte",
"p5": "Live-Lage zeigt, wer unterwegs ist, arbeitet oder Pause macht",
"shot1": "Plantafel mit fünf Tagen, Auslastung je Kolonne und markierten Konflikten",
"shot2": "Live-Lage als Kachelansicht: Kolonnen mit Status, Auftrag und Ort",
"c1title": "Kolonnen statt Einzelpersonen",
"c1text": "Ein Team fährt zusammen. Die Kapazität ist der Kolonnentag, nicht die Summe der Personenstunden.",
"c2title": "Früher fertig, sinnvoll genutzt",
"c2text": "Endet ein Einsatz früher, schlägt Craftvia Aufträge in der Nähe vor — vorziehen entscheidet der Mensch.",
"c3title": "Verzug sichtbar machen",
"c3text": "Läuft ein Einsatz aus dem Ruder, markiert die Tafel den Folgeauftrag als gefährdet."
},
"baustelle": {
"title": "Auf der Baustelle",
"lead": "Die mobile Ansicht führt durch den Einsatz: anfahren, arbeiten, dokumentieren, unterschreiben lassen — auch ohne Netz.",
"p1": "Große Flächen und klare Schritte, bedienbar mit Arbeitshandschuhen",
"p2": "Checkliste, Pflichtfotos und Material direkt am Auftrag",
"p3": "Offline nutzbar: Eingaben werden gespeichert und automatisch nachgesendet",
"p4": "Unterschrift des Kunden auf dem Display, PDF geht anschließend raus",
"p5": "Notdiensteinsätze in Minuten anlegen und später vervollständigen",
"shot1": "Tagesansicht des Monteurs mit laufender Zeiterfassung",
"shot2": "Auftrag mobil: Status, Checkliste, Material und Fotos an einer Stelle",
"c1title": "Kein Zettel mehr",
"c1text": "Was auf der Baustelle erfasst wird, steht sofort im Büro zur Verfügung.",
"c2title": "Pflichtangaben vor dem Abschluss",
"c2text": "Fehlende Fotos oder Unterschriften fallen vor Ort auf, nicht Tage später.",
"c3title": "Sync ohne Nachdenken",
"c3text": "Die App überträgt selbstständig, sobald wieder Verbindung besteht."
},
"zeiterfassung": {
"title": "Zeiterfassung",
"lead": "Start, Pause, Ende mit einem Tipp. Fahrzeit und Arbeitszeit getrennt, Nachträge nachvollziehbar.",
"p1": "Laufende Uhr auf jeder Seite sichtbar, „Für heute beenden“ mit einem Tipp",
"p2": "Automatischer Wechsel, wenn auf einem anderen Auftrag gestartet wird",
"p3": "Zeiten nachtragen für die letzten Tage — mit Begründung",
"p4": "Freigabe durch Teamleitung oder Backoffice; offene Einträge zählen nicht für die Abrechnung",
"p5": "Backoffice kann Zeiten für Mitarbeitende erfassen, protokolliert im Audit",
"shot1": "Meine Zeiten: Tagesübersicht mit Fahrt- und Arbeitszeit",
"shot2": "Freigabe im Büro: offene Zeiteinträge prüfen und bestätigen",
"c1title": "Ehrliche Stunden",
"c1text": "Erfasst wird beim Arbeiten, nicht abends aus dem Gedächtnis.",
"c2title": "Korrekturen bleiben sichtbar",
"c2text": "Jeder Nachtrag trägt Grund und Freigabe — sauber für Lohn und Nachkalkulation.",
"c3title": "Fahrzeit sauber getrennt",
"c3text": "Anfahrten zählen eigenständig und landen als Position in der Abrechnung."
},
"berichte": {
"title": "Berichte und Unterschrift",
"lead": "Der Leistungsnachweis entsteht auf der Baustelle — geprüft, unterschrieben und als PDF beim Kunden.",
"p1": "Bericht direkt am Auftrag, mit Vorlage je Auftragsart",
"p2": "Pflichtangaben und Pflichtfotos werden vor dem Einreichen geprüft",
"p3": "Unterschrift auf dem Display, alternativ „Kunde nicht angetroffen“ mit Grund",
"p4": "Freigabe im Büro, danach automatischer Versand als PDF",
"p5": "Jede Version bleibt erhalten, ältere werden als ersetzt gekennzeichnet",
"shot1": "Berichte im Büro: Status von eingereicht bis freigegeben",
"shot2": "Auftragsdetail mit Zeiten, Material, Fotos und Bericht",
"c1title": "Ein Nachweis, keine Sammlung",
"c1text": "Bericht, Fotos, Zeiten und Material hängen am selben Auftrag.",
"c2title": "Nachvollziehbar",
"c2text": "Wer eingereicht, geprüft und freigegeben hat, steht im Protokoll.",
"c3title": "Direkt beim Kunden",
"c3text": "Nach der Freigabe geht das PDF automatisch per Mail raus."
},
"abrechnung": {
"title": "Abrechnungsübersicht",
"lead": "Fertige Aufträge und erreichte Meilensteine laufen gesammelt auf — mit Zeiten, Material und Anfahrten für die Buchhaltung.",
"p1": "Abgeschlossene Aufträge, Meilensteine und freigegebene Tagesberichte an einer Stelle",
"p2": "Nur freigegebene Zeiten zählen; offene Einträge werden getrennt ausgewiesen",
"p3": "Anfahrten aus der Zeiterfassung, je Kolonne und Tag gezählt",
"p4": "Abrechnungsblatt als PDF, „Abgerechnet“ mit optionaler Rechnungsnummer",
"p5": "Stornieren nur mit Begründung; abgerechnete Positionen bleiben eindeutig zugeordnet",
"shot1": "Abrechnungsübersicht mit offenen und abgerechneten Einträgen",
"c1title": "Keine doppelte Abrechnung",
"c1text": "Jede Zeit und jedes Material gehört zu genau einem abgerechneten Abschnitt.",
"c2title": "Buchhaltung bleibt Buchhaltung",
"c2text": "Craftvia liefert die Grundlage — Preise, Steuern und Rechnungen macht Ihr System.",
"c3title": "Meilensteine statt Endabrechnung",
"c3text": "Bei langen Projekten wird abgerechnet, was erreicht ist."
},
"lotse": {
"title": "Lotse — der Assistent",
"lead": "Sagen, was war: Der Lotse ordnet zu, fragt nach, was fehlt, und schlägt Buchungen vor. Gespeichert wird erst nach Bestätigung.",
"p1": "Schreiben oder sprechen wie im Chat, auch mitten im Einsatz",
"p2": "Ordnet den Auftrag selbst zu — aus dem Kontext, der laufenden Uhr oder dem Tagesplan",
"p3": "Fragt fehlende Angaben nach, statt zu raten",
"p4": "Zeigt Aktionskarten für Status, Zeiten, Material und Notizen",
"p5": "Rechte, Pflichtangaben und Freigaben gelten unverändert",
"shot1": "Lotse-Chat auf dem Telefon: Eingabe per Text oder Sprache",
"c1title": "Bestätigen statt tippen",
"c1text": "Der Monteur prüft eine Karte und tippt einmal — statt vier Formulare auszufüllen.",
"c2title": "Nichts passiert heimlich",
"c2text": "Ohne Bestätigung wird nichts gebucht. Jede Buchung landet im Protokoll.",
"c3title": "Auch als Nachschlagewerk",
"c3text": "Fragen wie „Wo ist der Zugangscode?“ beantwortet der Lotse aus dem Auftrag."
}
},
"overview": {
"title": "Funktionen im Überblick",
"lead": "Craftvia deckt den ganzen Einsatz ab — vom eingehenden Auftrag bis zur Grundlage für die Rechnung. Jedes Modul lässt sich einzeln freischalten.",
"more": "Mehr erfahren"
},
"securityPage": {
"title": "Sicherheit und Datenschutz",
"lead": "Craftvia ist mandantenfähig gebaut. Jeder Betrieb sieht ausschließlich seine eigenen Daten — abgesichert bis in die Datenbank, nicht nur in der Oberfläche.",
"shot1": "Audit-Protokoll: jede schreibende Aktion mit Zeitpunkt, Person und Änderung",
"shot2": "Teams und Rollen: wer welche Aufträge sieht, entscheidet die Zuweisung",
"detailTitle": "Was das im Betrieb bedeutet",
"d1title": "Feldrollen sehen nur ihre Einsätze",
"d1text": "Monteure sehen die Aufträge ihrer Kolonne, nicht die Kundenliste des Betriebs.",
"d2title": "Rechte gelten am Server",
"d2text": "Jede Änderung wird serverseitig geprüft. Ausgeblendete Schaltflächen sind Komfort, keine Absicherung.",
"d3title": "Nachvollziehbar statt vertrauensselig",
"d3text": "Das Protokoll hält fest, wer was wann geändert hat — auch für die Buchhaltung."
},
"pricingPage": {
"title": "Testphase und Preise",
"lead": "Starten Sie mit einer Testphase und entscheiden Sie danach in Ruhe. Der Preis der Vollversion richtet sich nach der Betriebsgröße.",
"trialTitle": "Testphase",
"trialText": "Voller Funktionsumfang, Zeitraum selbst gewählt, keine Zahlungsdaten nötig. Nach Ablauf bleiben die Daten lesbar und lassen sich exportieren.",
"t1": "Bis zu 30 Tage, Enddatum frei wählbar",
"t2": "Mit Beispieldaten oder leer starten",
"t3": "Erinnerung vor Ablauf, Verlängerung jederzeit",
"fullTitle": "Vollversion",
"fullText": "Übernahme ohne Datenumzug: Der Testmandant wird umgestellt, alles bleibt erhalten.",
"f1": "Alle Module, unbegrenzte Aufträge",
"f2": "Preis nach Anzahl der Nutzer und Kolonnen",
"f3": "Angebot nach einem kurzen Gespräch",
"note": "Konkrete Preise nennen wir erst, wenn sie feststehen — hier steht bewusst keine Zahl, die später nicht stimmt."
},
"cta": {
"title": "Craftvia im eigenen Betrieb ausprobieren",
"text": "Testzugang einrichten, Beispieldaten laden und die erste Woche planen — in wenigen Minuten.",
"primary": "Kostenlos testen",
"secondary": "Alle Funktionen ansehen"
},
"shotFrame": {
"label": "Bildschirmfoto aus Craftvia"
}
}
+2 -1
View File
@@ -89,7 +89,8 @@
"noTeam": "ohne Team",
"noDate": "ohne Termin",
"noLocation": "ohne Ortsangabe",
"suggestions": "Vorschläge"
"suggestions": "Vorschläge",
"suggestionsFor": "Vorschläge für {number}"
},
"dialog": {
"title": "Auftrag einplanen",
+145 -14
View File
@@ -23,20 +23,7 @@
"ctaSecondary": "See the features",
"bullet1": "Set up in minutes, nothing to install",
"bullet2": "Works offline — entries are never lost",
"bullet3": "No payment details for the trial",
"mockup": {
"label": "Example of the scheduling board",
"board": "Scheduling board",
"today": "Today",
"crewNorth": "Crew North",
"crewSouth": "Crew South",
"job1": "Heating service",
"job2": "Thermostat valves",
"job3": "Backflow valve",
"load": "7.5 h / 8 h",
"conflict": "Overbooked",
"live": "Working"
}
"bullet3": "No payment details for the trial"
},
"pillars": {
"title": "What holds Craftvia together",
@@ -267,5 +254,149 @@
"privacy": "Privacy",
"imprint": "Imprint",
"rights": "All rights reserved."
},
"pages": {
"planung": {
"title": "Scheduling board",
"lead": "The week at a glance: distribute jobs across crews, see utilisation, spot conflicts before the customer calls.",
"p1": "Drag jobs onto a crew and a day — or schedule them entirely without a mouse",
"p2": "Utilisation per crew and day in percent, measured against the crew day",
"p3": "Warnings for overbooking, overlap and incomplete crews",
"p4": "Unplanned jobs in their own column, with suggestions attached to the card",
"p5": "The live view shows who is en route, working or on a break",
"shot1": "Scheduling board across five days with utilisation and marked conflicts",
"shot2": "Live situation as tiles: crews with status, job and place",
"c1title": "Crews, not individuals",
"c1text": "A crew travels together. Capacity is the crew day, not the sum of person-hours.",
"c2title": "Finished early, used well",
"c2text": "When a job ends early, Craftvia suggests nearby work — a person decides.",
"c3title": "Delays made visible",
"c3text": "If a job overruns, the board marks the following one as at risk."
},
"baustelle": {
"title": "On site",
"lead": "The mobile view guides through the job: drive, work, document, collect the signature — even without a connection.",
"p1": "Large targets and clear steps, usable with work gloves",
"p2": "Checklist, required photos and material right on the job",
"p3": "Works offline: entries are stored and sent automatically",
"p4": "The customer signs on screen, the PDF goes out afterwards",
"p5": "Create call-out jobs in minutes and complete them later",
"shot1": "The technician's day view with the running timer",
"shot2": "A job on the phone: status, checklist, material and photos in one place",
"c1title": "No more paper",
"c1text": "What is captured on site is immediately available in the office.",
"c2title": "Mandatory fields before sign-off",
"c2text": "Missing photos or signatures surface on site, not days later.",
"c3title": "Sync without thinking",
"c3text": "The app transfers on its own as soon as there is a connection."
},
"zeiterfassung": {
"title": "Time tracking",
"lead": "Start, pause, stop with one tap. Travel and work time separated, corrections traceable.",
"p1": "The running timer is visible on every page, with a one-tap \"finish for today\"",
"p2": "Automatic switch when work starts on another job",
"p3": "Add times for the last few days — with a reason",
"p4": "Approval by the crew lead or the office; pending entries never count for billing",
"p5": "The office can record times for staff, recorded in the audit trail",
"shot1": "My times: the day with travel and work time",
"shot2": "Approval in the office: review and confirm pending entries",
"c1title": "Honest hours",
"c1text": "Time is recorded while working, not from memory in the evening.",
"c2title": "Corrections stay visible",
"c2text": "Every correction carries a reason and an approval.",
"c3title": "Travel kept separate",
"c3text": "Trips count on their own and appear as a position in billing."
},
"berichte": {
"title": "Reports and signature",
"lead": "The service report is created on site — checked, signed and sent to the customer as a PDF.",
"p1": "The report sits on the job, with a template per job type",
"p2": "Mandatory fields and photos are checked before submission",
"p3": "Signature on screen, or \"customer not present\" with a reason",
"p4": "Approval in the office, then automatic dispatch as a PDF",
"p5": "Every version is kept; older ones are marked as superseded",
"shot1": "Reports in the office: from submitted to approved",
"shot2": "Job detail with times, material, photos and the report",
"c1title": "One record, not a collection",
"c1text": "Report, photos, times and material belong to the same job.",
"c2title": "Traceable",
"c2text": "Who submitted, checked and approved is in the audit trail.",
"c3title": "Straight to the customer",
"c3text": "After approval the PDF is e-mailed automatically."
},
"abrechnung": {
"title": "Billing overview",
"lead": "Completed jobs and reached milestones collect in one place — with times, material and trips for accounting.",
"p1": "Completed jobs, milestones and approved daily reports in one list",
"p2": "Only approved times count; pending entries are shown separately",
"p3": "Trips from time tracking, counted per crew and day",
"p4": "Billing sheet as a PDF, \"billed\" with an optional invoice number",
"p5": "Voiding needs a reason; billed positions stay clearly assigned",
"shot1": "Billing overview with open and billed records",
"c1title": "No double billing",
"c1text": "Every hour and every part belongs to exactly one billed section.",
"c2title": "Accounting stays accounting",
"c2text": "Craftvia provides the basis — prices, taxes and invoices stay in your system.",
"c3title": "Milestones instead of one final bill",
"c3text": "On long projects you bill what has been reached."
},
"lotse": {
"title": "Lotse — the assistant",
"lead": "Say what happened: Lotse maps it, asks what is missing and proposes bookings. Nothing is stored before you confirm.",
"p1": "Write or speak like in a chat, even mid-job",
"p2": "Maps the job itself — from context, the running timer or the day's plan",
"p3": "Asks for missing details instead of guessing",
"p4": "Shows action cards for status, times, material and notes",
"p5": "Permissions, mandatory fields and approvals still apply",
"shot1": "Lotse chat on the phone: input by text or voice",
"c1title": "Confirm instead of typing",
"c1text": "The technician checks a card and taps once — instead of filling four forms.",
"c2title": "Nothing happens quietly",
"c2text": "Without confirmation nothing is booked. Every booking lands in the audit trail.",
"c3title": "A reference too",
"c3text": "Questions like \"where is the access code?\" are answered from the job."
}
},
"overview": {
"title": "Features at a glance",
"lead": "Craftvia covers the whole job — from the incoming request to the basis for the invoice. Every module can be enabled on its own.",
"more": "Learn more"
},
"securityPage": {
"title": "Security and privacy",
"lead": "Craftvia is built multi-tenant. Every business sees only its own data — enforced down in the database, not just in the interface.",
"shot1": "Audit trail: every write with time, person and change",
"shot2": "Teams and roles: assignment decides who sees which jobs",
"detailTitle": "What that means day to day",
"d1title": "Field roles see only their jobs",
"d1text": "Technicians see their crew's jobs, not the company's customer list.",
"d2title": "Permissions are enforced on the server",
"d2text": "Every change is checked server-side. Hidden buttons are convenience, not security.",
"d3title": "Traceable, not trusting",
"d3text": "The trail records who changed what and when — useful for accounting too."
},
"pricingPage": {
"title": "Trial and pricing",
"lead": "Start with a trial and decide afterwards. The price of the full version depends on the size of your business.",
"trialTitle": "Trial",
"trialText": "Full functionality, period of your choice, no payment details. After it ends your data stays readable and exportable.",
"t1": "Up to 30 days, end date of your choice",
"t2": "Start with sample data or empty",
"t3": "Reminder before it ends, extension any time",
"fullTitle": "Full version",
"fullText": "Switch over without migrating data: the trial tenant is converted, everything is kept.",
"f1": "All modules, unlimited jobs",
"f2": "Priced by users and crews",
"f3": "A quote after a short conversation",
"note": "We name concrete prices once they are settled — deliberately no number here that would not hold later."
},
"cta": {
"title": "Try Craftvia in your own business",
"text": "Set up trial access, load sample data and plan the first week — in minutes.",
"primary": "Start free trial",
"secondary": "See all features"
},
"shotFrame": {
"label": "Screenshot from Craftvia"
}
}
+2 -1
View File
@@ -89,7 +89,8 @@
"noTeam": "no team",
"noDate": "no date",
"noLocation": "no location",
"suggestions": "Suggestions"
"suggestions": "Suggestions",
"suggestionsFor": "Suggestions for {number}"
},
"dialog": {
"title": "Schedule order",