PaketJet — P2P-Fracht- und Frachtmarktplatz
Ein Mobile-First-Logistikmarktplatz, auf dem Spediteure Routen und freie Kapazitäten veröffentlichen, während Absender geeignete Transportoptionen finden und den Kontaktzugang freischalten.

Beschreibung
Ein Mobile-First-Logistikmarktplatz, auf dem Spediteure Routen und freie Kapazitäten veröffentlichen, während Absender geeignete Transportoptionen finden und den Kontaktzugang freischalten.
Fallstudie
Herausforderung
PaketJet war mit einem Modell aus Buchungen und Wallet gestartet, das Geschäft hatte sich jedoch zum Verkauf von Kontaktzugängen entwickelt. Code, Texte und Schemas beschrieben noch das alte Modell, öffentliche Inseratsdaten enthielten zu viel, der mobile Erstaufruf war langsam und die Adresseingabe auf eine Städteliste beschränkt.
Vorgehen
Wir haben das Projekt als umfassende Erneuerung behandelt: Schreibpfade des alten Modells geschlossen und die Historie archiviert, Datenschutz- und Sitzungsprüfungen verschärft sowie Zahlungen und Guthabenverbrauch atomar gemacht. Die Oberfläche wurde neu gestaltet, die Adress- und Kartenkomponente als gemeinsames Paket gebaut und die SEO- und GEO-Schicht für das neue Modell neu geschrieben.
Ergebnis
paketjet.com ist mit neuem Design, schrittweisem Inseratsformular und adressgenauer Suche online. In mobilen Labormessungen sank der LCP auf 0,73 Sekunden, und jede Auslieferung wurde mit automatisierten Tests, echten Browserabläufen und Live-Prüfungen dokumentiert.
Tools
Next.js 15, React 19, TypeScript, Fastify 5, Bun, MySQL 8, Drizzle ORM, Zod, Zustand, Tailwind CSS 4
Hauptfunktionen
Kostenlose Inserate für Transporteure, Kontaktzugang für Versender
Suche mit Autovervollständigung bis Dorf, Straße und Adresse
Erläuterte Alternativen aus derselben Provinz ohne exakten Treffer
Inserat in vier Schritten mit Prüfung und Freigabe
Routenkarte aus gespeicherten Koordinaten, nur bei Bedarf geladen
Einzelkauf oder Pakete mit 1, 5 oder 10 Zugangsguthaben
Atomarer Guthabenverbrauch, gegen Wiederholung und Race gesichert
Admin-Panel für Freigaben, Guthaben, Reklamationen und Support
Mobiler Labor-LCP von 5,6 s auf 0,73 s, CLS von 0,19 auf 0,002
Verwendete Technologien
Next.js 15
React 19
TypeScript
Fastify 5
Bun
MySQL 8
Drizzle ORM
Zod
Zustand
Tailwind CSS 4
Design-Highlights
Lavendel- und Hellblau-Flächen, dunkelblaue Titel, animierte Route
Animation und Video pausieren außerhalb des Sichtbereichs
1,2-Sekunden-Intro, einmal pro Tab, bei jeder Eingabe beendet
Layouts geprüft in hell/dunkel, 360–1440 px und 200 % Zoom
Barrierearmes Formular mit Tastaturfokus auf jedem Schritttitel
Details
PaketJet ist ein Marktplatz, auf dem Transporteure, die zwischen Städten unterwegs sind, ihre Routen und freien Kapazitäten anbieten, während Versender ein passendes Inserat finden und den Zugang zu den Kontaktdaten des Transporteurs erwerben. Transporteure inserieren kostenlos; Preis und Details des Transports vereinbaren die Parteien direkt miteinander. Die Plattform verspricht weder Sendungsverfolgung noch Treuhandzahlung oder Transportgarantie. Ihre Aufgabe ist es, den richtigen Versender mit dem richtigen Transporteur zusammenzubringen.
Ausgangslage und Anforderungen
Die erste Version von PaketJet ging mit einer Struktur nach dem Vorbild von Mitfahrplattformen online, mit Buchungen, Wallet, Bewertungen und Abonnements. Mit der Zeit wurde das Geschäftsmodell einfacher: Das eigentliche Produkt war der Zugang zu den Kontaktdaten eines Transporteurs sowie vorab erwerbbare Zugangsguthaben. Code, Texte und Schemas beschrieben jedoch weiterhin das alte Modell; die Startseite versprach Buchungen, und öffentliche Inseratsdaten enthielten mehr als nötig. Der erste Seitenaufruf auf Mobilgeräten war langsam, und die Adresseingabe hing an einer festen Städteliste.
Das Projekt wurde daher als Erneuerung statt als Feature-Entwicklung angegangen: das Geschäftsmodell in jeder Codeschicht korrekt abbilden, Datenschutz und Zahlungsablauf absichern, die Oberfläche neu gestalten und jeden Schritt mit Tests und in der Live-Umgebung prüfen.
Lösung und Umfang
Suche und Inserate
Die Startseite beginnt mit einem Suchformular (Von, Nach, Datum) und einer animierten Routenszene. Das Adressfeld ist an keine Städteliste gebunden: Vorschläge für Provinzen, Bezirke, Ortsteile, Dörfer und vollständige Adressen kommen aus derselben Komponente, und wenn nichts gefunden wird, kann die Adresse frei eingegeben werden. Start und Ziel lassen sich mit einem Klick tauschen. Gibt es für die genaue Adresse kein Inserat, werden Inserate aus derselben Provinz als erläuterte Alternativen gezeigt, unter Beibehaltung von Datum, Fahrzeug und Fahrtrichtung. Die Inseratsliste nutzt crawlbare Paginierungslinks.
Inseratsdetail und Kontaktzugang
Die Detailseite zeigt Start- und Zielpunkt, eine Karte auf Basis der gespeicherten Koordinaten, Datum und Fahrzeugangaben. Identität und Kontaktdaten des Transporteurs sind nicht Teil der öffentlichen Daten; der Versender schaltet sie per Einzelkauf oder mit einem Paketguthaben frei. Die gekauften Kontaktdaten werden im Zustand zum Kaufzeitpunkt gespeichert.
Inserat in Schritten
Transporteure erstellen ein Inserat in vier Schritten: Route und Datum, Fahrzeug und Details, Kontakt, abschließende Prüfung. Eingaben bleiben beim Zurückgehen erhalten, ungeprüfte Schritte lassen sich nicht überspringen, und jeder Abschnitt kann aus der Prüfung heraus bearbeitet werden. Fehler wie ein Datum in der Vergangenheit, eine Abfahrt nach der Ankunft oder ungültige Telefonnummern und E-Mail-Adressen werden sofort erkannt. Gespeicherte Inserate gehen nach Freigabe durch die Verwaltung online.
Benutzerkonto
Der Kontobereich behält die Hauptnavigation der Website bei und arbeitet mit horizontalen Reitern: meine Inserate, meine Käufe, Zugangsguthaben und Pakete, Benachrichtigungen und Profil. Im Profil lässt sich ein Foto hochladen, ändern und entfernen; nach einer Passwortänderung wird die Sitzung erneuert. Transportregeln, Datenschutzhinweise, Datenschutzerklärung und Nutzungsbedingungen teilen sich ein gemeinsames Leselayout mit Abschnittsmenü und Druckansicht.
Admin-Panel
Das Admin-Panel läuft auf einer eigenen Subdomain und umfasst: Freigabe und Filterung von Inseraten, Transporteure und Benutzer, Kontaktkäufe, Benutzerguthaben mit protokollierten Korrekturen, Paketpreise, Zahlungseinstellungen und Zahlungsdatensätze, Reklamationen, Support-Tickets und FAQ, Berichte, E-Mail-Vorlagen, Telegram-Benachrichtigungen, Theme, Seiten, Medienspeicher und ein Audit-Protokoll. Alte Wallet- und Buchungsdaten bleiben als lesbares Archiv erhalten, statt gelöscht zu werden.
Technische Architektur
Es gibt drei getrennte Anwendungen: eine API mit Fastify 5, Drizzle ORM und MySQL 8; die Website mit Next.js, React 19 und Tailwind CSS 4; das Admin-Panel mit Next.js, RTK Query und Shadcn. Laufzeitumgebung ist Bun, die Prozesse verwaltet PM2. Die Adresskomponente ist ein lokales Paket, das beide Next.js-Anwendungen nutzen.
- Zahlungen und Guthaben: Guthaben wird atomar verbraucht; wiederholte Zahlungsbenachrichtigungen haben nur eine Wirkung, zwei gleichzeitige Käufe können nicht kollidieren, und Anbieter, Betrag sowie Währung werden serverseitig geprüft. Unklare Ergebnisse landen in einer Prüfwarteschlange, ohne dass Umsatz oder Guthaben verbucht werden.
- Datenschutz und Sitzungen: Identitäts- und Kontaktfelder wurden aus den öffentlichen Inseratsdaten entfernt; Prüfungen von Rolle, aktivem Konto und Sitzungsversion, sichere Cookies und eine Validierung von Rücksprungadressen kamen hinzu.
- Altes Modell: Neue Schreibvorgänge für Buchungen, Wallet und Bewertungen wurden geschlossen, historische Daten und alte Zahlungs-Callbacks für den Abgleich erhalten; ungenutzte Web-Dateien wurden über den Import-Graphen ermittelt und entfernt.
- Performance: Unter gleichen mobilen Laborbedingungen sank der Median-LCP von 5,6 auf 0,73 Sekunden und der CLS von 0,19 auf 0,002; das automatische Laden des Videos beim ersten Aufruf entfiel.
- SEO und GEO: seitenspezifische Canonicals, noindex für Filterergebnisse, eine gemeinsame, getestete Metadatenschicht, eine Social-Karte im Format 1200×630, eine Sitemap, die bei Fehlern nicht stillschweigend unvollständig ausliefert, strukturierte Daten passend zur sichtbaren FAQ und eine llms.txt.
- Tests und Betrieb: mehr als 130 automatisierte Backend- und Frontend-Tests, End-to-End-Abläufe im echten Browser, versionierte Release-Verzeichnisse, Datenbank- und Dateisicherungen mit isolierter Wiederherstellungsprobe sowie ein Migrationsprotokoll mit Prüfsummen.
Integrationen
Adressvorschläge kommen von Photon auf Basis von OpenStreetMap-Daten; die API ergänzt Ratenbegrenzung, Zusammenführung gleicher Anfragen und Caching, und fällt der Dienst aus, funktioniert die freie Adresseingabe weiter. Karten nutzen OpenStreetMap und werden erst geladen, wenn der Nutzer sie öffnet. Die Zahlungsschicht unterstützt iyzico und PayTR und ist standardmäßig geschlossen, sodass ohne konfigurierten Anbieter keine Abbuchung starten kann. Admin-Hinweise gehen an Telegram, Transaktions-E-Mails nutzen das Vorlagensystem.
Ergebnis
PaketJet ist unter paketjet.com als Marktplatz online, der sein Geschäftsmodell ehrlich beschreibt, Kontaktdaten nur für zahlende Nutzer freigibt und den Zahlungsablauf gegen Wiederholungen und Race Conditions schützt. Neues Design, Inseratsformular in Schritten, Suche bis auf Dorf- und Straßenebene und der schnellere mobile Seitenaufbau gingen in derselben Erneuerung live; jede Auslieferung ist durch Tests und Live-Browserprüfungen dokumentiert.