SuhaybMAUI/wassaf-ebsher

TypeScript

0

4 commits

updated Dec 12, 2025

See the code

README

وصّاف - نظام وصف الصور للمكفوفين

نظام ذكي لوصف الصور للأشخاص المكفوفين وضعاف البصر مع إمكانية تدريب النموذج اللغوي.

المميزات

  • وصف الصور بالذكاء الاصطناعي: استخدام Gemini API أو Claude API للحصول على وصف تفصيلي للصور
  • إعادة الصياغة: نموذج لغوي محلي لإعادة صياغة الوصف ليكون أكثر وضوحاً
  • التدريب المستمر: تحسين جودة إعادة الصياغة من خلال تدريب النموذج على التعديلات
  • معايير WCAG 2.1: الوصف يتبع معايير إمكانية الوصول
  • واجهة عربية: دعم كامل للغة العربية واتجاه RTL

التقنيات المستخدمة

أولاً: تقنيات وأُطر العمل الأساسية (Frameworks)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Next.js 16الواجهة + الباكاندإطار عمل React للتطبيقات الكاملة، يدعم SSR و API Routesبناء واجهة المستخدم العربية + API endpoints لوصف الصور والتدريب
React 19الواجهة الأماميةمكتبة JavaScript لبناء واجهات المستخدم التفاعليةبناء المكونات التفاعلية (رفع الصور، حقول الوصف، التعديل)
FastAPIالباكاند (Python)إطار عمل Python سريع لبناء APIsخدمة الذكاء الاصطناعي المحلية لإعادة صياغة النصوص العربية
Tailwind CSS 4الواجهة الأماميةإطار CSS للتصميم السريع باستخدام classesتصميم الواجهة مع دعم RTL للغة العربية

ثانياً: مكتبات الذكاء الاصطناعي

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
@google/generative-aiالذكاء الاصطناعيSDK الرسمي لـ Google Gemini APIوصف الصور باستخدام Gemini Vision (المصدر الأساسي)
@anthropic-ai/sdkالذكاء الاصطناعيSDK الرسمي لـ Anthropic Claude APIوصف الصور باستخدام Claude Vision (مصدر احتياطي)
PyTorchالذكاء الاصطناعيإطار التعلم العميق الأشهر من Metaتشغيل نموذج AraT5 لإعادة صياغة النصوص العربية
Transformersالذكاء الاصطناعيمكتبة HuggingFace لنماذج NLPتحميل وتشغيل نموذج AraT5-base للغة العربية
PEFTالذكاء الاصطناعيParameter-Efficient Fine-Tuning من HuggingFaceتطبيق LoRA للتدريب التدريجي على تعديلات المستخدم
Accelerateالذكاء الاصطناعيمكتبة HuggingFace لتسريع التدريبتحسين أداء التدريب والاستدلال على النموذج
SentencePieceالذكاء الاصطناعيمكتبة Google لتقسيم النصوص (Tokenization)تحويل النص العربي إلى tokens لنموذج AraT5

ثالثاً: مكتبات قاعدة البيانات

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Prisma 7الباكاندORM حديث لـ TypeScript/JavaScriptإدارة جداول الإعدادات وبيانات التدريب
@prisma/clientالباكاندعميل Prisma للتعامل مع قاعدة البياناتتنفيذ عمليات CRUD على الجداول
@prisma/adapter-pgالباكاندمحول Prisma لـ PostgreSQLالاتصال بقاعدة بيانات PostgreSQL
pgالباكاندعميل PostgreSQL لـ Node.jsالاتصال المباشر بقاعدة البيانات
PostgreSQLقاعدة البياناتنظام إدارة قواعد بيانات علائقيةتخزين إعدادات API وبيانات التدريب

