101 lines
3.3 KiB
Markdown
101 lines
3.3 KiB
Markdown
# PRD — imajViewer
|
||
|
||
> Product Requirements Document
|
||
> Versiyon: 1.0
|
||
> Tarih: 2026-07-22
|
||
|
||
---
|
||
|
||
## 1. Ürün Özeti
|
||
|
||
**imajViewer**, Flutter ile geliştirilmiş, Linux masaüstünde çalışan ultra hafif bir görüntü izleyici uygulamasıdır.
|
||
12'den fazla yüksek çözünürlüklü resmi aynı anda açabilir, fare tekerleği ile anlık zoom yapabilir ve
|
||
tüm pencere alanını resim göstermek için kullanır.
|
||
|
||
## 2. Hedef Kitle
|
||
|
||
- Linux kullanıcıları
|
||
- Fotoğrafçılar, tasarımcılar (hızlı önizleme ihtiyacı)
|
||
- Yüksek sayıda resim arasında hızlıca gezinmek isteyen kullanıcılar
|
||
|
||
## 3. Fonksiyonel Gereksinimler
|
||
|
||
### F-01: Resim Açma
|
||
- Kullanıcı dosya yöneticisinden sürükle-bırak ile resim ekleyebilir
|
||
- Aynı anda 12+ resim açılabilir
|
||
- Desteklenen formatlar: PNG, JPEG, WebP, BMP, GIF (statik)
|
||
|
||
### F-02: Zoom
|
||
- Fare tekerleği (mouse scroll) ile kademesiz zoom
|
||
- Zoom odağı fare imlecinin bulunduğu nokta olmalı
|
||
- Zoom oranı: %10 - %1000 arası
|
||
|
||
### F-03: Frameless Pencere
|
||
- Native title bar yok, sadece sağ üstte küçült (minimize) ve kapat (close) butonları
|
||
- Pencere sürüklenebilir (üst kısımdan)
|
||
- Pencere boyutlandırılabilir (kenarlardan/köşelerden)
|
||
|
||
### F-04: Görüntüleme
|
||
- Scroll bar yok
|
||
- Resim pencereye sığacak şekilde başlangıçta yerleşir (fit)
|
||
- Siyah/zemin renkli arka plan
|
||
- Pencere yeniden boyutlandırılınca resim yeniden ortalanır
|
||
|
||
### F-05: Navigasyon (ileri versiyon)
|
||
- Klavye kısayolları (← → ile resim değiştirme)
|
||
- Alt kısımda thumbnail strip
|
||
|
||
## 4. Fonksiyonel Olmayan Gereksinimler
|
||
|
||
### NF-01: Performans
|
||
- 12 adet 4K (3840x2160) resim aynı anda açıkken akıcı zoom (en az 60 FPS)
|
||
- Bellek kullanımı 2 GB'ı geçmemeli
|
||
- Resimler GPU'da işlenmeli, CPU yeniden ölçekleme yapılmamalı
|
||
|
||
### NF-02: Başlangıç Süresi
|
||
- Uygulama 2 saniyeden kısa sürede açılmalı
|
||
|
||
### NF-03: Binary Boyutu
|
||
- Derlenmiş uygulama 50 MB'ı geçmemeli
|
||
|
||
### NF-04: Güvenilirlik
|
||
- Büyük resimler (10000x10000 pixel) uygulamayı çökertmemeli
|
||
- Bellek sınırı aşılınca en eski resim otomatik boşaltılmalı
|
||
|
||
## 5. UI Tasarım İlkeleri
|
||
|
||
- **Minimalist:** Sadece resim var, gereksiz hiçbir UI öğesi yok
|
||
- **Karanlık tema:** Siyah (#1a1a1a) zemin
|
||
- **Frameless:** Hiçbir pencere çerçevesi görünmez
|
||
- **Duyarlı:** Pencere boyutu değişince resim otomatik yeniden boyutlanır
|
||
|
||
## 6. Teknik Yığın
|
||
|
||
| Bileşen | Teknoloji |
|
||
|---|---|
|
||
| UI Framework | Flutter 3.44+ |
|
||
| Platform | Linux Desktop (GTK arkaplan) |
|
||
| Dil | Dart 3.12+ |
|
||
| Window Yönetimi | window_manager |
|
||
| State Yönetimi | ValueNotifier / ChangeNotifier |
|
||
| Resim İşleme | dart:ui Image + ImageCache |
|
||
| Render | Skia / Impeller (GPU) |
|
||
|
||
## 7. Kullanıcı Akışı
|
||
|
||
1. Uygulama açılır → boş siyah ekran
|
||
2. Kullanıcı dosyaları sürükler veya `Ctrl+O` ile açar
|
||
3. Resim(ler) pencereye sığacak şekilde görüntülenir
|
||
4. Fare tekerleği → zoom in/out (imleç odağında)
|
||
5. Fare sürükleme → resmi kaydırma (pan)
|
||
6. Pencere yeniden boyutlandırma → resim yeniden ortalanır
|
||
7. Sağ üst X → uygulama kapanır
|
||
|
||
## 8. Başarı Kriterleri
|
||
|
||
- [ ] 12 adet 4K resim açıkken zoom akıcı (60 FPS)
|
||
- [ ] Frameless pencere sorunsuz çalışıyor
|
||
- [ ] Scroll zoom imleç odağında çalışıyor
|
||
- [ ] Bellek kullanımı 2 GB altında
|
||
- [ ] Binary boyutu 50 MB altında
|