Files
multiphp/implementation_plan.md

4.5 KiB
Raw Permalink Blame History

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 (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