Bu rehber, Bedrud projesine katkıda bulunmak için günlük geliştirme iş akışını açıklar.
Depo Yapısı
bedrud/
├── server/ # Go arka ucu
├── apps/
│ ├── web/ # React ön ucu (TanStack Start)
│ ├── android/ # Android uygulaması
│ ├── ios/ # iOS uygulaması
│ └── desktop/ # Masaüstü uygulaması (Rust + Slint)
├── agents/ # Python bot aracıları
├── packages/ # Paylaşılan TypeScript türleri
├── tools/cli/ # Dağıtım CLI'si
├── docs/ # Belgelendirme (MkDocs)
├── Cargo.toml # Rust çalışma alanı kökü
├── Makefile # Derleme orkestrasyonu
└── Dockerfile # Konteyner derlemesi
Ön Koşullar
| Araç | Gerekli Yer |
|---|---|
| Go 1.24+ | Sunucu |
| Bun | Web ön ucu |
| LiveKit Sunucusu | Yerel medya sunucusu |
| Android Studio + JDK 17 | Android uygulaması |
| Xcode | iOS uygulaması |
| Rust (stable) | Masaüstü uygulaması |
| Python 3.10+ | Bot aracıları |
| FFmpeg | Radyo ve video aracıları |
İlk Kurulum
git clone https://github.com/bedrud-ir/bedrud.git
cd bedrud
make initTam Yığın Geliştirme
Tüm yığını yerel olarak çalıştırmak için:
make devBu, LiveKit, Go sunucusu ve React geliştirme sunucusunu eşzamanlı başlatır. Tüm süreçleri durdurmak için Ctrl+C tuşlarına basın.
Servisleri Ayrı Ayrı Çalıştırma
make dev-webhttp://localhost:3000 adresinde hot module replacement ile çalışır.
make dev-serverhttp://localhost:8090 adresinde çalışır. Go kodu değişikliklerinden sonra manuel olarak yeniden başlatın.
make dev-livekithttp://localhost:7880 adresinde geliştirme kimlik bilgileriyle çalışır.
Sunucu Geliştirme
Go sunucusunun giriş noktası server/cmd/server/main.go dosyasıdır.
API Uç Noktası Ekleme
- İşleyiciyi tanımlayın
server/internal/handlers/dizininde - Repository metotları ekleyin yeni veritabanı sorguları gerekiyorsa
server/internal/repository/dizininde - Rotayı kaydedin sunucu kurulumunda (genellikle
main.goveya bir rota dosyasında) - Middleware ekleyin uç nokta kimlik doğrulama veya yönetici kontrolü gerektiriyorsa
Veritabanı Değişiklikleri
server/internal/models/ dizinindeki GORM model struct’larını ekleyin veya değiştirin. GORM başlangıçta otomatik migrate eder.
Swagger Belgeleri
API belgelendirme ek açıklamaları swaggo formatını kullanır. Değişikliklerden sonra yeniden oluşturun:
cd server
swag init -g cmd/server/main.goTam dizin yapısı ve katmanlı tasarım için Sunucu Mimarisi sayfasına bakın.
Web Ön Ucu Geliştirme
Ön uç apps/web/ dizinindedir ve React 19 ile TanStack Start kullanır.
Sayfa Ekleme
TanStack Router dosya tabanlı yönlendirme kuralını izleyerek src/routes/ altında yeni bir dosya oluşturun (ör. src/routes/settings.tsx). createFileRoute ile oluşturulmuş bir Route dışa aktarın.
API İstemci Fonksiyonu Ekleme
- Fonksiyonu
src/lib/api.tsdosyasındaauthFetchkullanarak ekleyin - TypeScript türlerini satır içi veya paylaşılan bir tür dosyasında tanımlayın
- Fonksiyonu rota bileşeninizden kullanın, genellikle bir TanStack Query
useQueryhook’u aracılığıyla
Tip Kontrolü
cd apps/web
bun run check # Biome lint + TypeScript tip kontrolü çalıştırırTam ön uç yapısı ve örüntüleri için Web Ön Ucu Mimarisi sayfasına bakın.
Android Geliştirme
make dev-android # Android Studio'da açarTemel Örüntüler
- Tüm ekranlar Composable fonksiyonlardır
- Bağımlılıklar
InstanceManagerüzerindenkoinInject()ile sağlanır - Null olabilen
StateFlowdeğerleri içincollectAsState().value ?: returnkullanın - Navigasyon
MainActivity.ktdosyasında yönetilir
Derleme
make build-android-debug # Debug APK
make build-android # Release APK (keystore gerektirir)
make release-android # Derler + cihaza kurarAyrıntılı mobil uygulama mimarisi için Android Uygulama Mimarisi sayfasına bakın.
iOS Geliştirme
make dev-ios # Xcode'da açarTemel Örüntüler
- Görünümler SwiftUI struct’larıdır
- Bağımlılıklar
InstanceManagerüzerinden@EnvironmentObjectile sağlanır - Null olabilen yayınlanmış özellikler için optional binding kullanın
- Navigasyon SwiftUI’nin yerel navigasyon yığınını kullanır
Proje Oluşturma
project.yml dosyasını değiştirirseniz, Xcode projesini yeniden oluşturun:
cd apps/ios
xcodegen generateDerleme
make build-ios # Release arşivi
make build-ios-sim # Simülatör derlemesi
make export-ios # IPA dışa aktarmaAyrıntılı mobil uygulama mimarisi için iOS Uygulama Mimarisi sayfasına bakın.
Masaüstü Geliştirme
Masaüstü uygulaması apps/desktop/ dizinindedir ve çalışma alanında bir Rust crate’idir.
Ön Koşullar (Linux)
sudo apt-get install -y \
libfontconfig1-dev libxkbcommon-dev libxkbcommon-x11-dev \
libwayland-dev libgles2-mesa-dev libegl1-mesa-dev \
libdbus-1-dev libsecret-1-dev \
libasound2-devWindows, C++ iş yükü (MSVC) ile Visual Studio Build Tools gerektirir.
Çalıştırma
make dev-desktop # cargo run -p bedrud-desktopDerleme
make build-desktop # Geçerli platform için optimize edilmiş ikili dosyaTemel Örüntüler
- Tüm UI
apps/desktop/ui/altındaki.slintdosyalarında tanımlanır; derleme zamanındabuild.rstarafından Rust’a derlenir apps/desktop/src/ui/bridge.rs, Slint geri çağrılarının Rust mantığına bağlandığı tek yerdir - iş mantığını.slintdosyalarının dışında tutun- Arka plan görevlerinde UI’ı güncellemesi gereken
Weak<AppWindow>kullanın
Ayrıntılı masaüstü uygulama mimarisi için Masaüstü Uygulama Mimarisi sayfasına bakın.
Bot Aracı Geliştirme
Aracılar agents/ dizinindedir, her aracı için bir alt dizin bulunur.
cd agents/music_agent
pip install -r requirements.txt
python agent.py "http://localhost:8090/m/test-room"Tüm aracılar, kimlik doğrulaması yapmak için çalışan bir Bedrud sunucusuna ihtiyaç duyar.
CI/CD
GitHub Actions, main dalına her push ve her pull request’te çalışır:
| İş | Kontrol ettiği şey |
|---|---|
| Server | go vet, derleme, testler |
| Web | Tip kontrolü, derleme |
| Android | Lint, birim testleri, debug APK |
| iOS | Derleme + test (simülatör, kapsama dahil) |
| Desktop | cargo build, cargo test |
Sürüm derlemeleri sürüm etiketleri (v*) tarafından tetiklenir.
Kod Stili
- Go: Standart
gofmtbiçimlendirmesi - TypeScript/React: Biome (
apps/web/biome.jsondosyasında yapılandırılır) - Kotlin: Android Studio varsayılan biçimlendirmesi
- Swift: Xcode varsayılan biçimlendirmesi
Test
cd server
go test ./...cd apps/web
bun run checkcd apps/android
./gradlew testmake build-ios-sim # Derler ve testleri çalıştırırAyrıca bakın
- Makefile Referansı - tüm derleme ve geliştirme komutları
- Mimari Genel Bakış - bileşenler nasıl bir araya gelir