Initial commit: imajViewer Flutter Linux image viewer
This commit is contained in:
commit
8369ec2a5d
33 files changed
+2165
No files matched your search
@@ -0,0 +1,100 @@
|
||||
# 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
|
||||
Reference in new issue
Block a user