first commit
125
uploads/mcp_docs/fe466dbf-3791-47fa-aefe-4fd132ce10bf/RULES.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Admin Panel Geliştirme Kuralları
|
||||
|
||||
Bu doküman, mevcut Axum + Tokio backend için geliştirilecek admin panelin uyacağı teknik ve mimari kuralları tanımlar.
|
||||
|
||||
## 1. Genel İlkeler
|
||||
|
||||
- Kod mümkün olduğunca modüler olmalı
|
||||
- Her component tek bir sorumluluk üstlenmeli
|
||||
- Tekrarlı kodlar ortak utility ve component’lere taşınmalı
|
||||
- UI, API client ve state yönetimi ayrıştırılmalı
|
||||
- Üretim odaklı düşünülmeli
|
||||
- Hatalar kullanıcı dostu şekilde gösterilmeli
|
||||
- Hassas bilgiler loglanmamalı
|
||||
|
||||
## 2. Backend Uyum Kuralları
|
||||
|
||||
- Mevcut endpoint sözleşmeleri değiştirilmemeli
|
||||
- Request/response shape varsayılmamalı
|
||||
- Sadece dokümante edilmiş endpointler kullanılmalı
|
||||
- Global error formatına uyulmalı
|
||||
- Authorization gereken endpointlerde Bearer token kullanılmalı
|
||||
- Image stream ve upload işlemlerinde uygun content-type korunmalı
|
||||
|
||||
## 3. Authentication Kuralları
|
||||
|
||||
- Login başarılı olursa access ve refresh token saklanmalı
|
||||
- Access token süresi dolarsa refresh mekanizması denenmeli
|
||||
- Refresh başarısız olursa kullanıcı login sayfasına atılmalı
|
||||
- Logout sırasında tokenlar temizlenmeli
|
||||
- Protected sayfalar auth olmadan erişilememeli
|
||||
- Tokenlar mümkünse güvenli storage stratejisiyle tutulmalı
|
||||
|
||||
## 4. Route Koruma Kuralları
|
||||
|
||||
- Public sayfalar ile private sayfalar ayrılmalı
|
||||
- Yetkisiz erişimde redirect uygulanmalı
|
||||
- Session durumu app açılışında doğrulanmalı
|
||||
- Kullanıcı yüklenmeden protected page render edilmemeli
|
||||
- Yetki kontrolü UI seviyesinde de yapılmalı
|
||||
|
||||
## 5. API Client Kuralları
|
||||
|
||||
- Tüm API çağrıları merkezi client üzerinden yapılmalı
|
||||
- Base URL environment değişkeninden okunmalı
|
||||
- Error handling tek noktada normalize edilmeli
|
||||
- 401 durumunda otomatik refresh akışı tetiklenmeli
|
||||
- Aynı anda gelen çoklu 401 istekleri için deduplication düşünülmeli
|
||||
- Timeout ve abort desteği eklenmeli
|
||||
|
||||
## 6. UI / UX Kuralları
|
||||
|
||||
- Responsive tasarım zorunlu
|
||||
- Loading, empty ve error state’leri ayrı gösterilmeli
|
||||
- Kritik aksiyonlarda confirmation kullanılmalı
|
||||
- Form validation net olmalı
|
||||
- Başarılı ve başarısız işlemler için feedback verilmeli
|
||||
- Erişilebilirlik temel seviyede sağlanmalı
|
||||
- Sidebar ve topbar düzeni tutarlı olmalı
|
||||
|
||||
## 7. State Management Kuralları
|
||||
|
||||
- Auth state merkezi bir store’da tutulmalı
|
||||
- Server state ile UI state ayrılmalı
|
||||
- Cache, invalidation ve refetch davranışı kontrollü olmalı
|
||||
- Gereksiz global state yaratılmamalı
|
||||
- Session bazlı bilgiler açıkça yönetilmeli
|
||||
|
||||
## 8. Güvenlik Kuralları
|
||||
|
||||
- Tokenlar client-side’da güvenli şekilde saklanmalı
|
||||
- Console.log ile hassas veri basılmamalı
|
||||
- XSS riskine karşı kullanıcı inputları dikkatli işlenmeli
|
||||
- Admin olmayan kullanıcılar için erişim engeli olmalı
|
||||
- Unauthorized ve forbidden cevapları düzgün ayrıştırılmalı
|
||||
- Güvenlik açıkları yaratabilecek “debug” davranışları production’a taşınmamalı
|
||||
|
||||
## 9. Dosya ve Klasör Kuralları
|
||||
|
||||
- `api/` klasörü yalnızca HTTP istemcisi ve endpoint wrapper’ları içermeli
|
||||
- `components/` sadece tekrar kullanılabilir UI parçalarını içermeli
|
||||
- `pages/` veya `app/` routing katmanı için kullanılmalı
|
||||
- `stores/` auth ve UI state yönetimi için ayrılmalı
|
||||
- `types/` ortak tipleri içermeli
|
||||
- `utils/` yardımcı fonksiyonlar için kullanılmalı
|
||||
|
||||
## 10. Kod Kalitesi Kuralları
|
||||
|
||||
- Anlamlı isimlendirme kullan
|
||||
- Magic number/string kullanımını azalt
|
||||
- Ortak tipleri tekrar etme
|
||||
- Fonksiyonları küçük ve test edilebilir tut
|
||||
- Kenar durumlarını düşün
|
||||
- Hata mesajları kullanıcı seviyesinde sade olmalı
|
||||
- Gereksiz bağımlılık eklenmemeli
|
||||
|
||||
## 11. Test Kuralları
|
||||
|
||||
- Auth akışı test edilmeli
|
||||
- Protected route davranışı test edilmeli
|
||||
- API client error handling test edilmeli
|
||||
- Kritik componentler için en az temel UI testleri yazılmalı
|
||||
- Refresh token flow test edilmeli
|
||||
- Upload/list/stream akışları için integration testler düşünülmeli
|
||||
|
||||
## 12. Dokümantasyon Kuralları
|
||||
|
||||
- Yeni ekranlar kısa şekilde dokümante edilmeli
|
||||
- Önemli kararlar README veya docs altında açıklanmalı
|
||||
- Endpoint kullanımı net örneklerle gösterilmeli
|
||||
- Kurallar güncellendikçe bu dosya da güncellenmeli
|
||||
|
||||
## 13. Çıktı Üretim Kuralı
|
||||
|
||||
Yeni özellik tasarlarken şu sırayı takip et:
|
||||
|
||||
1. İhtiyacı netleştir
|
||||
2. Backend uyumluluğunu kontrol et
|
||||
3. Mimariyi seç
|
||||
4. Component ve sayfa yapısını belirle
|
||||
5. API bağlantılarını kur
|
||||
6. Auth ve security’yi tamamla
|
||||
7. Testleri ekle
|
||||
8. Dokümante et
|
||||
|
||||
ares_cf00fb1de71a4854a6ac32065ebb3833b90e0ab453d2442c96c8f0e26da99123
|
||||
BIN
uploads/originals/33f680bf-29b3-4a9c-ab74-dbc08fdd1399.jpg
Normal file
|
After Width: | Height: | Size: 390 KiB |
BIN
uploads/originals/515ff540-a05c-44e9-8439-b9f2c30c71a8.jpg
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
uploads/originals/9477b30e-9fe0-4edd-9be3-8e4901690204.png
Normal file
|
After Width: | Height: | Size: 307 KiB |
BIN
uploads/originals/991f61bf-22c5-4dd2-aee7-761e49669202.jpg
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
uploads/originals/99bbfa52-28e8-43d7-9c0f-02e6b232d9d3.jpg
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
uploads/originals/a9eeba22-7b38-45e8-b9f4-d70fb32a0453.jpg
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
uploads/originals/c29c76db-80ea-46e1-a5b4-976f8f0f9732.jpg
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
uploads/originals/d8bb4bdc-575e-401a-a076-1df3bae35b43.jpg
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
uploads/originals/da1e4bfd-a0cf-401e-9098-766b045af1fa.png
Normal file
|
After Width: | Height: | Size: 307 KiB |
BIN
uploads/variants/2162376f-0b35-4ed3-bf41-7db748f85d31.avif
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
uploads/variants/3fdba840-b2c2-46f9-a4be-5f05d0b7c80e.avif
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
uploads/variants/43d200f9-3f26-49db-9cb0-36ee9eade22f.avif
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
uploads/variants/5901eb23-4733-4899-9e93-e76eb6fa5560.avif
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
uploads/variants/5d36d1bb-bd1c-4074-b1b9-cfb99171fd9c.avif
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
uploads/variants/73712e87-6dbc-4590-9457-9f8cd2dd189a.avif
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
uploads/variants/8b8a0554-003b-4ff5-b2a3-07aea2d5d72e.avif
Normal file
|
After Width: | Height: | Size: 297 KiB |
BIN
uploads/variants/f54ef658-d1d5-4849-bc5a-1d9a07ce8b4e.avif
Normal file
|
After Width: | Height: | Size: 915 KiB |
BIN
uploads/variants/fea2e5e7-c60e-4fd8-8934-37c6fd49c38c.avif
Normal file
|
After Width: | Height: | Size: 165 KiB |