Bedrud التوثيق

ملف Makefile الرئيسي هو أداة تنسيق البناء المركزية لمستودع Bedrud الأحادي. يوفر أوامر للتطوير والبناء والنشر عبر جميع المنصات.

الاستخدام

make <target>
make help       # Show all available targets

أهداف التطوير

الهدفالوصف
make initتثبيت جميع التبعيات (LiveKit + الإعدادات + bun + Go)
make devتشغيل LiveKit + الخادم (إعادة التحميل التلقائي) + الويب بشكل متزامن
make dev-webتشغيل خادم تطوير الواجهة فقط
make dev-serverتشغيل خادم الخلفية + LiveKit
make dev-server-hotتشغيل الخلفية مع Air (إعادة التحميل التلقائي)
make dev-apiتشغيل الخلفية فقط، بدون LiveKit
make dev-livekitتشغيل خادم LiveKit المحلي
make dev-siteتشغيل خادم تطوير موقع Astro
make dev-iosفتح مشروع iOS في Xcode
make dev-androidفتح مشروع Android في Android Studio

make init

إعداد كامل لبيئة تطوير جديدة:

  1. تنزيل ملف LiveKit الثنائي إلى ~/.local/bin/ (إذا لم يكن في PATH)
  2. إنشاء server/config.yaml من قالب config.local.yaml (إذا لم يكن موجودًا)
  3. إنشاء عنصر نائب لـ LiveKit المدمج في server/internal/livekit/bin/livekit-server
  4. تثبيت air لإعادة التحميل التلقائي لـ Go (إذا لم يكن مثبتًا)
  5. تثبيت التبعيات: apps/web (bun)، apps/site (bun)، server (go mod)

make dev

يُشغّل خدمات التطوير الثلاث بشكل متزامن. اضغط Ctrl+C لإيقاف الكل:

  • LiveKit على localhost:7880
  • الخادم على localhost:8090
  • الويب على localhost:3000

أهداف البناء

الهدفالوصف
make buildبناء الواجهة + الخلفية (مضمنة)
make build-frontبناء الواجهة فقط
make build-backبناء الخلفية فقط
make build-distبناء أرشيف إنتاج linux/amd64
make build-siteبناء موقع Astro (SSG)

make build

بناء إنتاجي كامل:

  1. يُشغّل bun run build في apps/web — يبني تطبيق React
  2. ينسخ apps/web/dist/client/*server/frontend/
  3. يبني الملف الثنائي Go مع الواجهة المضمنة

المخرجات: server/dist/bedrud

make build-dist

ينشئ توزيعة إنتاجية مضغوطة:

  1. يُشغّل make build
  2. يُترجم تصادريًا لـ linux/amd64 مع إزالة رموز التنقيح
  3. ينشئ dist/bedrud_linux_amd64.tar.xz

أهداف سطح المكتب

الهدفالوصف
make dev-desktopبناء وتشغيل تطبيق سطح المكتب (تصحيح)
make build-desktopبناء ملف ثنائي release محسّن

ملف ثنائي محلي واحد

الهدفالوصف
make local-buildبناء الواجهة + الخلفية في ملف ثنائي واحد
make local-runبناء + تشغيل محلي (SQLite، LiveKit مضمن)

make local-run

يبني ويبدأ الملف الثنائي الواحد بالإعدادات المحلية:

CONFIG_PATH=server/config.local.yaml server/dist/bedrud run

افتح http://localhost:8090 عند الاستعداد.

توثيق API

الهدفالوصف
make swagger-genإعادة توليد توثيق Swagger من التعليقات التوضيحية
make swagger-openفتح Swagger UI في المتصفح
make scalar-openفتح Scalar UI في المتصفح

يتطلب CLI swag (go install github.com/swaggo/swag/cmd/swag@latest). يجب أن يكون الخادم قيد التشغيل لاستخدام swagger-open و scalar-open.

أهداف Android

الهدفالوصف
make build-android-debugبناء APK تصحيح
make build-androidبناء APK إصدار (يتطلب مخزن مفاتيح)
make install-androidتثبيت APK الإصدار على الجهاز المتصل
make release-androidبناء + تثبيت APK الإصدار

مسارات مخرجات APK

  • التصحيح: apps/android/app/build/outputs/apk/debug/app-debug.apk
  • الإصدار: apps/android/app/build/outputs/apk/release/app-release.apk

أهداف iOS

الهدفالوصف
make build-iosبناء أرشيف iOS (إصدار)
make export-iosتصدير IPA من الأرشيف
make build-ios-simبناء لمحاكي iOS (تصحيح)

مسارات المخرجات

  • الأرشيف: apps/ios/build/Bedrud.xcarchive
  • IPA: apps/ios/build/export/Bedrud.ipa

هدف النشر

الهدفالوصف
make deploy ARGS=...تشغيل أداة نشر CLI

مثال

make deploy ARGS="--auto-config --ip 1.2.3.4 --user root --domain meet.example.com"

يُشغّل أداة CLI في Python عند tools/cli/bedrud.py بالمعطيات المقدمة.

الاختبار

الهدفالوصف
make test-backتشغيل اختبارات الخلفية (go test -v -count=1 ./...)

أهداف التنظيف

الهدفالوصف
make cleanإزالة مُنتَجات البناء والملفات الثنائية المُترجمة
make full-cleanإزالة المُنتَجات + جميع التبعيات المثبتة

make clean

يزيل:

  • dist/ — أرشيفات التوزيعة
  • server/dist/ — الملف الثنائي المُترجم للخادم
  • apps/web/dist/ — مخرجات بناء React
  • محتويات server/frontend/ — أصول الواجهة المضمنة
  • apps/android/app/build/ — مخرجات بناء Android
  • apps/ios/build/ — مخرجات بناء iOS
  • apps/site/dist/ — مخرجات بناء موقع Astro
  • target/ — مخرجات بناء Rust/Cargo

make full-clean

كل ما يفعله clean، بالإضافة إلى:

  • apps/web/node_modules/
  • apps/site/node_modules/
  • apps/android/.gradle/
  • apps/android/build/
  • ذاكرة تخزين وحدات Go (go clean -modcache)

شغّل make init بعدها لإعادة تثبيت التبعيات.