رابعاً: مكتبات واجهة المستخدم (UI)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Radix UIالواجهة الأماميةمكونات React بدون تصميم (Headless)أساس مكونات Shadcn/ui
@radix-ui/react-dialogالواجهة الأماميةمكون النوافذ المنبثقةنوافذ الإعدادات والتنبيهات
@radix-ui/react-labelالواجهة الأماميةمكون التسميات للنماذجتسميات حقول الإدخال
@radix-ui/react-tabsالواجهة الأماميةمكون التبويباتالتبديل بين صفحات الإعدادات
@radix-ui/react-slotالواجهة الأماميةمكون لدمج المكوناتبناء أزرار مرنة قابلة للتخصيص
Lucide Reactالواجهة الأماميةمجموعة أيقونات SVG لـ Reactأيقونات الأزرار (حفظ، نسخ، تحميل، إلخ)
Sonnerالواجهة الأماميةمكتبة Toast notificationsإشعارات النجاح والخطأ بالعربية
next-themesالواجهة الأماميةإدارة السمات (فاتح/داكن) لـ Next.jsدعم الوضع الداكن

خامساً: مكتبات CSS ومساعدة

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
class-variance-authorityالواجهة الأماميةإنشاء variants للمكوناتتعريف أنماط مختلفة للأزرار والبطاقات
clsxالواجهة الأماميةدمج CSS classes بشكل شرطيدمج classes ديناميكياً حسب الحالة
tailwind-mergeالواجهة الأماميةدمج Tailwind classes بذكاءمنع تعارض classes وتحسين الأداء
tw-animate-cssالواجهة الأماميةإضافة animations لـ Tailwindتحريكات سلسة للمكونات

سادساً: مكتبات الخادم (Backend Utilities)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Uvicornالباكاند (Python)خادم ASGI سريع لـ Pythonتشغيل خدمة FastAPI على المنفذ 8000
Pydanticالباكاند (Python)التحقق من البيانات باستخدام Python typesالتحقق من طلبات API (النصوص، البيانات)
python-multipartالباكاند (Python)معالجة بيانات النماذجاستقبال الملفات والبيانات من الواجهة
Protobufالباكاند (Python)تنسيق تسلسل البيانات من Googleمطلوب لتشغيل نماذج HuggingFace
dotenvالباكاندتحميل متغيرات البيئة من ملف .envإدارة مفاتيح API والإعدادات

سابعاً: أدوات التطوير (DevTools)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
TypeScript 5التطويرلغة JavaScript مع أنواع ثابتةكتابة كود آمن مع type checking
ESLint 9التطويرفحص جودة كود JavaScript/TypeScriptضمان جودة الكود ومعايير الكتابة
eslint-config-nextالتطويرإعدادات ESLint لـ Next.jsقواعد خاصة بمشاريع Next.js
@types/nodeالتطويرأنواع TypeScript لـ Node.jsدعم TypeScript للكود الخادم
@types/reactالتطويرأنواع TypeScript لـ Reactدعم TypeScript لمكونات React
PostCSSالتطويرمعالج CSSتحويل وتحسين Tailwind CSS

ثامناً: النماذج والـ APIs الخارجية

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Google Geminiالذكاء الاصطناعينموذج متعدد الوسائط من Googleوصف الصور للمكفوفين (المصدر الأساسي)
Claude (Anthropic)الذكاء الاصطناعينموذج محادثة متقدموصف الصور (مصدر احتياطي)
AraT5-baseالذكاء الاصطناعينموذج T5 مدرب على العربية (UBC-NLP)إعادة صياغة النصوص العربية محلياً
LoRA Adapterالذكاء الاصطناعيتقنية Fine-tuning خفيفةحفظ تعديلات المستخدم وتحسين النموذج تدريجياً

ملخص إحصائي

الفئةالعدد
أُطر العمل الأساسية4
مكتبات الذكاء الاصطناعي7
مكتبات قاعدة البيانات5
مكتبات الواجهة (UI)8
مكتبات CSS4
مكتبات الخادم5
أدوات التطوير6
نماذج وAPIs خارجية4
المجموع43

البدء السريع

المتطلبات

  • Node.js 22+
  • Python 3.10+
  • PostgreSQL 15+

التثبيت

  1. استنساخ المشروع:
git clone https://github.com/SuhaybMAUI/wassaf-ebsher.git
cd wassaf-ebsher
  1. تثبيت dependencies للـ Frontend:
npm install
  1. إعداد قاعدة البيانات:
