À propos du projet

Game Sales Aggregator est un projet open‑source (licence MIT indiquée) qui collecte automatiquement les offres de jeux en cours sur plusieurs boutiques numériques et les publie sur un site statique ainsi que dans un canal Telegram. La version déployée est disponible sur GitHub Pages. Ce qui est suivi : les giveaways gratuits d’Epic Games (actuels et à venir), les promotions dans l’Epic Games Store, les offres temporaires gratuites sur Steam, les grosses promotions Steam (à partir de 5 %), ainsi que les nouvelles sorties et ajouts prévus sur Xbox Game Pass pour PC. Fonctionnalités du site : recherche par titre de jeu avec debounce de 300 ms ; filtrage par catégories (Epic/Steam, gratuit/promotion, nouveaux jeux Game Pass) ; tri par prix, pourcentage de remise ou titre ; filtre de fourchette de prix ; liste de souhaits stockée dans localStorage ; historique des notifications des 30 derniers jours ; thèmes sombre et clair avec bascule dans l’en‑tête ; interface bilingue (ukrainien et anglais) ; mode PWA avec installation sur téléphone ou PC et mise en cache hors ligne via Service Worker ; balisage SEO — Open Graph, Twitter Cards, JSON‑LD, sitemap.xml. Comment ça fonctionne : selon un planning GitHub Actions (horaire), un script s’exécute pour récupérer les données depuis les API de Steam, Epic Games et Xbox Game Pass. Ensuite deals.json dans le dépôt est mis à jour, sitemap.xml est généré, l’application React est construite et déployée sur GitHub Pages, et les nouvelles promotions, giveaways et ajouts sont envoyés au canal Telegram via l’API Bot. Technologies : React 19 + TypeScript + Vite + React Router ; styles — CSS vanilla avec effets de glassmorphism ; localisation personnalisée via LocaleContext (uk.ts, en.ts) ; collecte de données — Node.js avec tsx ; PWA basée sur vite-plugin-pwa et Service Worker ; hébergement — GitHub Pages ; automatisation — GitHub Actions avec cron horaire. Lancement local : Node.js 20+ et npm sont requis. Des scripts d’installation automatiques sont fournis pour Ubuntu/Debian (scripts/install.sh, incluant le mode --dev) et Windows (scripts/install.ps1, incluant -Dev). Installation manuelle : git clone, npm install, puis les commandes npm run fetch (récupérer les données), npm run dev (site local), npm run build (build production), npm run lint, npm test. Le build, les tests et le déploiement en CI s’exécutent sur ubuntu‑latest ; l’application est statique, donc le répertoire dist/ peut être placé sur n’importe quel serveur web (nginx, Caddy, etc.). Pour que les notifications fonctionnent dans GitHub Actions, ajoutez les secrets TELEGRAM_BOT_TOKEN et TELEGRAM_CHAT_ID dans Settings → Secrets and variables → Actions. Le README décrit comment obtenir l’ID du chat du canal : ajoutez le bot comme administrateur, envoyez un message au canal, puis consultez la réponse de la méthode getUpdates. La structure du dépôt couvre le workflow .github/workflows/scheduler.yml, les données public/data/deals.json, les scripts fetch-deals.ts et generate-sitemap.ts, les composants (GameCard et sections Epic/Steam/Xbox), les contextes (LocaleContext, WishlistContext), les hooks (useDebounce, useInstallPWA, useLocalStorage), les dictionnaires de localisation, le routeur App.tsx, le DataContext pour charger deals.json, le Service Worker src/sw.ts, et la configuration Vite avec PWA. Le projet maintient également un canal Telegram public avec des notifications sur les jeux gratuits, les promotions et les nouveaux ajouts Game Pass.