BakuMebel — ölçüye özel mobilya kataloğu

Bakü'de mutfak, gardırop ve salon mobilyası üreten BakuMebel için üç dilli katalog sitesi. Next.js ile geliştirildi, VPS'te çalışıyor; fiyat beklentisini beş adımlı bir hesaplayıcı oluşturuyor, talep ise hazır mesajla WhatsApp'a gidiyor.

Canlı siteyi gör
Genel bakış
Müşteri
BakuMebel — Bakü'de ölçüye özel mobilya üretimi: mutfak, gardırop, salon, yatak odası, ofis ve çocuk odası
Rol
Frontend ve backend geliştirme, katalog yapısı, fiyat hesaplayıcının mantığı, yönetim paneli, yapılandırılmış veri (schema.org) ve VPS'e yayına alma.
Stack
Next.js · TypeScript · Tailwind CSS
Tarih
Eylül 2026
Dil
3 — AZ / EN / RU
Sayfa
17 × 3
Problem

Ölçüye özel mobilyada sabit fiyat yoktur: aynı mutfak ölçüye, malzemeye ve aksesuara bağlı olarak iki kat farklı olabilir. Bu, siteyi bir çıkmaza sokar — fiyat yazmazsan ziyaretçi «demek ki pahalı» deyip çıkar, somut bir rakam yazarsan ise ölçü alındıktan sonra o rakamı savunamazsın. Sitenin görevi fiyat konusunda ne susmak ne de tutamayacağı bir söz vermekti.

Sitede neler var
  • Üç dil — AZ, EN, RU; her sayfanın her dil sürümü sitemap'te ayrı bir adres
  • Altı kategori: mutfak, salon, yatak odası, gardırop, ofis ve çocuk odası
  • Beş ana sayfa — ana sayfa, katalog, hesaplayıcı, hakkımızda, iletişim — artı kategori ve ürün sayfaları
  • Ürün sayfası: görsel galerisi, kategori rozeti, fiyat, teknik açıklama ve benzer modeller
  • Beş adımlı fiyat hesaplayıcı: oda, ölçü, malzeme, aksesuar, ekler
  • Hesaplayıcı her oda tipini kendi birimiyle hesaplıyor — mutfak metretül, gardırop ve TV ünitesi ön yüz alanı, yatak hazır model
  • Ana sayfada üç slaytlı hero, avantaj blokları, katalogdan seçmeler ve haftanın teklifi
  • Ürünlerin yönetildiği, e-posta ve şifreyle korunan yönetim paneli
  • Her çağrı düğmesi WhatsApp'ı ürüne uygun hazır bir mesajla açıyor
  • Organization, Product, Offer, OfferCatalog, ItemList ve BreadcrumbList şemalarıyla yapılandırılmış veri
Teknik kararlar
01

Sepet değil, hesaplayıcı

Sepet ve online ödeme teknik olarak zor değildi, ama ürünün kendisiyle çelişiyordu: ölçüye özel bir mutfağın fiyatı ölçü alınmadan belli olmaz. Sepet ziyaretçiye sabit bir rakam vaat ederdi, üretici ise onu tutamazdı. Bunun yerine katalog beklenti oluşturuyor, hesaplayıcı bütçe aralığını veriyor, görüşme ise WhatsApp'ta devam ediyor — yani site hiçbir aşamada tutamayacağı bir söz vermiyor.

02

Hesaplayıcı her odayı kendi birimiyle ölçüyor

Mobilya pazarında mutfak metretülle, gardırop ve TV ünitesi ön yüz alanıyla, yatak ise hazır model olarak fiyatlandırılır. Hepsini tek bir formülle hesaplamak basit olurdu, ama sonuç bir profesyonele hemen yanlış görünürdü. Bu yüzden hesaplayıcı seçilen oda tipine uygun hesaplama tabanına geçiyor — rakam sektörün kendi mantığıyla çıkıyor.

03

Sonuç kesin bir rakam değil, bir aralık

Hesaplayıcı belirli bir tutar değil, bir aralık döndürüyor ve bunun tahmini olduğunu, kesin fiyatın ancak ustanın yerinde ölçüsünden sonra belirleneceğini açıkça yazıyor. Bu ziyaretçiyi kaybetme pahasına değil, tam tersine: beklenti doğru kurulduğunda ölçüden sonraki görüşme «siz 2000 demiştiniz» tartışmasıyla başlamıyor.

