Pano, Minecraft için geliştirilmiş ileri seviye bir web platformudur. Geleneksel web scriptlerinden farklı olarak, tek bir JAR dosyası ile çalıştırılabilen, CMS benzeri özelliklere sahip kapsamlı bir platformdur.
- Oyun İçi Entegrasyon: LuckPerms, AuthMe Reloaded ve Ban yönetim sistemleri ile sorunsuz ve derinlemesine entegrasyon sağlar.
- Kesintisiz Etkileşim: Oyuncular oyundan çıksa dahi, web platformu üzerinden oyun içi dinamiklerle etkileşimde kalmalarını sürdürmeyi amaçlar.
- Kapsamlı Sunucu Yönetimi: Sunucu başlatma, durdurma, restart işlemlerinin yanı sıra komut yönetimi, dosya yönetimi ve eklenti (plugin) yönetimi gibi yönetimsel araçlar sunar.
- Kullanım Kolaylığı: Tıpkı Spigot/Paper gibi tek bir JAR dosyası üzerinden, ek bir web sunucusu kurulumuna ihtiyaç duymadan (alışılmış düzen) çalıştırılabilir.
-
Dil: Kotlin
-
Framework: Vert.x
-
Dependency Injection: Spring DI
-
Runtime: JVM 17+ (testler JDK 21 üzerinde çalışır)
-
Database: MariaDB / MySQL (güncel sürümler)
-
Ağ (Portlar):
- Port 80 (HTTP): Kurulum ve arayüz erişimi için açık olmalıdır.
- Port 443 (HTTPS): (Opsiyonel) Kurulum tamamlandıktan sonra SSL yapılandırılmışsa açık olmalıdır.
-
Framework: SvelteKit
-
UI Framework: Bootstrap 5, Animate.css
-
Runtime & Package Manager: Bun (Host için), Rollup (Pluginler için)
-
Style: SASS desteği
-
Dil: JavaScript (TypeScript kullanılmıyor)
-
SSR (Server-Side Rendering): SEO odaklı
-
Microservices: Her arayüz ayrı portta çalışır
-
Reverse Proxy: Backend gerekli arayüze otomatik yönlendirme yapar
-
Build: Tek .jar dosyası olarak dağıtılır (Paper, Spigot, Bungeecord benzeri)
-
İletişim: WebSocket protokolü (MC Plugin ↔ Backend)
-
Güvenlik: End-to-end encryption (RSA + AES-256 hybrid)
-
Multi-Server: Birden fazla Minecraft sunucusu bağlantısı
-
Her UI projesi ayrı ayrı
.zipolarak build edilir -
ZIP dosyaları GitHub'dan indirilip JAR içine eklenir
-
Pano ayağa kalkarken:
- UI ZIP dosyalarını extract eder
- Platforma özgü Bun portable runtime'ı indirir (örn: ARM 64-bit)
- Config.conf dosyası oluşturur
- plugins/ klasörü oluşturur
- themes/ klasörü oluşturur
-
Platform: GitHub Actions
-
Release: Tüm projeler GitHub Releases'e otomatik publish edilir
| Release Türü | Branch | Stabilite | Açıklama |
|-------------|--------|-----------|-----------|
| Alpha | alpha | Düşük | Aktif geliştirme, sık güncellemeler, breaking changes olabilir |
| Beta | beta | Orta | Pre-release, daha stabil |
| Release | main | Yüksek | Production-ready, en stabil versiyon |
-
Pano'nun yönetim arayüzü
-
SvelteKit + Bootstrap 5
-
Build: ZIP dosyası
-
İlk kurulum arayüzü
-
Sadece ilk başta görünür, kurulum sonrası devre dışı kalır
-
SvelteKit + Bootstrap 5
-
Build: ZIP dosyası
-
Varsayılan (SYSTEM) tema — platform jar'ına gömülü gelir ve otomatik güncellenir
-
@panomc/theme-core motoru üzerinde ince bir paket; şablon DEĞİLDİR
-
Önemli: Yeni temalar
bunx @panomc/theme-core new <isim>ile oluşturulur; vanilla fork'lanmaz -
Build: tekrarlanabilir ZIP (zip sha256 = premium lisans kimliği)
-
Minecraft sunucu entegrasyonu
-
Desteklenen Platformlar:
- Spigot
- Paper
- Folia
- Bungeecord
- Velocity
- Fabric
- Core (sadece API JAR'ı)
- Plugin Entegrasyonları:
- AuthMeReloaded
- Diğer auth pluginleri
- Ban pluginleri
- Permission pluginleri
- Bağlantı:
- Birden fazla Minecraft sunucusu Pano'ya bağlanabilir
- WebSocket üzerinden iletişim
- End-to-end encrypted
-
Build: Her platform için ayrı JAR dosyası
-
Dağıtım: GitHub Releases
-
Pano'nun resmi web sitesi
-
Özellikler:
- Marketplace (resource pazarı)
- Üyelik sistemi
- Tema ve addon paylaşım sistemi
-
Deployment: Cloudflare (Serverless, SSR destekli)
-
URL:
- Dev: https://dev.panomc.com (şu anki aktif)
- Production: https://panomc.com (yakında)
- Documentation, website'in
bun run buildsüreci sırasında documentation submodule'ünden otomatik olarak derlenir ve site ile birlikte yayınlanır.
-
Website'in backend servisi
-
Framework: Parsek (Kotlin + Vert.x)
-
Deployment: Coolify (VPS üzerinde)
-
CI/CD: Otomatik deployment
-
Proje dokümantasyonu
-
Framework: VitePress
-
Dil: JavaScript
-
Build: Website'in
bun run buildsüreci sırasında, documentation submodule'ünden otomatik olarak derlenir (manuel indirme/kopyalama yok)
Pano ile Minecraft sunucuları arasındaki iletişim WebSocket protokolü üzerinden gerçekleşir ve end-to-end şifreleme kullanır.
Bağlantı Kurulum Adımları:
- RSA Key Pair Oluşturma (Plugin)
- Plugin sunucuda bir RSA key pair oluşturur
- Public key base64 encoded şekilde Pano backend'e gönderilir
- AES Key Oluşturma (Backend)
- Pano backend 256-bit AES key oluşturur
- AES key, plugin'den gelen RSA public key ile encrypt edilir
- Encrypted AES key, base64 encoded şekilde plugin'e geri gönderilir
- AES Key Decrypt (Plugin)
- Plugin, RSA private key'i kullanarak encrypted AES key'i decrypt eder
- AES key'i güvenli şekilde saklar
- Mesajlaşma
- Her mesaj gönderiminde her iki taraf da kaydedilmiş AES key'i kullanır
- Tüm mesajlar AES-256 ile encrypt/decrypt edilir
- End-to-end encryption sağlanmış olur
Güvenlik Özellikleri:
-
✅ RSA public-key cryptography (key exchange için)
-
✅ AES-256 symmetric encryption (mesajlaşma için)
-
✅ Base64 encoding
-
✅ End-to-end encryption
-
✅ Her bağlantı için unique AES key
-
Backend: Plugin olarak geçer (Kotlin/Java)
-
Frontend: Addon olarak geçer (Svelte)
-
Genel Bilgiler:
- Lisans: MIT
- Repository:
panomc/altında - Manifest:
gradle.properties(id, name, description, dependencies, main class)
-
Yetenekler:
- Seçili temaya özellik ekleme
- Panel'e özellik ekleme
- Mevcut özellikleri değiştirme
- Özellikleri kaldırma
src/panel/: Panel'e özel mantık ve sayfalarsrc/theme/: Temaya özel mantık ve sayfalarsrc/panel/components/: Panel arayüz bileşenlerisrc/theme/components/: Tema arayüz bileşenlerisrc/panel/modals/,src/theme/modals/: Modal bileşenlerisrc/panel/pages/,src/theme/pages/: Sayfa bileşenlerimain.js: Panel ve Tema tanımlarının kaydedildiği ana dosya
-
Vanilla-theme tabanlı
-
Özelleştirilebilir
-
Addon desteği
Pano ekibi tarafından geliştirilen ve desteklenen resmi eklentiler:
- pano-plugin-announcement: Duyuru yönetimi eklentisi. Panel üzerinden duyurular oluşturmanıza ve yönetmenize olanak tanır.
UI tarafında eklenti geliştirirken hızlıca test etmek için aşağıdaki adımları izleyebilirsiniz:
- Eklenti dosyalarınızı doğrudan
plugins/klasörü altına yerleştirin. bun devkomutunu çalıştırarak geliştirme sunucusunu başlatın.- Sayfayı yenileyerek değişiklikleri anında görebilirsiniz.
Important
Geliştirdiğiniz UI eklentisinin çalışabilmesi için Panel -> Ayarlar -> Dev Mode seçeneğinin aktif olması gerekmektedir.
Pano ekosistemi için geliştirilen resmi SDK, PanoMC/sdk motor (engine) workspace'i içinde yer alır. Bu tek depo iki npm paketi yayınlar:
@panomc/theme-core: Tema motoru (route/bridge/lang üretimi,theme-coreCLI).@panomc/sdk: Host (Pano) ile eklentiler/temalar arasındaki köprü (kararlı facade).- Sürümleme: Her iki paket tek ortak sürümü paylaşır (güncel hat:
1.0.0-dev.x). - Tüketim (Consumption):
- Bizim UI'larımız (temalar,
panel-ui): motoru birtheme-coregit submodule olarak taşır. - Diğerleri (
setup-ui,websiteve harici eklenti/tema yazarları):@panomc/sdk'yı doğrudan npm üzerinden kullanır. - Artık hiçbir projede
src/pano-sdksubmodule dizini yoktur.
- Bizim UI'larımız (temalar,
- Amacı: Host (Pano) ile pluginler arasında bir köprü görevi görür. Eklentilere API erişimi ve hazır component'ler (Component Provider) sağlar.
- Yetenekler:
- SvelteKit Wrappers:
page,base,navigating,browser,goto,invalidate,invalidateAllerişimi sağlar. - API Araçları:
ApiUtil(network request) vebuildQueryParams. - Localization:
_(underscore) fonksiyonu ile namespace bazlı çeviri desteği. - Component Provider:
viewComponentile dinamik import ve Svelte hydration desteği. - UI Kayıt:
pano.ui.page.registerile yeni rotalar ekleme. - Navigasyon:
pano.ui.nav.site.editNavLinksile dinamik menü düzenleme. - Ortam Bilgisi:
pano.isPanelile admin paneli kontrolü. - UI Bildirimleri:
pano.utils.toastvepano.utils.tooltip. - Yaşam Döngüsü:
onLoad(pano)veonUnload()hook'ları.
- SvelteKit Wrappers:
- Entegrasyon Yapısı:
- Bizim UI'larımız (Host): Temalar ve
panel-ui, motorutheme-coregit submodule olarak taşır ve projeyle birlikte derler. Bu projeler motoru bir Host olarak kullanır. - npm tüketicileri (Client):
setup-ui,websiteve harici eklenti/tema yazarları@panomc/sdk'yı npm paketi olarak projeye dahil eder ve SDK'yı bir Client gibi kullanır.
- Bizim UI'larımız (Host): Temalar ve
| Rol | Sorumluluklar |
|-----|---------------|
| Lead Developer | Backend + Frontend geliştirme |
| Designer & UI Coder | Tasarım, Bootstrap SASS, CSS |
Toplam: 2 kişi
- Kod Sıralaması: Svelte dosyalarında sıralama:
<head>,<styles>,<html>,<script module>,<script>. - Dinamik Yükleme: Pano API'sine kayıtlı bileşenler, yükü azaltmak için dinamik (lazy) yüklenmelidir.
- Format: Kodlar her zaman Prettier ile formatlanmalıdır.
- Tasarım: Tasarımlar
panel-uivevanilla-themeile tutarlı olmalı. Tablo yapıları (arama, pagination) mevcut sayfaları taklit etmelidir. - Eklenti Ayarları: Genel ayarlar, karmaşık bir yapı gerekmiyorsa ayrı bir sayfa yerine Addon Detail sayfasındaki Hook'lar kullanılarak entegre edilmelidir.
- Plugin Lifecycle:
PanoPluginsınıfı extend edilir.onStartveonUninstallkullanılır. - Context Yönetimi:
applicationContext(Host),pluginBeanContext(Plugin içi),pluginGlobalBeanContext(Eklentiler arası). - Setup Entegrasyonu: Veritabanı işlemleri için Pano kurulumunun bitmesi (
SetupEventListener) beklenmelidir. - Database:
@DBEntity,@Migration,@Daoanotasyonları kullanılır. Enum kullanımı statik stringlere tercih edilmelidir. - API Yapısı:
PanelApi(admin) veLoggedInApi(kullanıcı) tipleri kullanılır. - Activity Logs: Tüm
PanelApiendpointleri için activity log tanımlanması zorunludur. - Permissions:
PanelPermissionextend edilerek ve@PermissionDefinitionanotasyonuyla tanımlanır. - Config:
PluginConfigManagerkullanılır. Ayarlarda statik string yerine Enum kullanımı zorunludur.
- Desteklenen Diller: Türkçe (tr), İngilizce (en), Rusça (ru).
- Namespace: Eklentiler kendi namespace'lerini (
plugins.plugin-id.*) kullanır. - Activity Logs Çevirisi: Activity log mesajları da çeviri dosyalarında tanımlanmalıdır.
Resource: Tema ve addonların genel ve ortak ismi
-
Temalar = Resource
-
Addonlar = Resource
Website üzerinde "resource" paylaşımı bu iki türü kapsar.
-
Pano, geleneksel web scriptler gibi kurulmaz - tek JAR dosyası ile çalışır
-
Her arayüz farklı portlarda çalışır, backend reverse proxy yapar
-
Tüm UI projeleri Bun runtime kullanır
-
SEO odaklı tasarım (SSR sayesinde)
-
Platform bağımsız Bun runtime otomatik indirilir
-
GitHub Actions ile tam otomatik CI/CD pipeline
-
Birden fazla Minecraft sunucusu aynı Pano instance'ına bağlanabilir
-
WebSocket iletişimi end-to-end encrypted (RSA + AES-256 hybrid encryption)
-
Production URL: https://panomc.com (yakında)
-
Dev URL: https://dev.panomc.com
-
Docs: /docs endpoint üzerinden erişilebilir
-
Releases: GitHub Releases sayfaları
Pano core platformu GNU General Public License v3.0 (GPLv3) ile lisanslanmıştır. Ancak, Pano için geliştirilen Addonlar ve Temalar bağımsız olarak lisanslanabilir (Kapalı kaynak veya ticari olabilir).
Pano, plugin yazarlarının panomc.com store üzerinden ücretli plugin satabilmesi için merkezi bir DRM/lisanslama sistemi içerir:
- Premium plugin'ler
onStart()'tapanomc.com'dan kısa ömürlü (1h) RS256 JWT ister. - Token
(panoPlatformId, resourceId, version, jarSha256)'a bağlı; başka bir Pano'da veya patch'lenmiş bir JAR'da geçersizdir. - Plugin token'ı kendi gömülü pubkey'i ile bağımsız doğrular (host'a güvenmez).
- Lisansı geçersiz olan premium plugin başlamaz; Pano normal çalışmaya devam eder, hata panel UI'da (per-addon badge, addon detay license card, dashboard banner) gösterilir.
- Detaylı tasarım:
/documentation/DRM_LICENSE_SYSTEM.md.
Son Güncelleme: 2026