عن المشروع
مجمع مبيعات الألعاب هو مشروع مفتوح المصدر (رخصة MIT مذكورة) يجمع تلقائيًا عروض الألعاب الحالية من عدة متاجر رقمية وينشرها على موقع ثابت وقناة Telegram. النسخة المنشورة متوفرة على GitHub Pages.
ما يتم تتبعه: هدايا Epic Games المجانية (الحالية والقادمة)، الخصومات في Epic Games Store، العروض المجانية المؤقتة على Steam، الخصومات الساخنة على Steam (من 5٪)، بالإضافة إلى الإصدارات الجديدة والإضافات المتوقعة إلى Xbox Game Pass للكمبيوتر.
ميزات الموقع: بحث بالاسم مع تأخير 300 مللي ثانية؛ تصفية حسب الفئات (Epic/Steam، مجانية/مخفضة، ألعاب Game Pass الجديدة)؛ ترتيب حسب السعر أو نسبة الخصم أو العنوان؛ تصفية بنطاق السعر؛ قائمة رغبات مخزنة في localStorage؛ سجل إشعارات لآخر 30 يومًا؛ وضعية سمة داكنة وفاتحة مع زر التبديل في الرأس؛ واجهة ثنائية اللغة (الأوكرانية والإنجليزية)؛ وضع PWA مع إمكانية التثبيت على الهاتف أو الكمبيوتر وتخزين مؤقت غير متصل عبر Service Worker؛ تحسين SEO — Open Graph، Twitter Cards، JSON‑LD، sitemap.xml.
كيف يعمل: على جدول زمني في GitHub Actions (كل ساعة) يتم تشغيل سكريبت يجمع البيانات من واجهات Steam وEpic Games وXbox Game Pass. بعد ذلك يتم تحديث deals.json في المستودع، توليد sitemap.xml، بناء تطبيق React ونشره على GitHub Pages، وإرسال الخصومات الجديدة والهدايا والإضافات إلى قناة Telegram عبر Bot API.
التقنيات: React 19 + TypeScript + Vite + React Router؛ الأنماط — CSS عادي مع تأثيرات glassmorphism؛ التعريب المخصص عبر LocaleContext (uk.ts، en.ts)؛ جمع البيانات — Node.js مع tsx؛ PWA مبني على vite-plugin-pwa وService Worker؛ الاستضافة — GitHub Pages؛ الأتمتة — GitHub Actions مع كرون كل ساعة.
التشغيل محليًا: يلزم Node.js 20+ وnpm. تتوفر سكريبتات تثبيت تلقائية لأوبونتو/ديبيان (scripts/install.sh، تشمل وضع --dev) ولـ Windows (scripts/install.ps1، تشمل -Dev). المسار اليدوي — git clone، npm install، ثم الأوامر npm run fetch (جلب البيانات)، npm run dev (الموقع محليًا)، npm run build (بناء للإنتاج)، npm run lint، npm test. البناء والاختبارات والنشر في CI تُجرى على ubuntu-latest؛ التطبيق ثابت، لذا يمكن وضع مجلد dist/ على أي خادم ويب (nginx، Caddy، إلخ).
لتفعيل الإشعارات في GitHub Actions، أضف المتغيرات السرية TELEGRAM_BOT_TOKEN وTELEGRAM_CHAT_ID في Settings → Secrets and variables → Actions. يوضح README طريقة الحصول على معرف الدردشة للقناة: أضف البوت كمسؤول، أرسل رسالة إلى القناة، ثم راجع الاستجابة من طريقة getUpdates.
هيكل المستودع يغطي سير العمل .github/workflows/scheduler.yml، البيانات public/data/deals.json، سكريبتات fetch-deals.ts وgenerate-sitemap.ts، مكونات (GameCard وأقسام Epic/Steam/Xbox)، سياقات (LocaleContext، WishlistContext)، هوكات (useDebounce، useInstallPWA، useLocalStorage)، قواميس التعريب، الموجه App.tsx، DataContext لتحميل deals.json، Service Worker src/sw.ts، وتكوين Vite مع PWA. المشروع يدير أيضًا قناة Telegram عامة تُرسل إشعارات حول الألعاب المجانية، الخصومات، وإضافات Game Pass الجديدة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.