Skip to content

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:

🚀 Versiyon Türleri (Release Types)

Dallarımızda (branches) üç aşamalı bir yayın döngüsü izliyoruz:

TürDal (Branch)StabiliteAçıklama
AlphaalphaDüşükAktif geliştirme, sık güncellemeler. Köklü değişiklikler içerebilir.
BetabetaOrtaYayın öncesi aşama. Genellikle stabildir ancak küçük hatalar olabilir.
ReleasemainYüksekYayı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'ler alpha dalı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ütfen dev dalına hedefleyin.
  • 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:

  1. Gerekli UI dosyalarını dışarı çıkarır.
  2. Taşınabilir bir Bun çalışma zamanı indirir.
  3. 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.
  4. 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.
    • /panel ile başlayan tüm rotalar (routes) panel-ui'a proxy edilir.
  5. 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.