83 lines
5.9 KiB
Markdown
83 lines
5.9 KiB
Markdown
# 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ı.
|