# إنشاء قاعدة البيانات
createdb wassaf

# تشغيل Prisma
npx prisma generate
npx prisma db push
  1. إعداد ملف البيئة:
cp .env.example .env
# ثم عدّل الملف بإضافة مفاتيح API الخاصة بك
  1. تشغيل جميع الخدمات (الطريقة السريعة):
chmod +x start.sh
./start.sh

أو التشغيل اليدوي:

Terminal 1 - خدمة ML:

cd ml-service
python3 -m venv venv
source venv/bin/activate
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt
python3 main.py

Terminal 2 - Next.js:

npm run dev

متغيرات البيئة

قم بإنشاء ملف .env بالمحتوى التالي:

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/wassaf_ebsher"

# Gemini API (Primary)
GEMINI_API_KEY="your-gemini-api-key"

# Claude API (Fallback)
ANTHROPIC_API_KEY="your-claude-api-key"

# ML Service URL
ML_SERVICE_URL="http://localhost:8000"

# Next.js
NEXT_PUBLIC_APP_URL="http://localhost:3000"

هيكل المشروع

wassaf-ebsher/
├── src/
│   ├── app/
│   │   ├── page.tsx              # الصفحة الرئيسية (وصف الصور)
│   │   ├── training/page.tsx     # صفحة التدريب
│   │   ├── settings/page.tsx     # صفحة الإعدادات
│   │   ├── layout.tsx            # Layout الرئيسي
│   │   ├── globals.css           # الأنماط العامة
│   │   └── api/
│   │       ├── describe/route.ts   # API وصف الصور
│   │       ├── reformulate/route.ts # API إعادة الصياغة
│   │       ├── train/route.ts      # API التدريب
│   │       ├── stats/route.ts      # API الإحصائيات
│   │       └── settings/route.ts   # API الإعدادات
│   ├── components/
│   │   ├── ImageUploader.tsx     # مكون رفع الصور
│   │   ├── DescriptionField.tsx  # حقل الوصف
│   │   ├── EditableField.tsx     # حقل التعديل
│   │   ├── TrainingCounter.tsx   # عداد التدريبات
│   │   ├── APIStatusIndicator.tsx # مؤشر حالة API
│   │   └── NavBar.tsx            # شريط التنقل
│   ├── lib/
│   │   ├── db.ts                 # اتصال Prisma
│   │   ├── ai-client.ts          # عميل AI APIs
│   │   └── wcag-prompt.ts        # Prompt معيار WCAG
│   └── types/
│       └── index.ts              # تعريفات TypeScript
├── ml-service/
│   ├── main.py                   # FastAPI server
│   ├── model.py                  # النموذج اللغوي
│   └── requirements.txt          # Python dependencies
├── prisma/
│   └── schema.prisma             # نموذج قاعدة البيانات
├── .env.example                  # مثال متغيرات البيئة
└── package.json

كيفية الاستخدام

صفحة وصف الصور

  1. ارفع صورة بالسحب والإفلات أو بالضغط
  2. انتظر الوصف من AI
  3. اضغط "إعادة الصياغة" للحصول على وصف محسّن
  4. عدّل الوصف إذا لزم الأمر
  5. اضغط "حفظ" لحفظ التعديلات وتدريب النموذج

صفحة التدريب

  1. ارفع صورة
  2. عدّل الوصف في الحقل الثاني
  3. اضغط "تدريب النموذج"

صفحة الإعدادات

  • إدخال مفاتيح API
  • تحديد أولوية APIs

الأوامر المتاحة

# تشغيل في وضع التطوير
npm run dev

# بناء للإنتاج
npm run build

# تشغيل في وضع الإنتاج
npm start

# فحص الكود
npm run lint

# إنشاء Prisma client
npx prisma generate

# تشغيل migrations
npx prisma migrate dev

# تشغيل خدمة ML
cd ml-service && python main.py

المساهمة

نرحب بمساهماتكم! يرجى:

  1. Fork المشروع
  2. إنشاء branch للميزة الجديدة
  3. عمل commit للتغييرات
  4. فتح Pull Request

الترخيص

MIT License

SuhaybMAUI/wassaf-ebsher

