85 lines
4.2 KiB
Markdown
85 lines
4.2 KiB
Markdown
# Trunçgil Multi-PHP & MySQL Server (Electron) Uygulama Planı
|
||
|
||
Bu plan, Windows platformu öncelikli olmak üzere, Laragon veya XAMPP benzeri, Electron tabanlı modern bir arayüze sahip ve çoklu PHP/MySQL sürümlerini destekleyen bir geliştirme sunucusu uygulamasının yapımını kapsar.
|
||
|
||
## Temel Hedefler
|
||
|
||
### 1. Servis Yönetimi
|
||
- [ ] **Ç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 yönetimi.
|
||
- [ ] **Nginx Entegrasyonu**: Yüksek performanslı web sunucusu yapılandırması.
|
||
- [ ] **Dinamik İndirme (Download Manager)**: Gerekli servis bileşenlerinin (PHP, MySQL, Nginx) uygulama içinden indirilebilmesi.
|
||
|
||
### 2. Kullanıcı Deneyimi ve Arayüz
|
||
- [ ] **Material UI (MUI)**: Premium, modern ve standart bir görünüm.
|
||
- [ ] **Sistem Tepsisi (Tray)**: Uygulamanın arka planda çalışarak servisleri yönetmeye devam etmesi.
|
||
- [ ] **Çoklu Dil Desteği (i18n)**: Türkçe, İngilizce ve Almanca dil seçenekleri.
|
||
- [ ] **Otomatik Sürüm Algılama**: `composer.json` analizi ile projeye uygun PHP sürümünü otomatik tespit etme.
|
||
|
||
### 3. Gelişmiş Özellikler
|
||
- [ ] **VHost & Alias Yönetimi**: Özel domain ve dizin eşlemeleri.
|
||
- [ ] **Proje Bazlı Yönetim**: Her proje için özel PHP/MySQL sürümü atayabilme.
|
||
- [ ] **Windows Servis Entegrasyonu**: Servislerin opsiyonel olarak arka plan servisi olarak kurulması.
|
||
|
||
---
|
||
|
||
## Teknik Mimari (2026 Standartları)
|
||
|
||
### 1. Teknoloji Yığını
|
||
- **Dil**: TypeScript (Uçtan uca tip güvenliği).
|
||
- **Build Aracı**: [electron-vite](https://electron-vite.org/) (Hızlı derleme ve modern süreç yönetimi).
|
||
- **Frontend Framework**: **React** (MUI ile tam uyum için).
|
||
- **UI Kütüphanesi**: Material UI (MUI) v6+.
|
||
- **Paketleme**: Electron Forge & Electron Updater.
|
||
|
||
### 2. Güvenlik ve İletişim (Security-First)
|
||
- **İzolasyon**: `contextIsolation: true` ve `sandbox: true` yapılandırması.
|
||
- **Preload Scripts**: Renderer ve Main süreçleri arasındaki yegane güvenli köprü.
|
||
- **IPC Service Layer**: Tüm sistem işlemleri (dosya yazma, servis yönetimi) asenkron IPC handler'lar üzerinden yürütülecek.
|
||
|
||
### 3. Platform Stratejisi (Strategy Pattern)
|
||
İşletim sistemine özel işlemler (servis başlatma, hosts düzenleme) için bir `OSOperations` interface'i kullanılacaktır:
|
||
- **Windows**: `sc.exe`, `winsw` ve `sudo-prompt` kullanımı.
|
||
- **Linux/macOS**: `systemd`, `launchd` ve `sudo` entegrasyonu.
|
||
- **Dosya Yolları**: Tüm platformlarda uyum için `path.join()` ve `os.EOL` kullanımı.
|
||
|
||
---
|
||
|
||
## Klasör Yapısı (Proposed)
|
||
|
||
```
|
||
multiphp/
|
||
├── locales/ # i18n JSON dosyaları (tr.json, en.json, de.json)
|
||
├── src/
|
||
│ ├── main/ # Ana süreç (Services, IPC Handlers, Tray)
|
||
│ │ ├── services/ # ProcessManager, DownloadService, ConfigService
|
||
│ │ └── ipc/ # IPC Event Handlers
|
||
│ ├── preload/ # ContextBridge tanımları
|
||
│ ├── renderer/ # React UI (Components, Hooks, Pages)
|
||
│ └── shared/ # Ortak tipler, interface'ler ve sabitler
|
||
├── bin/ # İndirilen portable binary'ler
|
||
├── config/ # Servis konfigürasyon şablonları (nginx.conf, php.ini)
|
||
├── resources/ # Statik varlıklar (Logolar, ikonlar)
|
||
└── package.json
|
||
```
|
||
|
||
---
|
||
|
||
## Doğrulama ve Test Planı
|
||
|
||
### Otomatik Testler
|
||
- **Unit Tests**: `vitest` ile servis mantığının ve config jeneratörlerinin testi.
|
||
- **IPC Tests**: Main ve Renderer arasındaki iletişimin doğrulanması.
|
||
|
||
### Manuel Doğrulama Adımları
|
||
1. **Servis İzolasyonu**: Birden fazla PHP sürümünün çakışmadan çalıştığının doğrulanması.
|
||
2. **Güvenlik Kontrolü**: Renderer sürecinden doğrudan `fs` veya `child_process` erişiminin engellendiğinin teyidi.
|
||
3. **Tray Fonksiyonelliği**: Uygulama kapatıldığında servislerin tray üzerinden yönetilebildiğinin kontrolü.
|
||
4. **i18n Doğrulaması**: Dil değişikliğinin tüm arayüzde (ana ekran, menüler, tray) anında yansıması.
|
||
|
||
---
|
||
|
||
## Kurumsal Kimlik
|
||
- **Renk Paleti**: `#153E5E` (Ana), `#4A7CA3` (İkincil).
|
||
- **Logo**: `logo/truncgil-multiphp-server.svg`
|