PaketJet — P2P Kargo ve Navlun Marketplace Platformu
Taşıyıcıların güzergâh ve boş kapasite ilanı yayınladığı, göndericilerin uygun taşıma alanını bulup iletişim erişimi alabildiği mobil öncelikli P2P lojistik platformu.

Açıklama
Taşıyıcıların güzergâh ve boş kapasite ilanı yayınladığı, göndericilerin uygun taşıma alanını bulup iletişim erişimi alabildiği mobil öncelikli P2P lojistik platformu.
Vaka çalışması
Zorluk
PaketJet rezervasyon ve cüzdan odaklı bir modelle yayına alınmıştı, ancak iş modeli iletişim erişimi satışına dönüşmüştü. Kod, metinler ve şemalar hâlâ eski modeli anlatıyor, kamu ilan verisi gereğinden fazla bilgi içeriyor, mobil açılış yavaş ve adres girişi şehir listesiyle sınırlıydı.
Yaklaşım
Projeyi kapsamlı bir yenileme olarak ele aldık: eski modelin yazma yollarını kapatıp geçmişi arşivledik, gizlilik ve oturum kontrollerini sıkılaştırdık, ödeme ve hak tüketimini atomik hâle getirdik. Arayüzü baştan tasarladık, adres ve harita bileşenini ortak paket olarak kurduk, SEO ve GEO katmanını yeni modele göre yeniden yazdık.
Sonuç
paketjet.com yeni tasarım, adımlı ilan formu ve adres düzeyinde aramayla yayında. Mobil laboratuvar ölçümünde LCP 0,73 saniyeye indi; her teslim otomatik testler, gerçek tarayıcı akışları ve canlı kontrollerle belgelendi.
Araçlar
Next.js 15, React 19, TypeScript, Fastify 5, Bun, MySQL 8, Drizzle ORM, Zod, Zustand, Tailwind CSS 4
Öne Çıkan Özellikler
Ücretsiz taşıyıcı ilanı, göndericiye iletişim erişimi satışı
Köy, mahalle ve açık adres düzeyinde otomatik tamamlamalı arama
Tam adreste sonuç yoksa aynı ilden açıklamalı alternatif ilanlar
Dört adımlı ilan formu, son kontrol ve yönetim onayı
Koordinatlı rota haritası, yalnız istendiğinde yüklenir
Tekil alım veya 1, 5, 10 haklık erişim paketleri
Atomik hak tüketimi, tekrar ve yarış korumalı ödeme akışı
İlan onayı, haklar, itiraz ve destek için yönetim paneli
Mobil lab LCP 5,6 sn'den 0,73 sn'ye, CLS 0,19'dan 0,002'ye
Tasarım Öne Çıkanları
Lavanta ve açık mavi yüzeyler, lacivert başlıklar, hareketli rota sahnesi
Ekran dışında duran, azaltılmış harekette kapanan animasyon ve video
Sekmede bir kez gösterilen, dokunuşla kapanan 1,2 saniyelik intro
Açık/koyu tema, 360–1440 px ve %200 yakınlaştırmada test edilen düzen
Adım değişiminde klavye odağı başlığa taşınan erişilebilir form
Detaylar
PaketJet, şehirler arası yolculuk yapan taşıyıcıların güzergâh ve boş kapasite ilanı verdiği, gönderi sahiplerinin de uygun ilanı bulup taşıyıcının iletişim bilgilerine erişim satın aldığı bir pazaryeri. Taşıyıcı ilanı ücretsiz açar; taşıma ücreti ve detayları taraflar arasında konuşulur. Platform kargo takibi, emanet ödeme ya da taşıma garantisi vaat etmez; işi, doğru gönderici ile doğru taşıyıcıyı buluşturmaktır.
Proje bağlamı ve ihtiyaç
PaketJet ilk sürümünde rezervasyon, cüzdan, puanlama ve abonelik içeren, araç paylaşımı modeline benzeyen bir yapıyla yayına alınmıştı. Zamanla iş modeli sadeleşti: platformun gerçek ürünü taşıyıcının iletişim bilgisine erişim ve önceden alınabilen erişim hakları oldu. Ancak kod, metinler ve şemalar hâlâ eski modeli anlatıyordu; ana sayfa rezervasyon vaat ediyor, kamuya açık ilan verisi gereğinden fazla bilgi içeriyordu. Mobilde ilk açılış yavaştı ve adres girişi yalnız şehir listesine bağlıydı.
Bu yüzden proje, yeni bir özellik eklemekten çok bir yenileme olarak ele alındı: iş modelini kodun her katmanına doğru yansıtmak, gizliliği ve ödeme akışını sağlamlaştırmak, arayüzü baştan tasarlamak ve her adımı test ile canlı ortamda doğrulamak.
Çözüm ve kapsam
Arama ve ilan listesi
Ana sayfa "Nereden, Nereye, Tarih" alanlarıyla bir arama formu ve hareketli bir rota sahnesiyle açılır. Adres alanı şehir listesine bağlı değildir: il, ilçe, mahalle, köy ve açık adres önerileri aynı bileşenden gelir, sonuç bulunamazsa elle yazılan adres de kabul edilir. Kalkış ve varış tek düğmeyle yer değiştirir. Tam adreste ilan yoksa aynı ildeki ilanlar, tarih, araç ve rota yönü korunarak açıklamalı alternatif olarak gösterilir. İlan listesi taranabilir sayfalama bağlantılarıyla gelir.
İlan detayı ve iletişim erişimi
Detay sayfasında kalkış ve varış noktaları, kayıtlı koordinatlarla çizilen harita, tarih ve araç bilgisi yer alır. Taşıyıcının kimliği ve iletişim bilgisi kamuya açık veride bulunmaz; gönderici bunu tekil bir satın alma ya da paket hakkı kullanarak açar. Satın alınan iletişim bilgileri, alım anındaki hâliyle kayıt altına alınır.
Adımlı ilan verme
Taşıyıcı ilanını dört adımda oluşturur: rota ve tarih, araç ve detaylar, iletişim, son kontrol. Geri dönüşlerde girilen veriler korunur, doğrulanmamış adıma geçilemez, son kontrolden istenen bölüm düzenlenebilir. Geçmiş tarih, varıştan sonraki kalkış, geçersiz telefon ve e-posta gibi hatalar anında yakalanır. Kaydedilen ilan yönetim onayından sonra yayına çıkar.
Kullanıcı paneli
Hesabım alanı ana sitenin üst menüsünü koruyan, yatay sekmeli bir düzenle çalışır: ilanlarım, satın aldıklarım, erişim hakları ve paketler, bildirimler ve profil. Profil ekranında fotoğraf yükleme, değiştirme ve kaldırma, şifre değişikliğinden sonra oturum yenileme bulunur. Taşıma kuralları, KVKK, gizlilik ve kullanım koşulları ortak bir okuma düzeninde, bölüm menüsüyle ve yazdırmaya uygun şekilde sunulur.
Yönetim paneli
Ayrı bir alt alan adında çalışan yönetim paneli şu ekranları içerir: ilan onayı ve filtreleme, taşıyıcılar ve kullanıcılar, iletişim satın alımları, kullanıcı hakları ve denetimli hak düzeltmesi, paket fiyatlandırması, ödeme ayarları ve ödeme kayıtları, itirazlar, destek talepleri ve SSS, raporlar, e-posta şablonları, Telegram bildirimleri, tema, sayfalar, medya deposu ve denetim kaydı. Eski cüzdan ve rezervasyon kayıtları silinmeden arşiv olarak okunabilir durumda tutulur.
Teknik mimari
Üç ayrı uygulama vardır: Fastify 5, Drizzle ORM ve MySQL 8 ile yazılmış API; Next.js, React 19 ve Tailwind CSS 4 ile web sitesi; Next.js, RTK Query ve Shadcn ile yönetim paneli. Çalışma ortamı Bun, süreç yönetimi PM2'dir. Adres bileşeni iki Next.js uygulamasının ortak kullandığı yerel bir pakettir.
- Ödeme ve haklar: hak tüketimi atomik yapılır; tekrar eden ödeme bildirimleri tek bir etki üretir, aynı anda iki alımın çakışması engellenir, sağlayıcı, tutar ve para birimi sunucuda doğrulanır. Belirsiz sonuçlar gelir ya da hak yazılmadan inceleme kuyruğuna düşer.
- Gizlilik ve oturum: kamu ilan verisinden kimlik ve iletişim alanları çıkarıldı; rol, aktif hesap ve oturum sürümü kontrolü, güvenli çerezler ve dönüş adresi doğrulaması eklendi.
- Eski model: rezervasyon, cüzdan ve puanlama için yeni yazma işlemleri kapatıldı, geçmiş kayıtlar ve eski ödeme bildirimleri mutabakat için korundu; kullanılmayan web dosyaları import grafiğiyle tespit edilip kaldırıldı.
- Performans: aynı mobil laboratuvar koşullarında ortanca LCP 5,6 saniyeden 0,73 saniyeye, CLS 0,19'dan 0,002'ye indi; ilk açılıştaki otomatik video yüklemesi kaldırıldı.
- SEO ve GEO: sayfaya özgü canonical, filtre sonuçlarında noindex, ortak ve testli metadata katmanı, 1200×630 paylaşım kartı, hata durumunda sessizce eksik dönmeyen sitemap, görünür SSS ile birebir eşleşen yapılandırılmış veri ve llms.txt.
- Test ve işletim: backend ve frontend'de 130'u aşkın otomatik test, gerçek tarayıcıyla uçtan uca akışlar, sürüm dizinli yayın, veritabanı ve dosya yedeği ile izole geri yükleme denemesi, sağlama toplamlı migration günlüğü.
Entegrasyonlar
Adres önerileri OpenStreetMap verisini kullanan Photon servisinden gelir; API tarafında istek sınırlama, eş sorgu birleştirme ve önbellek vardır, servis yanıt vermezse elle adres girişi çalışmaya devam eder. Haritalar OpenStreetMap ile, yalnız kullanıcı açtığında yüklenir. Ödeme katmanı iyzico ve PayTR sağlayıcılarını destekler ve sağlayıcı yapılandırılmadıkça tahsilat başlatmayacak şekilde kapalı-varsayılan çalışır. Yönetim bildirimleri Telegram'a, işlem e-postaları şablon sistemine bağlıdır.
Sonuç
PaketJet bugün iş modelini dürüstçe anlatan, iletişim bilgisini yalnız satın alan kişiye açan ve ödeme akışını yarış ve tekrar durumlarına karşı koruyan bir pazaryeri olarak paketjet.com'da yayında. Yeni tasarım, adımlı ilan formu, köy ve açık adres düzeyinde arama ve hızlanan mobil açılış aynı yenileme turunda canlıya alındı ve her teslim test ile canlı tarayıcı kontrolüyle belgelendi.