TypeScript

0

4 commits

updated Dec 12, 2025

See the code

README

وصّاف - نظام وصف الصور للمكفوفين

نظام ذكي لوصف الصور للأشخاص المكفوفين وضعاف البصر مع إمكانية تدريب النموذج اللغوي.

المميزات

  • وصف الصور بالذكاء الاصطناعي: استخدام Gemini API أو Claude API للحصول على وصف تفصيلي للصور
  • إعادة الصياغة: نموذج لغوي محلي لإعادة صياغة الوصف ليكون أكثر وضوحاً
  • التدريب المستمر: تحسين جودة إعادة الصياغة من خلال تدريب النموذج على التعديلات
  • معايير WCAG 2.1: الوصف يتبع معايير إمكانية الوصول
  • واجهة عربية: دعم كامل للغة العربية واتجاه RTL

التقنيات المستخدمة

أولاً: تقنيات وأُطر العمل الأساسية (Frameworks)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Next.js 16الواجهة + الباكاندإطار عمل React للتطبيقات الكاملة، يدعم SSR و API Routesبناء واجهة المستخدم العربية + API endpoints لوصف الصور والتدريب
React 19الواجهة الأماميةمكتبة JavaScript لبناء واجهات المستخدم التفاعليةبناء المكونات التفاعلية (رفع الصور، حقول الوصف، التعديل)
FastAPIالباكاند (Python)إطار عمل Python سريع لبناء APIsخدمة الذكاء الاصطناعي المحلية لإعادة صياغة النصوص العربية
Tailwind CSS 4الواجهة الأماميةإطار CSS للتصميم السريع باستخدام classesتصميم الواجهة مع دعم RTL للغة العربية

ثانياً: مكتبات الذكاء الاصطناعي

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
@google/generative-aiالذكاء الاصطناعيSDK الرسمي لـ Google Gemini APIوصف الصور باستخدام Gemini Vision (المصدر الأساسي)
@anthropic-ai/sdkالذكاء الاصطناعيSDK الرسمي لـ Anthropic Claude APIوصف الصور باستخدام Claude Vision (مصدر احتياطي)
PyTorchالذكاء الاصطناعيإطار التعلم العميق الأشهر من Metaتشغيل نموذج AraT5 لإعادة صياغة النصوص العربية
Transformersالذكاء الاصطناعيمكتبة HuggingFace لنماذج NLPتحميل وتشغيل نموذج AraT5-base للغة العربية
PEFTالذكاء الاصطناعيParameter-Efficient Fine-Tuning من HuggingFaceتطبيق LoRA للتدريب التدريجي على تعديلات المستخدم
Accelerateالذكاء الاصطناعيمكتبة HuggingFace لتسريع التدريبتحسين أداء التدريب والاستدلال على النموذج
SentencePieceالذكاء الاصطناعيمكتبة Google لتقسيم النصوص (Tokenization)تحويل النص العربي إلى tokens لنموذج AraT5

ثالثاً: مكتبات قاعدة البيانات

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Prisma 7الباكاندORM حديث لـ TypeScript/JavaScriptإدارة جداول الإعدادات وبيانات التدريب
@prisma/clientالباكاندعميل Prisma للتعامل مع قاعدة البياناتتنفيذ عمليات CRUD على الجداول
@prisma/adapter-pgالباكاندمحول Prisma لـ PostgreSQLالاتصال بقاعدة بيانات PostgreSQL
pgالباكاندعميل PostgreSQL لـ Node.jsالاتصال المباشر بقاعدة البيانات
PostgreSQLقاعدة البياناتنظام إدارة قواعد بيانات علائقيةتخزين إعدادات API وبيانات التدريب

