feat(site): tighten proof, contact, and inquiry delivery

Lead with Batch on the home page, drop the product changelog, add a
domain note, and stop reporting success when SMTP fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jan Wagner
2026-08-16 11:12:40 +02:00
co-authored by Cursor
parent aa55c29dbf
commit 0482b780f4
23 changed files with 465 additions and 84 deletions
+5
View File
@@ -17,6 +17,7 @@ export type LocalizedProject = {
label: string;
title: string;
summary: string;
stance: string;
stack: string;
role: string;
situation: string;
@@ -42,6 +43,7 @@ const projects: Record<ProjectSlug, { number: string; href?: string; images: Pro
label: "Industrie-Software · Produktentwicklung",
title: "W-Make Batch",
summary: "Batchmanagement für die Behälterglas-Produktion — vom Satzzettel bis zum Tagesprotokoll.",
stance: "Das Produktionsprodukt. Eine öffentliche Demo zeigt den Ablauf, nicht den Kundenstand.",
stack: "Node.js · Express · SQLite · Web Components · native Tests · Playwright",
role: "Domänenmodell, Full-Stack-Entwicklung und technische Qualität.",
situation: "Ein Produktionsprozess lebt von Rezepten, Materialverbrauch, Silos, Schichten und Berechnungen. Wird das als lose Sammlung von Masken gebaut, gehen fachliche Zusammenhänge verloren — und Buchungen werden zu editierbaren Tabellenzeilen.",
@@ -64,6 +66,7 @@ const projects: Record<ProjectSlug, { number: string; href?: string; images: Pro
label: "Industrial software · product development",
title: "W-Make Batch",
summary: "Batch management for container-glass production — from the batch ticket to the daily log.",
stance: "The production product. A public demo shows the flow, not a client installation.",
stack: "Node.js · Express · SQLite · Web Components · native tests · Playwright",
role: "Domain model, full-stack development, and technical quality.",
situation: "A production process lives on recipes, material use, silos, shifts, and calculations. Built as a loose set of screens, the domain relationships disappear — and bookings become editable table rows.",
@@ -94,6 +97,7 @@ const projects: Record<ProjectSlug, { number: string; href?: string; images: Pro
label: "Standalone · Recipe Engineering",
title: "Batchmaker Studio",
summary: "Schlankes Recipe-Studio für Rezepte, Rohstoffe, Satzzettel und Glaschemie.",
stance: "Die Werkbank am Schreibtisch. Derselbe Fachkern, bewusst ohne Silos, Schichten und laufende Buchungen.",
stack: "Node.js · Express · node:sqlite · Vanilla JS · Vite · native Tests",
role: "Produktarchitektur, Full-Stack-Entwicklung und Calculation Engine.",
situation: "Rezeptarbeit braucht denselben fachlichen Kern wie die Produktion — aber nicht Silos, Schichten und laufende Buchungen. Ein volles Betriebssystem ist für die Entwicklung am Schreibtisch zu schwer.",
@@ -116,6 +120,7 @@ const projects: Record<ProjectSlug, { number: string; href?: string; images: Pro
label: "Standalone · recipe engineering",
title: "Batchmaker Studio",
summary: "A lean recipe studio for recipes, raw materials, batch tickets, and glass chemistry.",
stance: "The desk-side workbench. The same domain core, deliberately without silos, shifts, and live bookings.",
stack: "Node.js · Express · node:sqlite · Vanilla JS · Vite · native tests",
role: "Product architecture, full-stack development, and calculation engine.",
situation: "Recipe work needs the same domain core as production — but not silos, shifts, and live bookings. A full operations system is too heavy for desk-side development.",