04

Üç dil tek bir rota ağacında

Dil ayrı bir rota segmenti (/az, /en) değil, `?lang=` sorgu parametresi. Bu, tüm rota ağacını üç kez tekrarlamadan üç dil sağlıyor. Tavizin görünmemesi için temel şart yerine getirildi: her dilin kendi adresi var ve bu adresler hem sitemap'te hem de hreflang bildiriminde (AZ ise x-default olarak) verildi — yani üç sürüm arama motoru için kopyalanmış içerik değil, birbirinden ayrı sayfalar.

05

Her ürün fiyatlı bir Product düğümü

Katalogdaki modeller yapılandırılmış veride yalnızca metin olarak değil, her biri kendi açıklaması, kategorisi ve fiyatıyla ayrı bir Product ve Offer nesnesi olarak bildirildi; kategoriler ise OfferCatalog olarak bağlandı. Böylece «Bakü'de akrilik mutfak fiyatı» gibi bir soru sorulduğunda arama ve yapay zekâ sistemleri sayfayı genel bir reklam metni olarak değil, fiyatı belli ürünlerin listesi olarak okuyor.

06

İçerik kodda değil, yönetim panelinde

Yeni model, görsel veya fiyat değişikliği için kod düzenlemek ve yeniden deploy etmek gerekmiyor — ürünler sitenin kendi yönetim panelinden yönetiliyor, panel ise e-posta ve şifreyle korunuyor ve giriş yapılmadan açılmıyor. Mobilya kataloğunda fiyatlar mevsime ve malzemeye göre değiştiği için bu, projenin sürdürülebilir çalışmasının şartı.

07

Sunucu modu, kendi VPS'inde

Site paylaşımlı bir hostingde değil, kendi VPS'inde Ubuntu üzerinde nginx arkasında bir Next.js sunucusu olarak çalışıyor. Nedeni yönetim paneli: statik olarak export edilmiş bir site ne korumalı bir rota ne de sunucu taraflı bir yazma işlemi barındırabilirdi. Aynı süreç hem vitrini hem de paneli taşıyor — ayrı bir backend uygulaması yok.

Sonuç

Site bakumebel.az adresinde yayında. Üç dilin her biri sitemap'te ve hreflang bildiriminde ayrı bir adresle veriliyor, yani arama motoru üç sürümü ayrı ayrı indeksleyebiliyor. Katalog altı kategoriye ayrıldı; her ürün sayfada metin olarak değil, fiyatıyla birlikte ayrı bir Product düğümü olarak bildiriliyor.

Bu proje hakkında sorular
Sitede sepet ve online ödeme neden yok?
Bilinçli olarak. Ölçüye özel mobilyanın fiyatı ölçü alınmadan netleşmez, bu yüzden sepet tutamayacağı bir rakam vaat ederdi. Bunun yerine hesaplayıcı bütçe aralığını gösteriyor, talep ise hazır mesajla WhatsApp'a geçiyor.
Hesaplayıcının verdiği fiyat kesin mi?
Hayır, ve site bunu açıkça yazıyor. Hesaplayıcı seçilen oda, ölçü, malzeme ve aksesuara göre tahmini bir aralık veriyor. Kesin fiyat ancak ustanın yerinde ölçüsünden sonra belirleniyor.
Yeni ürün eklemek için geliştirici gerekiyor mu?
Hayır. Ürünler, görseller ve fiyatlar sitenin kendi yönetim panelinden yönetiliyor — kod değişikliği ve yeniden deploy gerekmiyor.
Site kaç dilde çalışıyor?
Üç dilde: Azerbaycan Türkçesi, İngilizce ve Rusça. Her dilin her sayfa için ayrı bir adresi var ve bu adresler hem sitemap'te hem de hreflang bildiriminde verildi.
Site hangi teknolojilerle geliştirildi?
Next.js, TypeScript ve Tailwind CSS. Site kendi VPS'inde Ubuntu üzerinde nginx arkasında bir Next.js sunucusu olarak çalışıyor; yönetim paneli de ayrı bir uygulama değil, aynı Next.js projesinin bir parçası.

Projenizi konuşalım — genellikle aynı gün yanıt veriyorum.

Nurlan Qadirov — Baku, Azerbaijan