Katkıda Bulunmaya Başlayın
Hoş geldiniz! Pano açık kaynaklı bir projedir ve topluluk katkılarını seviyoruz. İster hata düzeltin, ister yeni özellikler ekleyin veya dokümantasyonu geliştirin, yardımınız değerlidir.
Depolarımız (Repositories)
Pano, her biri belirli bir amaca hizmet eden birkaç depodan oluşur:
- Pano (Core): Ana backend deposu (Kotlin/Vert.x).
- panel-ui: Yönetim paneli arayüzü (SvelteKit).
- setup-ui: İlk kurulum sihirbazı (SvelteKit).
- vanilla-theme: Varsayılan resmi tema (SvelteKit).
- pano-mc-plugin: Minecraft sunucu tarafı entegrasyon eklentisi.
- docs: Bu dokümantasyon deposu.
Versiyon Türleri (Release Types)
Dallarımızda (branches) üç aşamalı bir yayın döngüsü izliyoruz:
| Tür | Dal (Branch) | Stabilite | Açıklama |
|---|---|---|---|
| Alpha | alpha | Düşük | Aktif geliştirme, sık güncellemeler. Köklü değişiklikler içerebilir. |
| Beta | beta | Orta | Yayın öncesi aşama. Genellikle stabildir ancak küçük hatalar olabilir. |
| Release | main | Yüksek | Yayına hazır. En stabil versiyon. |
Teknoloji Yığını
Pano, performans ve esneklik sağlamak için modern teknolojilerle oluşturulmuştur:
- Backend: Kotlin, Vert.x, Spring DI, JVM 11+ hedefli.
- Frontend: SvelteKit, Bootstrap 5, SASS.
- Çalışma Zamanı: Frontend servislerimizi çalıştırmak için Bun kullanılır.
- Paketleme: Projeler ZIP dosyaları halinde paketlenir ve tek bir çalıştırılabilir JAR dosyasına gömülür.
Katkı Kuralları
Kod tabanının kalitesini korumak için lütfen şu kurallara uyun:
- Branching Politikası:
- Pano (Core): Aktif geliştirme dalı
alpha'dır. Tüm Pull Request'leralphadalına açılmalıdır. - UI Projeleri: Bu projelerde genellikle iki dal bulunur ancak varsayılan geliştirme dalı
dev'dir. PR'larınızı lütfendevdalına hedefleyin.
- Pano (Core): Aktif geliştirme dalı
- Conventional Commits: Conventional Commits standartlarını takip ediyoruz. Tüm commit mesajları için bu zorunludur.
- Semantic Versioning & Release: Pano, Semantic Versioning (SemVer) ve Semantic Release kullanır. Commit mesajları, changelog'ların otomatik oluşturulması ve versiyon numarasının belirlenmesi için kritik öneme sahiptir.
- Otomatik Dağıtım: Sürekli entegrasyon ve otomatik dağıtım için GitHub Actions kullanıyoruz.
- Veritabanı Desteği: MariaDB ve MySQL 5.5+ desteği vermeye çalışıyoruz. Veritabanı sorgularınızın ve şema değişikliklerinizin bu sürümlerle uyumlu olduğundan emin olun.
- Migrationlar: Config ve veritabanı migration'larına büyük önem veriyoruz ve olabildiğince geriye dönük uyumluluk sağlamaya çalışıyoruz.
- Kod Formatlaması: Yazdığınız kodun projenin genel yapısına ve stiline uygun olması yeterlidir.
- AI Tarafından Üretilen Kod: Kod üretmek için AI (Yapay Zeka) kullanılabilir; ancak gizli, özel mülkiyetli veya açık kaynak hedeflerimizle çelişen lisanslara sahip hiçbir kodu kabul edemeyiz.
- Kalite: PR'lar (Pull Request) temiz olmalı, gerektiğinde iyi yorumlanmalı ve gönderilmeden önce test edilmelidir.
Pano Nasıl Çalışır?
Pano geleneksel bir web scripti değildir. Tek bir JAR dosyası olarak çalışan (Minecraft sunucusuna benzer) bağımsız bir platformdur. JAR'ı çalıştırdığınızda:
- Gerekli UI dosyalarını dışarı çıkarır.
- Taşınabilir bir Bun çalışma zamanı indirir.
- Başlatma Kontrolleri:
- Platformun halihazırda kurulu olup olmadığını kontrol eder.
- Mevcut sürümle uyumluluk sağlamak için yapılandırma (config) migration'larını gerçekleştirir.
- Eğer platform kurulu ise, veritabanı migration'larını kontrol eder ve uygular.
- Trafiği uygun arayüzlere yönlendiren bir ters proxy (reverse proxy) görevi gören bir backend servisi başlatır:
- Eğer platform kurulu değilse, tüm trafiği setup-ui'a yönlendirir.
- Eğer platform kurulu ise, varsayılan olarak vanilla-theme'i gösterir.
/panelile başlayan tüm rotalar (routes) panel-ui'a proxy edilir.
- Minecraft sunucularıyla şifreli bir WebSocket bağlantısı üzerinden iletişim kurar.
Dalmaya hazır mısınız? Backend ve Frontend için özel geliştirme kılavuzlarına göz atın.