From f0708049d1248fc915e6fd24770bcbff2dc92516 Mon Sep 17 00:00:00 2001 From: Jan Wagner Date: Sun, 16 Aug 2026 01:02:31 +0200 Subject: [PATCH] feat(portfolio): expand project stories and services --- README.md | 6 ++- src/app/layout.tsx | 4 +- src/app/page.tsx | 111 +++++++++++++++++++++++++++++++++------------ 3 files changed, 88 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index e215bc4..71ef06a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +# w-make.com + +Portfolio von Jan Wagner für industrielle Softwareentwicklung, Systems Thinking und Glass Technology. + +Die Startseite stellt veröffentlichbare Projekte und die dahinterliegenden Engineering-Entscheidungen vor. Inhalte liegen bewusst noch direkt in `src/app/page.tsx`: Ein CMS oder eigene Case-Study-Routen kommen erst hinzu, wenn mehrere freigegebene Langform-Projekte vorhanden sind. ## Getting Started diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 277f08a..fcf9629 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -13,8 +13,8 @@ const geistMono = Geist_Mono({ }); export const metadata: Metadata = { - title: "w-make.com - Engineering Reliability", - description: "w-make.com Portfolio und Showroom für industrielle Softwareentwicklung, Batchmaker und die Affine App.", + title: "Jan Wagner — Software für anspruchsvolle Prozesse", + description: "Portfolio von Jan Wagner: industrielle Software, Full-Stack Engineering, AI-Tooling und Glass Technology.", }; export default function RootLayout({ children }: LayoutProps<"/">) { diff --git a/src/app/page.tsx b/src/app/page.tsx index 330db0b..2936630 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,36 +1,67 @@ -const projects = [ +type Project = { + number: string; + label: string; + title: string; + summary: string; + details: string; + role: string; + stack: string; + status: string; + href: string; + cta: string; +}; + +const projects: Project[] = [ { - label: "Industrie-Software", + number: "01", + label: "Industrie-Software · Produktentwicklung", title: "W-Make Batch", - text: "Eine durchgängige Batchmanagement-Lösung für die Behälterglas-Produktion — von Satzzettel und Gemengebuch bis Silo-Management, Schichtprotokoll und Berechnung.", - facts: "Node.js · SQLite · Web Components · E2E-Tests", + summary: "Batchmanagement für die Behälterglas-Produktion — vom Satzzettel bis zum Tagesprotokoll.", + details: "Das System bildet eine reale Produktionskette ab: Rezepte, Materialverbrauch, Silos, Schichten und Berechnungen bleiben fachlich nachvollziehbar verbunden. Der Schwerpunkt liegt nicht auf möglichst vielen Screens, sondern auf sicheren Zuständen und belastbaren Buchungen.", + role: "Domänenmodell, Full-Stack-Entwicklung und technische Qualität", + stack: "Node.js · Express · SQLite · Web Components · native Tests · Playwright", + status: "öffentliche Produkt-Demo", href: "https://batch.w-make.com", cta: "Produkt-Showroom öffnen", }, { - label: "Produktentwicklung", - title: "Digitale Prozesse, die den Betrieb verstehen", - text: "Ich verbinde Domänenwissen aus der Glasindustrie mit sauberer Softwarearchitektur. Das Ergebnis sind Systeme, die fachlich belastbar und im Alltag nutzbar sind.", - facts: "Fachlichkeit · Datenintegrität · Wartbarkeit", + number: "02", + label: "AI Engineering · Tooling", + title: "Hermes Tools", + summary: "Werkzeuge, die mehrere AI-Agents, Projekte und technische Arbeitsabläufe zuverlässig verbinden.", + details: "Hier geht es um die unsichtbare Schicht hinter produktiver AI-Arbeit: klare Delegationsverträge, gemeinsame Kontext-Schnittstellen, Registry-Logik und nachvollziehbare Übergaben. Gute Automatisierung braucht dabei genauso klare Grenzen wie gute Fachsoftware.", + role: "Architektur, Python-Tooling und Integrationsdesign", + stack: "Python · MCP · APIs · CLI-Workflows · strukturierte Protokolle", + status: "laufendes Engineering-Projekt", href: "#arbeitsweise", - cta: "Arbeitsweise ansehen", + cta: "Entscheidungen ansehen", }, { - label: "Technische Systeme", - title: "Automatisierung mit klaren Grenzen", - text: "Von APIs und Datenmodellen bis zu Infrastruktur und Observability: Automatisierung wird dort eingesetzt, wo sie Risiken reduziert — nicht um Komplexität zu verstecken.", - facts: "Backend · Tooling · Betrieb", + number: "03", + label: "Domänenwissen · Systems Thinking", + title: "Glas-Technologie als Engineering-Vorteil", + summary: "Technische Software entsteht besser, wenn der Prozess nicht erst nachträglich erklärt werden muss.", + details: "Der Hintergrund in der Behälterglas-Produktion prägt die Art, wie Systeme entworfen werden: Materialflüsse, Messwerte, Zeitbezug und irreversible fachliche Entscheidungen werden als Teil der Architektur behandelt — nicht als Randnotiz im UI.", + role: "Domänenanalyse, Modellbildung und Übersetzung in Software", + stack: "Prozessverständnis · Datenmodelle · Berechnungen · Dokumentation", + status: "dauerhafter fachlicher Schwerpunkt", href: "#kontakt", - cta: "Projekt besprechen", + cta: "Ähnlichen Prozess besprechen", }, ]; const principles = [ ["Fachlichkeit zuerst", "Ich beginne beim realen Prozess, nicht beim Framework. Fachliche Regeln werden sichtbar, prüfbar und nachvollziehbar umgesetzt."], - ["Verlässliche Systeme", "Datenintegrität, sichere Zustände und verständliche Fehlerbehandlung sind keine Extras — sie sind die Grundlage."], + ["Verlässliche Zustände", "Buchungen, Migrationen und Fehlerpfade werden so entworfen, dass ein System auch unter realen Bedingungen verständlich bleibt."], ["Kleine, tragfähige Lösungen", "Keine Architektur um ihrer selbst willen. Erst die kleinste Lösung, die den Prozess dauerhaft besser macht."], ]; +const offers = [ + ["Prozessanalyse", "Bestehende Abläufe verstehen, Bruchstellen sichtbar machen und eine priorisierte technische Roadmap ableiten."], + ["Produkt- und Backend-Entwicklung", "Anwendungen entwickeln oder stabilisieren, bei denen Datenmodell und Geschäftslogik wichtiger sind als schnelle CRUD-Oberflächen."], + ["Technische Zusammenarbeit", "Architekturentscheidungen, Integrationen und gewachsenen Code gemeinsam in wartbare Systeme überführen."], +]; + export default function Home() { return (
@@ -38,7 +69,7 @@ export default function Home() {