Özellik Talebi Oylama Web Uygulaması Nasıl Oluşturulur
Kullanıcıların özellik fikirleri gönderebildiği, oy verebildiği ve yöneticilerin net kurallar, durumlar ve raporlama ile talepleri triage ettiği bir web uygulamasını planlayın, oluşturun ve yayınlayın.

Hedefleri ve Temel İş Akışını Belirleyin
Ekran tasarlamadan veya veritabanı seçmeden önce, "özellik talebi oylama"nın ürün ekibiniz için ne başarması gerektiğine karar verin. Bir oylama portalı şunlardan biri olabilir:
- bir keşif aracı (en büyük sorunları görünür kılar),
- bir önceliklendirme girdisi (tema bazında talebi karşılaştırır), veya
- bir iletişim kanalı (ilerlemeyi gösterir ve tekrar eden e-postaları azaltır).
Birincil amacı seçmezseniz, belirsiz kurallar ve gürültülü veriyle sonuçlanırsınız.
Kime yönelik?
Hedef kitleyi açıkça belirleyin ve rollere göre görünürlük kurallarını tanımlayın:
- Müşteriler: gerçek dünya problemleri ve aciliyet getirir, ancak moderasyon gerekebilir.
- İç ekipler (Satış, Destek, Başarı): bağlam ve gelir etkisi ekler, ancak birkaç hesabı aşırı temsil edebilirler.
- Beta kullanıcıları: detaylı, yüksek sinyal geri bildirim verirler ama geniş pazarı yansıtmayabilirler.
- Herkes: roller ve görünürlük kuralları net olduğunda en iyi çalışır.
Temel kullanıcı iş akışı (kullanıcıların yapabilmesi gerekenler)
En azından kullanıcıların talep gönderebilmesi, oy verebilmesi, yorum yapabilmesi, güncellemeleri takip edebilmesi ve mevcut fikirleri arayabilmesi gerekir.
Arama, göründüğünden daha önemlidir: tekrarları önler ve biri hiçbir şey göndermese bile portalın faydalı hissettirmesini sağlar.
Temel yönetici iş akışı (ekibinizin yapabilmesi gerekenler)
Ürün ekibinizin hafif bir triyaj döngüsüne ihtiyacı vardır:
- duplicate'ları birleştirme
- durum değiştirme (ör. “Under Review,” “Planned,” “In Progress,” “Shipped”)
- etiketleme/kategorize etme
- veri dışa aktarma (planlama için)
Bu adımlardan herhangi biri uygulama dışında elle yapılması gerekiyorsa, sistem güncel kalmaz.
Başarıyı önceden tanımlayın
Benimseme, fikir kalitesi ve tasarruf edilen zaman gibi ölçülebilir sonuçlar seçin:
- Benimseme: aktif oy verenler ve tekrarlayan ziyaretçiler
- Fikir kalitesi: daha az duplicate, daha net açıklamalar
- Zaman tasarrufu: daha az destek bileti, daha hızlı triyaj
Bu hedefler sonrasında oy kurallarından yönetici araçlarına kadar birçok kararı şekillendirir.
Kullanıcı Rolleri, Giriş ve İzinler
Oylama uygulamanız, insanların kimlerin ne yapabileceğini anladığını hissettiğinde "adil" görünür—ayrıca suistimal zor olmalı ama meşru kullanıcıların işini zorlaştırmamalıdır. Küçük bir rol setiyle başlayın ve her birine bağlı izinleri belirleyin.
Yaygın roller (ve yapabildikleri)
- Visitor: genel panoyu gezebilir ve talep detaylarını okuyabilir. Filtreleme ve aramaya izin verin, ancak gönderme ve oy verme gibi eylemleri kısıtlayın.
- Signed-in user: özellik talepleri oluşturabilir, oy verebilir, yorum yapabilir (yorum destekleniyorsa) ve güncellemeleri takip edebilir.
- Moderator: duplicate'ları birleştirebilir, başlık/etiketleri açıklık için düzenleyebilir ve düşük kaliteli veya saldırgan içeriği gizleyebilir.
- Admin: durumları değiştirebilir (Planned/In Progress/Shipped), kategorileri yönetebilir, kuralları yapılandırabilir ve raporlamaya erişebilir.
Basit bir izin modeli (can_vote, can_post, can_moderate, can_admin) uygulama boyunca sert kodlanmış mantıktan daha kolay yönetilir.
Giriş seçenekleri: kitlenize uyanı seçin
Çoğu portal için email magic link en düşük sürtünmedir ve parola sıfırlamalarıyla uğraştırmaz. Parola ile giriş tanıdıktır ama destek yükü ekler. SSO (SAML/OIDC) genellikle isteğe bağlıdır ve B2B planları için ayrılmalıdır.
Zaten bir uygulamanızda hesaplar varsa, kimlik sistemini yeniden kullanın ki kullanıcıların ayrı bir giriş yapmasına gerek olmasın.
Anonim oy: faydalı ama sınırlandırın
Anonim oy katılımı artırabilir, ama manipüle edilmesi daha kolaydır. İzin verirseniz şu tür korunmalar ekleyin:
- tarayıcı oturumu başına bir oy + sunucu tarafı kontroller
- anonim kullanıcılar için daha sıkı hız sınırları
- yeni bir talep oluşturmak veya yorum yapmak için oturum açma zorunluluğu
Saklanacak minimum profil verisi
Profilleri hafif tutun:
- isim (görünen ad)
- e-posta (giriş + bildirimler için)
- kuruluş (opsiyonel; B2B için faydalı)
- abonelik seviyesi (ağırlıklandırma, segmentasyon veya önceliklendirme için ilgiliyse)
Sadece gerçekten kullanacağınız verileri toplayın; bu gizlilik riskini azaltır ve onboarding'i hızlandırır.
Spam'i durduran ama gerçek kullanıcıları engellemeyen hız limitleri
“X oy/dk” ve “Y yeni talep/gün” gibi temel throttle'lar ekleyin. Yeni hesaplara ve anonim kullanıcılara daha sıkı limitler uygulayın, güvenilen kullanıcılara (eski hesaplar, doğrulanmış e-posta, bilinen organizasyon) esneklik verin.
Kullanıcı limite ulaştığında genel bir hata yerine açık bir mesaj ve tekrar deneme süresi gösterin.
Veri Modelini Tasarlayın: Talepler, Oylar, Durumlar
Bir özellik talebi portalı veri modeline bağlıdır. Kayıtlarınız tutarlıysa, sıralama, filtreleme, tekrarları giderme ve raporlama manuel temizleme gerektirmez.
Özellik talebi: temel alanlar
Kasıtlılığı yakalayan en küçük setle başlayın:
- Başlık: kısa, spesifik, aranabilir.
- Açıklama: "neden" + bağlam (kim etkileniyor, hangi problemi çözer).
- Kategori: filtrelemeyi basit tutmak için tek bir birincil kova (ör. Faturalama, Mobil, Entegrasyonlar).
- Ekler (opsiyonel): ekran görüntüleri veya dokümanlar; meta veriyi (dosya adı, boyut, yükleyici) ve güvenli dosya referansını saklayın.
Daha sonra işe yarayacak backend dostu alanlar ekleyin: created_by, created_at, updated_at ve bir canonical_request_id (duplicate birleştirme için).
Oylar: açıklanabilir bir model seçin
Oy tablonuz genelde user_id → request_id ilişkilidir, ama kurallar farklı olabilir:
- Kullanıcı başına bir oy: en basit ve en net olan.
- Oy kredileri: her kullanıcının sınırlı bir bütçesi olur (ör. 10 kredi); oy başına
credits_spentsaklayın. - Ağırlıklı oylar: B2B için faydalı (yöneticiler abonelik seviyesine göre ağırlıklandırılabilir);
weightsaklayın ve denetim izi tutun.
Hangi modeli seçerseniz seçin, benzersizliği zorunlu kılın (ör. her kullanıcı başına her talepte bir aktif oy) ki toplamlar güvenilir olsun.
Durumlar: söz değil ilerleme modelleyin
Pratik bir durum modeli: New → Under Review → Planned → In Progress → Shipped, artı Won’t Do.
status, status_updated_at ve opsiyonel olarak status_reason saklayın (özellikle Won’t Do için). Şeffaflık ve raporlama için hafif bir status_history logu düşünün.
Etiketler, kategoriler ve tartışma kuralları
Filtreleme için kategoriler üst seviye, esnek etiketleme için tags (çoktan-çoğa) kullanın (ör. “enterprise”, “UI”, “API”).
Yorumlar ve reaksiyonlar için neye izin verileceğini tanımlayın: isteğe bağlı olarak talebe bağlı yorumlar, düzenleme süresi penceresi ve reaksiyonların küçük bir setle sınırlandırılması (ör. 👍/👎) veya gürültüyü önlemek için tamamen devre dışı bırakma.
Kaliteyi yönetmek için is_hidden ve hidden_reason gibi moderasyon alanları ekleyin; veriyi silmeden yönetim sağlar.
Kullanıcı Deneyimini ve Ana Ekranları Planlayın
Portal açıklık üzerine başarır veya başarısız olur: insanlar ürün ekibinin neye ihtiyaç duyduğunu, hangi taleplerin zaten yapıldığını ve nasıl katılacaklarını hızlıca anlamalıdır. Kullanıcıları "bir fikrim var"den "ne olduğunu görebiliyorum"a götüren küçük bir ekran seti tasarlayın.
Ana sayfa / akış: kullanıcıyı hızlıca yönlendirin
Ana ekran bir karar sayfasıdır. Cevaplamalıdır:
- “Diğerleri ne istiyor?”
- “Nereden başlamalıyım?”
Trending ve Newest gibi basit akış modları ekleyin. “For you” görünümü sunuyorsanız isteğe bağlı tutun ve öğelerin neden görünür olduğunu açıklayın (ör. takip edilen etiketlere göre).
Her kartta kısa bağlam gösterin: başlık, kısa özet, durum, oy sayısı ve son aktivitenin ipucu (son yorum veya güncelleme).
Talep detay sayfası: hikayeyi açık gösterin
Detay sayfası mini bir vaka dosyası gibi olmalı. Öne net bir problem tanımı koyun (kullanıcının ne yapmaya çalıştığı), sonra destekleyici ayrıntılar.
Şunları dahil edin:
- oylar ve "neden önemli" özeti
- tartışma için yorumlar
- durum ve görünür bir tarihçe/zaman çizelgesi
Temel eylemleri kolay bulunur tutun: Vote, Follow ve Copy/share link.
Gönderim akışı: belirsiz, tekrar talepleri azaltın
Düşük kaliteli talepler genelde belirsiz istemlerden gelir. Kullanıcıları kullanılabilir girdiler yazmaya yönlendiren kısa bir şablon kullanın:
- Hangi problemi çözüyor?
- Kim etkileniyor?
- "Daha iyi" bir sonuç nasıl görünür?
Yazarken benzer talepleri önerin ki kullanıcılar duplicate yerine mevcut olanı oylasın.
Arama ve filtreler: "göndermeden önce bul" alışkanlığı
Aramayı her sayfada görünür yapın. İnsanların düşündüğü şekilde filtreler ekleyin: kategori, durum, etiketler, ve zaman aralığı (ör. son 30 gün).
Filtre UI'sını kompakt tutun ve filtrelenmiş görünümleri URL ile paylaşılabilir hale getirin.
Duplicate'ları ve İçerik Kalitesini Yönetin
Duplicate talepler kaçınılmazdır: farklı kullanıcılar aynı ihtiyacı farklı kelimelerle tanımlar veya zaten var olan bir özelliği tekrar ister. Duplicate'ları iyi yönetmek panonuzu okunur tutar ve oyları anlamlı kılar.
Duplicate tanımı ve birleştirme kuralları
Açık bir tanımla başlayın: "duplicate", uygulama farklı olsa bile aynı kullanıcı grubuna aynı sonucu isteyen taleptir.
İki gönderi "ilişkili ama farklı" ise (ör. ürünün aynı alanı ama farklı kullanım durumları), ayrı tutun ve ilişki etiketi ekleyin.
Birleştirirken bir canonical request seçin (genelde en net başlık, en iyi açıklama veya en eski ve en aktif gönderi) ve diğerlerini “Merged into #123” kayıtlarına çevirin.
Birleştirmeleri görünür ve anlaşılır yapın
Kullanıcılara her iki tarafta da ilişkiyi gösterin:
- Duplicate üzerinde canonical talebe işaret eden bir banner
- Canonical üzerinde "Merged from X requests" bölümü
Bu, “Gönderimim nereye gitti?” destek taleplerini azaltır.
Oyların akıbetine karar verin
Oyları otomatik olarak canonical talebe taşıyın ve atıf koruyun (“Oyunuz şuna taşındı…”), böylece kullanıcılar silinmiş hissetmez.
Moderasyon için kim/ ne zaman/ neden bilgisi içeren bir denetim izi saklayın.
Gönderim anında duplicate önleme
Kullanıcı başlık yazarken basit bir arama (başlık + etiketler) ile benzer talepleri önerin ve en yüksek eşleşmeleri oy sayılarıyla gösterin. Nazik bir uyarı (“Bunlardan biri aynı mı?”) duplicate'ları önemli ölçüde azaltır.
Tutarlı bir moderasyon kontrol listesi kullanın
Moderatörlere kısa bir kontrol listesi verin:
- net başlık
- her talepte tek problem
- faydalı bağlam
- özel veri yok
- doğru kategori
- merge/relate/approve kararı
Tutarlılık güven inşa eder ve fikir yönetimi kuyruğunu yönetilebilir tutar.
Oy Kurallarını ve Kötüye Kullanım Önlemlerini Belirleyin
Oylama portalının motoru oylar olduğu için, anlaşılır ve manipülasyona kapalı kurallar tanımlayın. Öngörülebilir mekanikler destek taleplerini azaltır ve panoyu adil hissettirir.
Bir oylama modeli seçin
Bir "oy"ın ne anlama geldiğini seçin:
- Sadece upvote: en basit ve en yaygın model
- Up/down oylar: "iyi olur" ile "lütfen olmasın" ayrımı yapar ama olumsuzluğa yol açabilir
- Öncelik puanları: her kullanıcıya küçük bir bütçe verilir (ör. 10 puan); takas yapmayı teşvik eder ve yol haritası girdisini iyileştirir
Kötüye kullanımı caydıran kısıtlar koyun
En azından her kullanıcı için her talepte bir oy kuralını uygulayın. Downvote veya puan sistemi varsa eşdeğer sınırlamalar koyun.
Hafif sürtünce ekleyin:
- hızlı oylama veya hesap eylemleri için bekleme süreleri ("vote storms"ı önler)
- şüpheli desenlerde bot kontrolleri (sadece tetiklendiğinde CAPTCHA)
- anonim trafik için IP/cihaz başına hız sınırlamaları
Oyların geri alınabilir olup olmadığına karar verin
Kullanıcıların çoğu durumda oylarını değiştirmesine veya kaldırmasına izin verin—ihtiyaçlar değişir ve geri alınabilirlik hayal kırıklığını azaltır.
Öncelik puanları kullanıyorsanız, kullanıcıların tekrar tahsis yapabilmesi için geri alınabilirlik zorunludur.
Sıralamayı şeffaf yapın
Sıralama davranışı davranışı şekillendirir; bunu açıklayın. "Top" oylara dayanıyorsa belirtin. "Trending" yakın zamanda artan aktiviteyi kullanıyorsa bunu da açıklayın.
Birden çok görünüm sunmayı düşünün: “Top”, “Newest” ve “Recently Updated”, net etiketlerle.
Düşünceli oy vermeyi teşvik edin
Haftalık X oy gibi limitler veya her ay yenilenen puan bütçesi düşünün. İyi bir triyaj akışıyla birlikte bu, kullanıcıları rastgele her şeyi oylamak yerine en çok önem verdiklerine yatırım yapmaya yönlendirir.
Triage ve Moderasyon için Yönetici Araçları Oluşturun
Yönetici araçları, gönderimler arttığında portalın kullanılabilir kalmasını sağlar. Onlar olmadan backlog duplicate, belirsiz fikirler ve yakıcı tartışmalarla dolar.
Net bir moderasyon kuyruğu ile başlayın
Yöneticilere inceleme için tek bir yer verin:
- tam olarak herkese açık olmadan önce yeni gönderimler (opsiyonel)
- kullanıcılar tarafından işaretlenen öğeler (spam, kötüye kullanım, alakasız)
- başlığa/anahtar kelimelere göre duplicate gibi görünen talepler
Her öğe talep özeti, yazar, oy sayısı, benzer talepler ve son yorumları göstermeli ki moderatör hızlı karar verebilsin.
Hızlı triyaj için toplu işlemler ekleyin
Çoğu yönetici işi tekrarlıdır. Moderatörlerin birden fazla talebi seçip tek seferde değişiklik yapabilmesi için toplu işlemler ekleyin:
- etiket ekle (ör. “Integrations”, “Billing”, “Mobile”)
- durum değiştir (Planned, Under Review, Not Planned, Shipped)
- duplicate'ları canonical talebe birleştir
- sebep ile kapat ve isteğe bağlı ilgili talebe link ekle
Bu, bir ürün yayını sonrası geri bildirim patlamasında özellikle faydalıdır.
Dahili notları herkesten ayrı tutun
Kamusal yorumlar kullanıcılar için. Yöneticilerin bağlam için özel alana ihtiyacı var: destek biletleri, gelir etkisi, teknik kısıtlar ve karar gerekçesi gibi.
Dahili notları sadece personele görünür yapın ve kamu dizisinden ayrı tutun ki yanlışlıkla paylaşılmasın.
Hesap verebilirlik için denetim kaydı ekleyin
Durum değişiklikleri, birleştirmeler ve silmeler gibi önemli eylemleri zaman damgası ve yapan kişi ile izleyin. Bir müşteri “Neden kayboldu?” diye sorduğunda güvenilir bir geçmişiniz olur.
Raporlamayı basit dışa aktarlarla kolaylaştırın
Durum, etiket, tarih aralığı veya oy sayısına göre filtrelenebilen temel bir CSV dışa aktarım, yol haritası toplantıları ve paydaş güncellemeleri için faydalıdır—herkesin admin UI'sine bağımlı kalmadan.
Bildirimler ve Abonelikler
Bildirimler, portalınızı ilk ziyaretten sonra da faydalı kılar. Doğru yapıldığında tekrar eden “güncelleme var mı?” sorularını azaltır ve kullanıcıları rahatsız etmeden tutar.
Kullanıcıları ne hakkında bilgilendirmeli
Kullanıcı beklentisine uyan küçük bir etkinlik setiyle başlayın:
- Durum değişiklikleri (ör. “Planned”, “In Progress”, “Released”)
- Takip ettikleri taleplerde yeni yorumlar
- Bahsetmeler (@-tag) (opsiyonel)
Mesaj açık olsun: talep başlığı, yeni durum ve doğrudan thread'e dönük bağlantı içersin.
Abonelikler: takip etmeyi varsayılan yapın
Bir isteği tek tıkla takip/abonelik haline getirmeyi sağlayın. Kullanıcıyı otomatik takip etmeyi düşünün:
- yeni bir talep gönderdiğinde
- bir talebe oy verdiğinde
- yorum yaptığında
Bu kural tekrar eden destek taleplerini azaltır çünkü kullanıcılar güncellemeleri kendi başlarına takip edebilir.
Uygulama içi vs. e-posta
Hızlı geri bildirim için uygulama içi bildirimler (rozet sayısı, bildirim çekmecesi) kullanın. Durum güncellemeleri gibi daha az sık ama önemli değişiklikler için e-posta kullanın.
Kullanıcıları spam etmemek için özet e-postalar (günlük veya haftalık) sunun; çok sayıda takip edilen talebi olan kullanıcılar için özet varsayılan iyi bir seçenektir.
Tercihler ve abonelikten çıkma kontrolleri
Her e-postada bir abonelikten çıkış linki olmalı ve uygulamada açık bildirim tercihleri (ör. “Sadece durum değişiklikleri”, “Tüm etkinlik”, “Sadece özet”) bulunmalıdır. Bunları /settings/notifications gibi bir ayarlar sayfasından erişilebilir yapın.
İyi bildirim hijyeni güven yaratır—ve güven katılımı artırır.
Oyları Yol Haritası ve Yayın Güncellemeleriyle Bağlayın
Oylar, sonrası görülmediğinde anlamsızlaşır. Süreci kapatmanın en basit yolu, aynı durumları kullanan hafif bir yol haritası ve bir changelog ile bağlantı kurmaktır.
Talepleri herkese açık bir yol haritasına bağlayın (opsiyonel)
Eğer /roadmap gibi bir yol haritası yayımlıyorsanız, durumları herkes için anlaşılır kovalarla eşleyin: “Under Review”, “Planned”, “In Progress” ve “Shipped.” Eşlemeyi tutarlı tutun ki kullanıcılar her durumun ne anlama geldiğini öğrensin.
Her şeyin herkese açık olması gerekmez. Yaygın bir uzlaşma: yüksek seviyeli temaları herkese açık göster, kesin tarihleri ve iç projeleri gizli tut. Bu aşırı vaat vermeyi engellerken oy verenlere güvenilir yol haritası girdisi sağlar.
Yayına alınan işi orijinal oylarla ilişkilendirin
Bir şey ship edildiğinde yöneticiler talebi “Shipped” olarak işaretleyebilmeli ve bir sürüm referansı ekleyebilmelidir.
İdeal olarak, ship edilen özellik sayfası şunları gösterir:
- orijinal talep başlığı ve özeti
- toplam oy sayısı (ve belki en iyi yorumlar)
- ekipten kısa bir “Ne değişti” notu
Bu, oy sisteminizi ölü bir öneri kutusu yerine görünür bir geri bildirim triyaj iş akışına dönüştürür.
Taleplere referans veren bir changelog yayınlayın
/changelog sayfasında sürümler için girişler oluşturun ve her girdiyi ilgili taleplere bağlayın (ve tersi). Örneğin: “SSO eklendi (ilgili: #123, #98).”
Bir fikri destekleyen kullanıcılar bunun yayınlandığını hızlıca doğrulayabilir; yeni ziyaretçiler de duplicate oluşturmadan önce sonuçları inceleyebilir.
Nelerin genel görüntüleneceğine karar verin
Açık bir politika belirleyin: hangi durumlar görünür, oy sayıları açık mı, dahili notlar sadece yöneticiye mi açık vs. Net sınırlar süreçleri tahmin edilebilir kılar.
Karar Vermeye Yardımcı Analitik ve Raporlama
Bir oylama uygulamasındaki analitik gösteriş amaçlı değil—kararların görünür olmasını sağlar. Doğru panolar üç soruyu hızlıca cevaplamalı:
- Kullanıcılar ne istiyor?
- Kim istiyor?
- Ürün ekibinin yanıt vermesi ne kadar acil?
İzlenecek temel metrikler
Güvenebileceğiniz küçük bir setle başlayın:
- Gönderimler: yeni talepler/gün veya hafta ve sürümlere göre değişim
- Oylar: toplam oy, talep başına oy ve oy büyümesi zaman içinde
- Aktif kullanıcılar: görüntüleyen, oy veren veya yorum yapan kişiler (sadece giriş yapan değil)
- Triage süresi: bir talebin “New”den sahiplenilmiş bir duruma geçme süresi
Triage süresi iç sağlığı gösterir: artarsa kullanıcılar göz ardı edildiğini hissedebilir.
Temalar, kategoriler ve segmentasyon
Top kategoruları (gönderim ve oy bazında) ve tekrar eden temaları etiketler veya hafif konu etiketleri ile ortaya çıkarın.
Müşteri meta veriniz varsa (abonelik seviyesi, sektör, hesap büyüklüğü), segmentlere ayırın. Az oy alan bir talep stratejik bir segment için önemli olabilir.
Kötüye kullanımı yakalayın ama güvenlik projesine dönüştürmeyin
Birkaç anomalik görünüm işinizi kolaylaştırır:
- tek bir talepten ani oy patlamaları
- aynı ağ tanımlayıcısından çok sayıda oy
- yeni hesapların hemen oy vermesi ve sadece bir kez oy kullanması
Panoları haftalık alışkanlığa dönüştürün
Haftalık inceleme belirleyin: en çok hareket edenler, yaşlanan “New” talepler ve en önemli temalar. Kararları belgeleyin (“merged”, “planned”, “not now”) ki raporlama yalnızca aktiviteyi değil kararları yansıtsın.
Güvenlik, Gizlilik ve Uyumluluk Temelleri
Güvenliği erken karar verdiğinizde eklemek daha kolaydır. Bir oylama portalı hesaplar, kullanıcı tarafından oluşturulan içerik ve oy sinyalleriyle uğraşır—bu yüzden gerçek kullanıcıları davet etmeden önce temel korumalar olmalı.
Hesap ve oturum güvenliği
Parolayı destekliyorsanız, modern bir hash algoritması (ör. bcrypt/argon2) kullanın ve düz metin saklamayın.
Kısa ömürlü oturumları tercih edin ve güvenli çerez (HTTP-only, Secure, makul SameSite) kullanın. Veri değiştiren formlar (talep gönderme, oy verme, yorum) için CSRF koruması ekleyin.
Girdi doğrulama ve XSS önleme
Her talep, yorum ve başlığı güvenilmez girdi olarak ele alın:
- sunucuda doğrulayın: uzunluk sınırları, izin verilen karakterler, zorunlu alanlar
- içeriği güvenli render edin: HTML'i varsayılan olarak escape edin; Markdown kullanıyorsanız sanitize edin
- linklere dikkat edin:
javascript:gibi zararlı URL'leri engelleyin
Bu, kullanıcıları kötü amaçlı scriptlerden korur ve UI'nın kararlı kalmasını sağlar.
Suistimal kontrolleri ve izleme
Oylama sistemleri spam ve "vote storm" çeker. Şunlar için hız sınırlaması ekleyin:
- yeni gönderimler (hesap başına ve opsiyonel olarak IP başına)
- yorumlar/yanıtlar
- oylar/un-oylar
Bunu temel izlemeyle eşleştirin (ani artışlar, tekrarlayan hatalar, tekrar eden duplicate gönderimler). Basit limitler moderasyonu yönetilebilir tutar.
Gizlilik: az topla, açıkla
Hangi kişisel verileri neden sakladığınızı karar verin (e-posta giriş için, görünen ad atıf için, IP suistimal önleme için vb.). Minimum tutun, saklama süresini belgeleyin ve gizlilik bildiriminizde erişilebilir yapın.
Düzenlenen bölgelerde kullanıcılarınız varsa GDPR/CCPA temel gereksinimlerini planlayın: erişim isteği, silme isteği ve her alanın kullanım amacını netleştirme.
Yöneticilere özel silme politikası
Tutarlı kurallar oluşturun:
- ne zaman içerik kaldırılır (spam, taciz, kişisel veri)
- "soft delete" (gizle ama denetim için sakla) mı yoksa "hard delete" mi
- gönderene silme hakkında nasıl bilgilendirme yapılır
Tutarlılık, fikirlerin kaldırılmasıyla ilgili önyargı suçlamalarını azaltır.
Teknoloji Yığını Seçimi ve MVP Lansman Planı
Bir portalın başarısı gösterişli mimariden çok net kurallar ve hızlı iterasyonla gelir. Ekibinizin rahat olduğu bir yığın seçin ve destekleyebileceğiniz şekilde teslim edin.
Ekibe uygun bir yığın seçin
Uçtan uca "sıkıcı" bir yol seçin:
- Frontend: React/Next.js, Vue/Nuxt veya ekip tercihine göre sunucu tarafı render (Rails, Django template)
- Backend: Node (Nest/Express), Rails, Django veya Laravel
- Veritabanı: Postgres, talepler, oylar ve denetim logları için iyi bir varsayılan
- Barındırma: yönetilen platformlar MVP opsiyonlarında operasyonel yükü azaltır
Geliştirici aşinalığını performans teorisinden önde tutun.
Eğer iş akışını hızlı doğrulamayı hedefliyorsanız (gönderme → arama → oy → durum güncelleme → moderasyon) her şeyi sıfırdan inşa etmeden sohbet tabanlı bir üretken platform olan Koder.ai size başlangıç scaffoldu'nu oluşturup kodu dışa aktarma imkanı sunabilir. Koder.ai, tam uygulamalar (React web, Go + PostgreSQL backend, Flutter mobil) oluşturmak, dağıtım/barındırma ve özel alan adları ile snapshot/rollback destekler.
Dağıtım temelleri: ortamlar, migrationlar, yedekler
Dev → staging → production dizilimini erken kurun ki oy kurallarını gerçek veriyi riske atmadan test edebilin.
Planlayın:
- şema migrationları (ve rollback stratejisi)
- otomatik veritabanı yedekleri
- temel izleme (hatalar + uptime)
Kritik kısımlar için otomatik testler
Küçük bir uygulama bile güven gerektiren mantık çevresinde teste ihtiyaç duyar:
- oy limitleri (kullanıcı başına, zaman periyodu)
- duplicate birleştirme davranışı (oy transferi, yönlendirmeler)
- izin kontrolleri (admin vs normal kullanıcı)
MVP kapsamını tanımlayın (ve neyi erteleyin)
İyi bir MVP genelde şunları içerir: talep oluşturma, arama, oy verme, durum güncellemeleri ve yönetici triyajı.
Sıkça "sonra" olarak bırakılanlar: SSO, oy ağırlıklandırma, derin entegrasyonlar (Jira/Linear), gelişmiş analizler ve özel roller.
Lansman planı: küçük başlayın, hızlı öğrenin
Pilot bir grup davet edin (güç kullanıcılar + dahili ekip), net yönergeler yayınlayın ve insanların gerçekten nasıl gönderip oy verdiğini izleyin.
Kısa bir geri bildirim döngüsü yürütün, sürtünmeyi düzeltin ve erişimi genişletin. Hafif bir /pricing veya /blog güncellemesi beklentileri ayarlamaya ve ilerlemeyi paylaşmaya yardımcı olabilir.
SSS
Bir özellik talebi oylama web uygulamasının temel amacı nedir?
Önce portalın birincil amacını seçin:
- Keşif (en büyük ağrıları ortaya çıkarma)
- Önceliklendirme girdisi (tema bazında talebi karşılaştırma)
- İletişim (ilerlemeyi gösterme ve “güncelleme var mı?” e-postalarını azaltma)
Ardından başarı metriklerini tanımlayın (benimseme, daha az tekrar, triage süresi). Bu hedefler oy kurallarını, durumları ve yönetici araçlarını yönlendirecektir.
Kullanıcı iş akışı MVP'de hangi özellikleri içermelidir?
Pratik bir minimum kullanıcı iş akışı şudur:
- Talep gönderme
- Oy verme
- Yorum (opsiyonel)
- Güncellemeleri takip etme
- Mevcut fikirleri arama
Aramanın ön planda olması önemlidir; böylece kullanıcılar yeni bir içerik yaratmak yerine mevcut talepleri oylar ve tekrarların önüne geçilir.
Portalın kullanılabilir kalmasını sağlamak için hangi yönetici yetenekleri gereklidir?
En azından ekibinizin ihtiyacı olan araçlar:
- Tekrarlanan talepleri canonical bir talepte birleştirme
- Durum değiştirme (Under Review → Planned → In Progress → Shipped, ayrıca Won’t Do)
- Talepleri etiketleme/kategorize etme
- Planlama için veri (CSV) dışa aktarma
Bu işlerden herhangi birinin uygulama dışında manuel yapılması durum tahtasının güncelliğini korumasını zorlaştırır.
Bir özellik talebi portalının hangi roller ve izinlere sahip olması gerekir?
Basit, sürdürülebilir bir model:
- Visitor: gezinebilir/arama yapabilir
- Signed-in user: gönderme, oy verme, yorum yapma, takip etme
- Moderator: açıklık için düzenleme, duplicate birleştirme, kötüye kullanım veya düşük kaliteli içeriği gizleme
- Admin: durumları, kategorileri, kuralları ve raporlamayı yönetme
İzinleri kırılgan rol mantığı yerine bayraklarla uygulamak daha kolaydır (ör. can_vote, can_post, can_moderate, can_admin).
Hangi giriş yöntemi bir oylama portalı için en uygunudur?
Yaygın seçenekler:
- Email magic link: en düşük sürtünme, parola sıfırlama sorununu ortadan kaldırır
- Parola ile giriş: tanıdık fakat destek yükü artar
- SSO (SAML/OIDC): genelde B2B/enterprise eklentisi olarak düşünülmeli
Zaten bir hesap sisteminiz varsa, ayrı bir giriş gerektirmemesi için onu yeniden kullanın.
Anonim oylamaya izin vermeli miyim ve kötüye kullanımı nasıl engellerim?
İzin verebilirsiniz, ama kötüye kullanımı engelleyecek önlemler koyun:
- Bir tarayıcı oturumu başına bir oy ve sunucu tarafı kontroller
- Anonim trafik için daha sıkı hız sınırlamaları
- Yeni bir talep oluşturmak veya yorum yapmak için oturum açma zorunluluğu
Bu, katılımı yüksek tutarken moderasyonu tam zamanlı bir işe çevirmemeye yardımcı olur.
Bir özellik talebi hangi veri alanlarını içermelidir?
Talep nesnesini küçük ama tutarlı tutun:
- Başlık: kısa, spesifik, aranabilir
- Açıklama: neden + bağlam (kim ihtiyaç duyuyor, hangi problemi çözüyor)
- Kategori: filtrelemeyi basit tutmak için tek bir ana bölüm
- Ekler (opsiyonel): ekran görüntüleri veya dokümanlar; meta veriyi (dosya adı, boyut, yükleyici) ve güvenli dosya referansını saklayın
Ek olarak backend için faydalı alanlar: created_by, created_at, updated_at ve bir canonical_request_id (merge için).
Oyları veritabanında nasıl modellemeliyim?
Açıkça açıklayabileceğiniz bir model seçin:
- Kullanıcı başına bir oy: en basit ve en anlaşılır olan
- Oy kredileri: her kullanıcının sınırlı bir bütçesi (ör. 10 kredi) olur; oy başına
credits_spentsaklayın - Ağırlıklı oylar: B2B için faydalı;
weightsaklayın ve denetim izi tutun
Hangi modeli seçerseniz seçin, benzersizliği zorunlu kılın (ör. her kullanıcı için her talepte yalnızca bir aktif oy).
Tekrarlanan (duplicate) özellik taleplerini yönetmenin en iyi yolu nedir?
Tekrarları "aynı kullanıcı grubuna aynı sonucu isteyen istek" şeklinde tanımlayın; uygulama farklı olsa bile hedef aynıysa duplicate sayılır.
İşleyiş:
- Bir canonical request seçin (genellikle en net başlık, en iyi açıklama veya en eski ve en çok aktiviteye sahip olan)
- Diğerlerini “Merged into #123” kayıtlarına dönüştürün
- Oyları otomatik olarak canonical talebe taşıyın ve kullanıcılara bildirin
- Moderatör için kim/ ne zaman/ neden bilgisi içeren bir denetim izi tutun
Kullanıcılarda kafa karışıklığını azaltmak için hem kopyada hem de canonical kayıtta bir görünürlük sağlayın.
Bildirimler ve abonelikler kullanıcıları spam yapmadan nasıl meşgul tutar?
Kullanıcıları meşgul ederken spam yapmamak için beklenen küçük bir bildirim seti kullanın:
- Durum değişiklikleri
- Takip ettikleri taleplerde yeni yorumlar
- Bahsetmeler (@-tag) (opsiyonel)
Takibi kolaylaştırın (genellikle gönderme/oylama/yorum yapma anında otomatik takip). Kullanıcılara seçenekler sunun:
- Hızlı geri bildirim için uygulama içi bildirimler
- Önemli güncellemeler için e-posta
- Günlük/haftalık özet (digest) e-postaları
Her e-postada abonelikten çıkış linki olmalı ve uygulamada açık bildirim tercihleri (ör. /settings/notifications) bulunmalıdır.