# Trunçgil Multi-PHP & MySQL Server (Electron) Uygulama Planı Bu plan, Windows platformunda Laragon veya XAMPP benzeri, ancak Electron ile modern bir arayüze sahip, çoklu PHP sürümlerini destekleyen bir geliştirme sunucusu uygulamasının yapımını kapsar. ## Temel Hedefler - [ ] **Çoklu PHP Desteği**: Kullanıcının istediği PHP sürümünü seçip anında aktif edebilmesi. - [ ] **MySQL/MariaDB Yönetimi**: Veritabanı servisinin uygulama içinden başlatılıp durdurulabilmesi. - [ ] **Nginx Entegrasyonu**: Web sunucusu olarak Nginx kullanarak performanslı bir yapı sunulması. - [ ] **Material UI (MUI)**: Tüm arayüz sisteminde modern ve standart bir görünüm için MUI kullanımı. - [ ] **Gelişmiş Ayarlar (Settings)**: Alias yapılandırması, VHost yönetimi ve özel dizin eşlemeleri. - [ ] **Dinamik İndirme (Download Manager)**: Kurulumda boş gelen uygulamanın kullanıcı isteğiyle PHP, MySQL, Nginx gibi servisleri indirebilmesi. - [ ] **Proje Bazlı Sürüm Yönetimi**: Hangi projenin/dizinin hangi PHP ve MySQL sürümüyle çalışacağının tekil olarak belirlenmesi. - [ ] **Kurumsal Kimlik**: Belirlenen renk paleti (`#153E5E`, `#4A7CA3`) ve logo (`truncgil-multiphp-server.svg`) ile markalı bir arayüz. - [ ] **Otomatik Sürüm Algılama (Auto-Detect)**: Proje dizinindeki `composer.json` dosyasını analiz ederek gerekli PHP ve Laravel sürümünü otomatik tespit etme. - [ ] **Arkaplanda Çalışma (System Tray)**: Uygulamanın sistem tepsisinde (tray) çalışarak servisleri yönetmeye devam etmesi. - [ ] **Windows Servis Entegrasyonu**: Nginx, PHP ve MySQL servislerinin opsiyonel olarak Windows Servisi (`sc.exe` veya `winsw`) olarak kurulup yönetilebilmesi. - [ ] **Uluslararasılaştırma (i18n)**: Uygulamanın Türkçe, İngilizce ve Almanca gibi çoklu dil desteği sunması (`tr.json`, `en.json`, `de.json`). - [ ] **Otomatik Konfigürasyon**: VHost, PHP.ini ve MySQL ayarlarının kullanıcı müdahalesi olmadan hazırlanması. ## Teknik Detaylar ve Modern Yaklaşım (2026 Standartları) ### 1. Teknoloji Yığını ve Araçlar Bakım kolaylığı ve tip güvenliği için proje modern araçlarla yapılandırılacaktır: - **Dil**: **TypeScript** (Tüm süreçlerde tip güvenliği için). - **Build Aracı**: **electron-vite** (Vite tabanlı, hızlı derleme ve süreç yönetimi). - **Framework**: **React** (veya Vue), durum yönetimi için verinin Main sürece sadık kaldığı (Single Source of Truth) bir yapı. - **Paketleme**: **Electron Forge** ve **electron-updater** (Otomatik güncelleme desteği için). ### 2. Güvenlik Odaklı Mimari (Security-First) Renderer (UI) sürecinin doğrudan sistem kaynaklarına erişimi kesinlikle engellenecektir: - **Context Isolation & Sandboxing**: `contextIsolation: true` ve `sandbox: true` zorunlu olarak aktif edilecek. - **Preload Scripts**: Renderer ve Main arasındaki tek köprü. `contextBridge` ile sadece gerekli fonksiyonlar güvenli bir şekilde aktarılacak. - **IPC Service Layer**: Tüm sistem işlemleri (dosya yazma, servis başlatma) `ipcMain.handle` ve `ipcRenderer.invoke` üzerinden asenkron servisler olarak kurgulanacak. ### 3. Servis ve İşlem Yönetimi (Node.js) - **Modüler Main Process**: Mantık `main.ts` içinde boğulmak yerine `src/main/services/`, `src/main/ipc/` gibi klasörlere ayrılacak. - **Worker Threads**: Ağır CPU gerektiren işlemler (ZIP açma, log analizi vb.) ana süreci (Main) bloklamaması için Worker thread'lerde çalıştırılacak. - **Child Process & Windows Services**: - Servisler varsayılan olarak `child_process.spawn` ile uygulama açıkken yönetilir. - Kullanıcı isteğine bağlı olarak `winsw` (Windows Service Wrapper) veya benzeri bir yöntemle kalıcı Windows Servisi olarak sisteme kurulabilir. - **System Tray Yönetimi**: - Uygulama ana ekranı kapatıldığında sistem tepsisinde çalışmaya devam eder (Minimize to tray). - Sağ tık menüsü ile tüm servisleri "Durdur/Başlat" ve "Çıkış" seçenekleri sunulur. ### 4. Kullanıcı Arayüzü & i18n - **Material UI (MUI)**: Kurumsal kimlik renkleri (`#153E5E`, `#4A7CA3`) ile premium tasarım. - **i18n (Localization)**: `tr.json`, `en.json`, `de.json` dosyaları `locales/` klasöründe tutulacak. `i1ext` benzeri bir kütüphane ile hem Renderer hem de Main süreçte dil desteği sunulacak. - **Code Splitting**: Uygulama RAM kullanımını optimize etmek için lazy loading kullanılacak. ### 5. Performans ve Bakım - **ASAR Integrity**: Paketleme sırasında bütünlük kontrolü aktif edilecek. - **Lazy Load & Startup**: V8 snapshot ve asenkron modül yükleme ile başlangıç hızı optimize edilecek. - **Auto-Update**: Kullanıcının müdahalesine gerek kalmadan arka planda güncelleme kontrolü. ## Klasör Yapısı (Best Practice) ``` multiphp/ ├── src/ │ ├── main/ # Ana süreç (TypeScript) │ │ ├── services/ # ProcessManager, DownloadService, ConfigService │ │ ├── ipc/ # IPC Handlers │ │ └── index.ts # Giriş noktası │ ├── preload/ # Bridge scriptleri │ ├── renderer/ # UI (React/Vite) │ │ ├── components/ │ │ ├── hooks/ │ │ └── locales/ # tr.json, en.json... │ └── shared/ # Main ve Renderer ortak tipler/sabitler ├── bin/ # Portable binary'ler (İndirildikten sonra) ├── config/ # Şablonlar (Nginx, PHP, MySQL) ├── out/ # Build çıktıları └── package.json ``` ## Doğrulama ve Test Adımları 1. **İzolasyon**: Farklı PHP sürümlerinin çakışmadan çalışması. 2. **Güvenlik Testi**: Renderer içinden Node yeteneklerine erişilemediğinin teyidi. 3. **Performans**: Başlangıç süresi ve RAM kullanım ölçümleri. 4. **Temiz Kapanış**: Uygulama kapandığında tüm alt süreçlerin (Nginx, PHP, MySQL) sonlanması.