UniMarket

UniMarket'i nasıl geliştirdik: tek sunucuda hızlı, iki dilli bir pazaryeri

UniMarket'in arkasındaki tercihler: Bengalce fontlardan ve tek kod tabanlı mimariden, birkaç mağazadan siparişlere, tam poisha olarak saklanan paraya, e-posta teslim edilebilirliğine ve tek komutla yayına almaya.

UniMarket, Bangladeş için Bengalce ve İngilizce, çok satıcılı bir pazaryeridir. Mağazayı, Satıcı Merkezi'ni, yönetici panelini ve yüklenebilir uygulamayı tek bir TypeScript projesi olarak geliştirdik ve kendi sunucumuzda çalıştırıyoruz. Bu, en çok önem taşıyan kararların ve onları neden aldığımızın bir turu.

Koyu temada bir UniMarket kategori sayfası: her biri fiyat, indirim rozeti ve Ekle düğmesi olan bir ürün sırası.
Masaüstünde bir kategori sayfası.

Teknoloji yığını ve nedenleri

KatmanTercihNeden
UygulamaNext.js 16, React 19 ve TypeScriptSunucuda oluşturulan sayfalar tarayıcıdaki JavaScript'i küçük tutar ve tek bir dil mağazayı, Satıcı Merkezi'ni, yönetici panelini ve API'yi kapsar.
StilTasarım belirteçleriyle Tailwind CSS 4Küçük CSS ve aynı belirteçlerden açık ve koyu temalar.
VeriKendi örneğinde MongoDBEsnek belgeler farklı seçenekleri olan ürünlere uyar ve ayrı bir örnek, sunucudaki diğer hizmetlere dokunmaz.
GirişTek kullanımlık kodlar, Google ve Apple, telefon kodları için Firebase AuthBangladeş'teki alışverişçiler telefon numarasıyla giriş yapar ve bir kod için unutulacak bir parola gerekmez.
BarındırmaKendi VPS'imiz, nginx, Cloudflare ve Let’s EncryptÖngörülebilir maliyet ve yedekler, e-posta ve sınırlar üzerinde tam denetim.

Hızlı sayfalar, Bengalcede de

Bir ziyaretçinin gördüğü sayfaların çoğu herkese açıktır; bu yüzden önbelleğe alınacak şekilde yapılırlar. Sepet sayısı ya da giriş yapmış bir ad gibi kişisel olan her şey ayrıca doldurulur ve sayfayı geciktirmez. Görseller yüklenirken sabit boyutlarda modern biçimlere dönüştürülür.

Fontlar sürpriz oldu. Bir Bengalce web fontu büyüktür: denediğimiz yaklaşık 200 KB idi. Testimizde mobil Lighthouse performans puanından on puandan fazla götürdü. Bu yüzden Bengalce metin, telefonda ya da bilgisayarda zaten bulunan fontu kullanır ve kendi barındırdığımız küçük bir font yalnızca Latin harfleri ile rakamları kapsar. Okuyucular her gün okudukları fontu görür ve fazladan hiçbir şey indirilmez.

Yerel üretim derlememizde, test ettiğimiz her sayfada Erişilebilirlik, En İyi Uygulamalar ve SEO 100 puan aldı ve mobil Performans 93 ile 98 arasındaydı. Bunlar yerel bir derlemede kendi ölçümlerimizdir ve sonradan üçüncü taraf betikler eklemek onları düşürür.

Gerçekten iki dil olan iki dil

Bengalce ve İngilizcenin her birinin kendi adresi vardır; aralarındaki hreflang bağlantılarıyla arama motorları doğru olanı gösterir. Her arayüz metni türlü bir sözlükte durur ve bir Bengalce metin eksikse derleme başarısız olur; bu yüzden yarım çevrilmiş bir sayfa yayına çıkamaz. Fiyatlar Bengalcede Bengalce rakamlarla, İngilizcede Latin rakamlarla yazılır.

Tek ödeme, birkaç satıcı

Bir sepet birkaç mağazanın ürünlerini tutabilir. Alışverişçi siparişi verdiğinde ödeme, tarayıcıya güvenmek yerine her fiyatı veritabanından yeniden hesaplar, stoğu tek bir bölünmez adımda ayırır, siparişi mağaza başına bir gönderiye böler ve mağaza başına bir teslimat ücreti alır. İki kez göndermek iki sipariş oluşturmaz ve iptal etmek stoğu geri koyar.

Para tam poisha olarak saklanır; bir taka 100 poishadır, bu yüzden hiçbir toplam bir ondalık yüzünden yuvarlanmaz.

Varsayılan olarak güvenli

  • Satıcılar yalnızca kendi siparişlerini ve ürünlerini okuyabilir ve personel yalnızca rolünün izinlerini alır. Personel parola ve kimlik doğrulayıcı koduyla giriş yapar ve yaptıkları değişiklikler bir denetim günlüğüne gider.
  • Web sunucusu giriş ve API isteklerini sınırlar ve uygulama kendi kullanıcı başına sınırlarını ekler.
  • Yüklemeler yeniden kodlanır; bu, fotoğraflardaki gizli konum verisini siler ve kimlik belgeleri herkese açık klasörün dışında saklanır.
  • Bir güvenlik incelemesinden sonra önce hesap ele geçirme ile ilgili iki bulguyu, ardından orta düzeydeki bulguları düzelttik.

Gelen e-postalar

UniMarket her sipariş adımında bir e-posta gönderir; bu yüzden teslim edilebilirlik ürünün bir parçasıdır. E-posta, DKIM imzasıyla kendi posta sunucumuzdan çıkar ve alan adı SPF ve DMARC kayıtlarını yayımlar. Testlerimizde sipariş e-postaları üç kontrolü de geçti ve spam değil, gelen kutusuna ulaştı.

Açık sekmeleri bozmadan yayına almak

Bir yayın, sunucuda derlenir, yeni sürüme geçer ve sağlıklı olup olmadığını kontrol eder. İkinci bir komut önceki sürüme geri döner. Her sürümün kendi dağıtım kimliği vardır; bu yüzden bir alışverişçi bir yayın boyunca sekmeyi açık bıraktığında, sayfa düğmelerinin eski bir sürüme ait olduğunu fark eder ve hata göstermek yerine kendini yeniler.

Veritabanı her gece yedeklenir ve son 14 yedek saklanır.

UniMarket erken erişimdedir ve bir demo kataloğu vardır. Pazaryeri canlı ve çalışıyor, bir unimarket.bd alan adı planlanıyor.

Bilgiler, 22Softwares ekibi tarafından canlı UniMarket uygulaması ve Satıcı Merkezi rehberiyle karşılaştırılarak doğrulandı.

Sorular