# 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
```

---

## phpMyAdmin Entegrasyonu
- phpMyAdmin'in en son sürümünün (all-languages.zip) otomatik indirilmesi ve ayıklanması.
- Nginx üzerinde `/phpmyadmin` aliası ile yapılandırma.
- `config.inc.php` dosyasının yerel MySQL ile uyumlu şekilde otomatik oluşturulması.
- Dashboard üzerinde phpMyAdmin'e hızlı erişim butonu.

---

## 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`
