Bedrud Belgeler

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
BunWeb ön ucu
LiveKit SunucusuYerel medya sunucusu
Android Studio + JDK 17Android uygulaması
XcodeiOS uygulaması
Rust (stable)Masaüstü uygulaması
Python 3.10+Bot aracıları
FFmpegRadyo ve video aracıları

İlk Kurulum

git clone https://github.com/bedrud-ir/bedrud.git
cd bedrud
make init

Tam Yığın Geliştirme

Tüm yığını yerel olarak çalıştırmak için:

make dev

Bu, 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-web

http://localhost:3000 adresinde hot module replacement ile çalışır.

make dev-server

http://localhost:8090 adresinde çalışır. Go kodu değişikliklerinden sonra manuel olarak yeniden başlatın.

make dev-livekit

http://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

  1. İşleyiciyi tanımlayın server/internal/handlers/ dizininde
  2. Repository metotları ekleyin yeni veritabanı sorguları gerekiyorsa server/internal/repository/ dizininde
  3. Rotayı kaydedin sunucu kurulumunda (genellikle main.go veya bir rota dosyasında)
  4. 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.go

Tam 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

  1. Fonksiyonu src/lib/api.ts dosyasında authFetch kullanarak ekleyin
  2. TypeScript türlerini satır içi veya paylaşılan bir tür dosyasında tanımlayın
  3. Fonksiyonu rota bileşeninizden kullanın, genellikle bir TanStack Query useQuery hook’u aracılığıyla

Tip Kontrolü

cd apps/web
bun run check    # Biome lint + TypeScript tip kontrolü çalıştırır

Tam ö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çar

Temel Örüntüler

  • Tüm ekranlar Composable fonksiyonlardır
  • Bağımlılıklar InstanceManager üzerinden koinInject() ile sağlanır
  • Null olabilen StateFlow değerleri için collectAsState().value ?: return kullanın
  • Navigasyon MainActivity.kt dosyasında yönetilir

Derleme

make build-android-debug    # Debug APK
make build-android          # Release APK (keystore gerektirir)
make release-android        # Derler + cihaza kurar

Ayrıntılı mobil uygulama mimarisi için Android Uygulama Mimarisi sayfasına bakın.

iOS Geliştirme

make dev-ios    # Xcode'da açar

Temel Örüntüler

  • Görünümler SwiftUI struct’larıdır
  • Bağımlılıklar InstanceManager üzerinden @EnvironmentObject ile 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 generate

Derleme

make build-ios          # Release arşivi
make build-ios-sim      # Simülatör derlemesi
make export-ios         # IPA dışa aktarma

Ayrı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-dev

Windows, C++ iş yükü (MSVC) ile Visual Studio Build Tools gerektirir.

Çalıştırma

make dev-desktop    # cargo run -p bedrud-desktop

Derleme

make build-desktop           # Geçerli platform için optimize edilmiş ikili dosya

Temel Örüntüler

  • Tüm UI apps/desktop/ui/ altındaki .slint dosyalarında tanımlanır; derleme zamanında build.rs tarafı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ı .slint dosyaları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
Servergo vet, derleme, testler
WebTip kontrolü, derleme
AndroidLint, birim testleri, debug APK
iOSDerleme + test (simülatör, kapsama dahil)
Desktopcargo build, cargo test

Sürüm derlemeleri sürüm etiketleri (v*) tarafından tetiklenir.

Kod Stili

  • Go: Standart gofmt biçimlendirmesi
  • TypeScript/React: Biome (apps/web/biome.json dosyası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 check
cd apps/android
./gradlew test
make build-ios-sim   # Derler ve testleri çalıştırır

Ayrıca bakın