Marktplatz für gebrauchte Fahrzeugteile · Meilensteine 1–7 stehen · Stand 16. September 2026
Zum Ausprobieren ohne Registrierung. Zwei Demo-Konten sind
angelegt, beide mit dem Passwort ironparts-demo:
zweiradteile-nord@demo.ironparts.invalid — Hamburg, 4 Inserateschrauberhof-sued@demo.ironparts.invalid — München, 4 InserateDie Konten und ihre acht Inserate sind erfunden und jederzeit rückstandslos
entfernbar (npx tsx scripts/demo-daten.mts --entfernen). Die Bilder
sind bewusst als Platzhalter erkennbar — ohne freigeschaltetes R2 gibt es
keinen Bildupload, und ein echtes Produktfoto würde vortäuschen, dass er läuft.
Fahrzeugtyp → Marke → Modell → Baujahr, auf jeder Seite ganz oben. Die Auswahl bleibt in der Sitzung. Probier Motorrad → Yamaha → MT-07 → 2018–2020.
„Passt zu deinem Fahrzeug“ (belegt), „Passt vermutlich“ (mit Prüfhinweis), „Weitere Treffer“ (Volltext, ohne Fahrzeugbezug). Kein Inserat steht in zwei Blöcken.
Auf der Inseratsseite steht „vom Verkäufer bestätigt“ oder „vermutet“ — nie eine Zusage, die kein Fitment-Eintrag deckt.
Registrierung mit E-Mail-Bestätigung, Anmeldung, Profil, eigene Inserate verwalten, Gespräche, Bewertungen, Meldefunktion.
Unleserliche Stellen bleiben als ? stehen und werden nie
ergänzt — siehe die Bremsscheibe mit 1WS-F581T-00 und den
Scheinwerfer mit B4C-84?00-00.
Airbagmodule, Gurtstraffer, pyrotechnische Batterietrenner und die Airbagweste lassen sich nicht einstellen. 27 der 95 Kategorien sind als sicherheitsrelevant markiert, 5 sind gesperrt.
| Baustein | Stand | Einzelheiten |
|---|---|---|
| Worker | läuft | ironparts auf der Subdomain ironparts.workers.dev, per API angelegt |
| Datenbank | läuft | PostgreSQL 17.6 bei Supabase, Region eu-west-1 — 16 Tabellen, 12 CHECK-Bedingungen, 4 Migrationen |
| Stammdaten | geladen | 28 Fahrzeuge, 95 Kategorien, 8.298 Postleitzahlen mit Koordinaten |
| Hyperdrive | läuft | Verbindungs-Pool vor dem Supabase-Pooler (Session-Modus, Port 5432) |
| Datenbankrolle | angelegt | ironparts_app mit eigenem Passwort — das postgres-Passwort blieb unangetastet |
| Geheimnisse | gesetzt | APP_GEHEIMNIS, S3_ZUGRIFFSSCHLUESSEL, S3_GEHEIMSCHLUESSEL |
| R2 (Bilder) | blockiert | Für das Konto nicht freigeschaltet — die API antwortet mit 10042. Nur im Dashboard lösbar, siehe unten. |
| E-Mail-Versand | Ersatz | Kein Resend-Schlüssel vorhanden. Bestätigungsmails gehen ins Worker-Log statt in ein Postfach. |
| KI-Vorbefüllung | aus | KI_ANBIETER="aus" — ohne Schlüssel erscheint der Vorschlagsknopf gar nicht erst. |
16 Prüfungen laufen gegen die deployte Instanz grün
(npx tsx e2e/live-vorschau.mts): Startseite, Fahrzeugleiste,
Anmeldung mit Demo-Konto, eigene Inserate, Inseratsseite mit Preis, Passung
und Teilenummer, Profil, alle vier Rechtstexte, keine Schlüssel im
ausgelieferten Browser-JavaScript, keine JavaScript-Laufzeitfehler.
Die drei Suchblöcke wurden einzeln gegen die Live-Instanz nachgemessen: Bei gewählter MT-07 2018–2020 stehen Bremsscheibe und Scheinwerfer in Block 1, das Kettenkit in Block 2, und Spiegelpaar, Stahlflex-Leitung und Auspuff landen in Block 3 — ohne Überschneidung.
Die 214 Prüfungen der sieben Meilenstein-Suiten brauchen dagegen eine direkte Postgres-Verbindung, um sich ihre Testdaten selbst einzurichten. Die gibt es in dieser Umgebung nicht; gelaufen sind sie zuletzt in der Entwicklungsumgebung.
Beides hängt am Konto, nicht am Token — es gibt dafür keinen API-Weg.
npx wrangler r2 bucket create ironparts-bilder, in
wrangler.jsonc die r2_buckets-Bindung wieder
einkommentieren, S3_OEFFENTLICHE_BASIS auf die öffentliche
Bucket-Adresse setzen und neu deployen. Erst dann funktioniert der
Bildupload — und damit das Einstellen eigener Inserate, denn mindestens
ein Foto ist Pflicht.npx wrangler secret put MAIL_HTTP_SCHLUESSEL und
MAIL_TRANSPORT in wrangler.jsonc zurück auf
"http". Ohne echten Versand kann sich niemand von außen
registrieren, weil die Adresse bestätigt werden muss.workers.dev-Adresse. Sobald eine Domain da ist, kommt sie
als custom_domain in wrangler.jsonc, und
APP_URL zieht nach.