✍️ Document Style Guide
Bu rehber, ekibimizin bilgi birikimini (Knowledge Base) tutarlı, okunabilir ve sürdürülebilir bir şekilde yönetmemiz için oluşturulmuştur. Rehberin amacı, Döküman özelinde ve docusaurus özelinde rehberlik sağlamaktır. Ancak genel konular (markdown vb.) için Markdown style guide - Google takip ediyoruz. Ayrıca markdown nasıl yazılır bilmiyorsanız buraya bakabilirsiniz.
1. Genel Yazım Prensipleri
Dil ve Ton
- Yalınlık: Karmaşık cümlelerden kaçının. Bir geliştiricinin en hızlı şekilde bilgiye ulaşmasını hedefleyin.
- Dil: Teknik terimleri orijinal (İngilizce) halleriyle bırakın, ancak açıklamaları Türkçe yapın. (Örn: "Database bağlantı havuzu (connection pool) konfigürasyonu...").
- Aktif Dil: "Yapılmalıdır" yerine "Yapın" veya "Yapıyoruz" gibi daha net ve aktif ifadeler kullanın.
Görsel Hiyerarşi
- Başlıklar: Sadece iki seviye başlık (
##ve###) kullanmaya özen gösterin. Çok derin hiyerarşi okunabilirliği azaltır. - Vurgular: Kritik terimleri kalın, dosya isimlerini veya kod parçalarını
satır içi kodşeklinde belirtin. - Liste Kullanımı: Adım adım işlemler için numaralı listeleri kullanın.
2. Format Spesifik Kurallar
Genel Döküman Layout
Genel olarak, yeni bir döküman yazmadan önce aşağıdaki format ile başlayınız:
---
sidebar_position: 1 # (Optional) Hangi konumda gözükmesini istiyorsanız veya konumda değişiklik yapmak istiyorsanız kullanabilirsiniz
slug: /john # (Optional) döküman isminden bağımsız bir adres belirtmek için kullanılır. (docs.teamhalaskar.com/john)
tags: [backend, database, infra] # (Optional) dökümanı ararken kolaylaştırmak için kullanılır.
---
# Document Title
Short introduction.
[TOC]
## Topic
Content.
## See also
- [link-to-more-info](#)
📜 ADR (Architectural Decision Records)
Yeni bir mimari karar alınırken mutlaka docs/adr/template.md kullanılmalıdır.
- Dosya Adı:
000X-kebab-case-baslik.md(Örn:0004-grpc-migration.md) - Zorunlu Alanlar:
- Context (Bağlam): Karar anındaki durum nedir? Hangi kısıtlar var?
- Decision (Karar): Net olarak neyi seçtik?
- Consequences (Sonuçlar): Bu kararın bize maliyeti veya kazancı ne olacak?
datemetadata kesinlikle eklenmelidir.sidebar_positionmetadata kesinlikle bulunmamalıdır.
Örnek format aşağıdaki gibidir:
---
title: "ADR-00X: [Kararın Başlığı]"
date: YYYY-MM-DD
status: "Proposed | Accepted | Superseded | Deprecated"
tags: [backend, database, infra]
---
# ADR-00X: [Kararın Başlığı]
- **Tarih:** 202X-XX-XX
- **Durum:** Proposed (Önerildi) / Accepted (Kabul Edildi)
- **Karar Vericiler:** @kullanici1, @kullanici2
- **İlgili Issue/PR (varsa) :** [#123](link)
## 1. Bağlam (Context)
Bu kararı neden almamız gerekiyor? Karşılaştığımız sorun nedir? Mevcut durumdaki kısıtlamalar neler?
> *Örn: Mevcut monolitik yapıdaki DB yükü arttığı için ölçeklendirme sorunu yaşıyoruz.*
## 2. Seçenekler (Alternatives)
Değerlendirilen alternatif çözümler nelerdir?
- **Seçenek A:** [Açıklama]
- **Seçenek B:** [Açıklama]
## 3. Karar (Decision)
Hangi seçeneği, hangi gerekçeyle seçtik?
> *Örn: Seçenek A'yı seçtik çünkü mevcut ekibimiz bu teknolojiye daha hakim ve entegrasyon süresi %30 daha kısa.*
## 4. Sonuçlar (Consequences)
Bu karar neleri değiştirecek? Avantajları ve dezavantajları nelerdir?
### ✅ Artıları (Pros)
- Maddeler halinde...
### ❌ Eksileri (Cons)
- Maddeler halinde...
- Oluşabilecek teknik borçlar veya riskler.
## 5. Notlar ve Referanslar
Varsa makaleler, benchmark sonuçları veya toplantı notları.
👨🍳 Cookbook "Tarifleri" (Recipes)
Bir teknik tarif veya kurulum rehberi yazarken şu akışı izleyin:
- Problem: Bu tarif hangi sorunu çözüyor?
- Ön Koşullar: Hangi araçlar yüklü olmalı?
- Çözüm/Adımlar: Kod blokları ve ekran görüntüleri ile adım adım uygulama.
- Doğrulama: İşlemin başarılı olduğunu nasıl anlarız?
3. Docusaurus Özelliklerini Etkili Kullanma
Uyarı Kutuları (Admonitions)
Okuyucunun dikkatini dağıtmadan önemli bilgileri vurgulayın:
Pratik bir yöntem veya kısayol paylaşırken bunu kullanın.
Genel bilgilendirmeler ve ek kaynaklar için bunu kullanın.
Veri kaybı, güvenlik riski veya geri dönülemez işlemler için mutlaka bunu kullanın.
Kod Blokları
Her zaman dil belirterek (js, bash, yaml vb.) kod bloğu kullanın ve mümkünse başlık ekleyin:
const dbConfig = { host: 'localhost' };