Files
multiphp/implementation_plan.md
T

93 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`