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": "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"
}
}