رابعاً: مكتبات واجهة المستخدم (UI)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Radix UIالواجهة الأماميةمكونات React بدون تصميم (Headless)أساس مكونات Shadcn/ui
@radix-ui/react-dialogالواجهة الأماميةمكون النوافذ المنبثقةنوافذ الإعدادات والتنبيهات
@radix-ui/react-labelالواجهة الأماميةمكون التسميات للنماذجتسميات حقول الإدخال
@radix-ui/react-tabsالواجهة الأماميةمكون التبويباتالتبديل بين صفحات الإعدادات
@radix-ui/react-slotالواجهة الأماميةمكون لدمج المكوناتبناء أزرار مرنة قابلة للتخصيص
Lucide Reactالواجهة الأماميةمجموعة أيقونات SVG لـ Reactأيقونات الأزرار (حفظ، نسخ، تحميل، إلخ)
Sonnerالواجهة الأماميةمكتبة Toast notificationsإشعارات النجاح والخطأ بالعربية
next-themesالواجهة الأماميةإدارة السمات (فاتح/داكن) لـ Next.jsدعم الوضع الداكن

خامساً: مكتبات CSS ومساعدة

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
class-variance-authorityالواجهة الأماميةإنشاء variants للمكوناتتعريف أنماط مختلفة للأزرار والبطاقات
clsxالواجهة الأماميةدمج CSS classes بشكل شرطيدمج classes ديناميكياً حسب الحالة
tailwind-mergeالواجهة الأماميةدمج Tailwind classes بذكاءمنع تعارض classes وتحسين الأداء
tw-animate-cssالواجهة الأماميةإضافة animations لـ Tailwindتحريكات سلسة للمكونات

سادساً: مكتبات الخادم (Backend Utilities)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Uvicornالباكاند (Python)خادم ASGI سريع لـ Pythonتشغيل خدمة FastAPI على المنفذ 8000
Pydanticالباكاند (Python)التحقق من البيانات باستخدام Python typesالتحقق من طلبات API (النصوص، البيانات)
python-multipartالباكاند (Python)معالجة بيانات النماذجاستقبال الملفات والبيانات من الواجهة
Protobufالباكاند (Python)تنسيق تسلسل البيانات من Googleمطلوب لتشغيل نماذج HuggingFace
dotenvالباكاندتحميل متغيرات البيئة من ملف .envإدارة مفاتيح API والإعدادات

سابعاً: أدوات التطوير (DevTools)

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
TypeScript 5التطويرلغة JavaScript مع أنواع ثابتةكتابة كود آمن مع type checking
ESLint 9التطويرفحص جودة كود JavaScript/TypeScriptضمان جودة الكود ومعايير الكتابة
eslint-config-nextالتطويرإعدادات ESLint لـ Next.jsقواعد خاصة بمشاريع Next.js
@types/nodeالتطويرأنواع TypeScript لـ Node.jsدعم TypeScript للكود الخادم
@types/reactالتطويرأنواع TypeScript لـ Reactدعم TypeScript لمكونات React
PostCSSالتطويرمعالج CSSتحويل وتحسين Tailwind CSS

ثامناً: النماذج والـ APIs الخارجية

النوعمجال الاستخدامالوصف العامالاستخدام في المشروع
Google Geminiالذكاء الاصطناعينموذج متعدد الوسائط من Googleوصف الصور للمكفوفين (المصدر الأساسي)
Claude (Anthropic)الذكاء الاصطناعينموذج محادثة متقدموصف الصور (مصدر احتياطي)
AraT5-baseالذكاء الاصطناعينموذج T5 مدرب على العربية (UBC-NLP)إعادة صياغة النصوص العربية محلياً
LoRA Adapterالذكاء الاصطناعيتقنية Fine-tuning خفيفةحفظ تعديلات المستخدم وتحسين النموذج تدريجياً

ملخص إحصائي

الفئةالعدد
أُطر العمل الأساسية4
مكتبات الذكاء الاصطناعي7
مكتبات قاعدة البيانات5
مكتبات الواجهة (UI)8
مكتبات CSS4
مكتبات الخادم5
أدوات التطوير6
نماذج وAPIs خارجية4
المجموع43

البدء السريع

المتطلبات

  • Node.js 22+
  • Python 3.10+
  • PostgreSQL 15+

التثبيت

  1. استنساخ المشروع:
git clone https://github.com/SuhaybMAUI/wassaf-ebsher.git
cd wassaf-ebsher
  1. تثبيت dependencies للـ Frontend:
npm install
  1. إعداد قاعدة البيانات:
# إنشاء قاعدة البيانات
createdb wassaf

# تشغيل Prisma
npx prisma generate
npx prisma db push
  1. إعداد ملف البيئة:
cp .env.example .env
# ثم عدّل الملف بإضافة مفاتيح API الخاصة بك
  1. تشغيل جميع الخدمات (الطريقة السريعة):
chmod +x start.sh
./start.sh

أو التشغيل اليدوي:

Terminal 1 - خدمة ML:

cd ml-service
python3 -m venv venv
source venv/bin/activate
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt
python3 main.py

Terminal 2 - Next.js:

npm run dev

متغيرات البيئة

قم بإنشاء ملف .env بالمحتوى التالي:

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/wassaf_ebsher"

# Gemini API (Primary)
GEMINI_API_KEY="your-gemini-api-key"

# Claude API (Fallback)
ANTHROPIC_API_KEY="your-claude-api-key"

# ML Service URL
ML_SERVICE_URL="http://localhost:8000"

# Next.js
NEXT_PUBLIC_APP_URL="http://localhost:3000"

هيكل المشروع

wassaf-ebsher/
├── src/
│   ├── app/
│   │   ├── page.tsx              # الصفحة الرئيسية (وصف الصور)
│   │   ├── training/page.tsx     # صفحة التدريب
│   │   ├── settings/page.tsx     # صفحة الإعدادات
│   │   ├── layout.tsx            # Layout الرئيسي
│   │   ├── globals.css           # الأنماط العامة
│   │   └── api/
│   │       ├── describe/route.ts   # API وصف الصور
│   │       ├── reformulate/route.ts # API إعادة الصياغة
│   │       ├── train/route.ts      # API التدريب
│   │       ├── stats/route.ts      # API الإحصائيات
│   │       └── settings/route.ts   # API الإعدادات
│   ├── components/
│   │   ├── ImageUploader.tsx     # مكون رفع الصور
│   │   ├── DescriptionField.tsx  # حقل الوصف
│   │   ├── EditableField.tsx     # حقل التعديل
│   │   ├── TrainingCounter.tsx   # عداد التدريبات
│   │   ├── APIStatusIndicator.tsx # مؤشر حالة API
│   │   └── NavBar.tsx            # شريط التنقل
│   ├── lib/
│   │   ├── db.ts                 # اتصال Prisma
│   │   ├── ai-client.ts          # عميل AI APIs
│   │   └── wcag-prompt.ts        # Prompt معيار WCAG
│   └── types/
│       └── index.ts              # تعريفات TypeScript
├── ml-service/
│   ├── main.py                   # FastAPI server
│   ├── model.py                  # النموذج اللغوي
│   └── requirements.txt          # Python dependencies
├── prisma/
│   └── schema.prisma             # نموذج قاعدة البيانات
├── .env.example                  # مثال متغيرات البيئة
└── package.json

كيفية الاستخدام

صفحة وصف الصور

  1. ارفع صورة بالسحب والإفلات أو بالضغط
  2. انتظر الوصف من AI
  3. اضغط "إعادة الصياغة" للحصول على وصف محسّن
  4. عدّل الوصف إذا لزم الأمر
  5. اضغط "حفظ" لحفظ التعديلات وتدريب النموذج

صفحة التدريب

  1. ارفع صورة
  2. عدّل الوصف في الحقل الثاني
  3. اضغط "تدريب النموذج"

صفحة الإعدادات

  • إدخال مفاتيح API
  • تحديد أولوية APIs

الأوامر المتاحة

# تشغيل في وضع التطوير
npm run dev

# بناء للإنتاج
npm run build

# تشغيل في وضع الإنتاج
npm start

# فحص الكود
npm run lint

# إنشاء Prisma client
npx prisma generate

# تشغيل migrations
npx prisma migrate dev

# تشغيل خدمة ML
cd ml-service && python main.py

المساهمة

نرحب بمساهماتكم! يرجى:

  1. Fork المشروع
  2. إنشاء branch للميزة الجديدة
  3. عمل commit للتغييرات
  4. فتح Pull Request

الترخيص

MIT License