このプロジェクトについて
Game Sales Aggregatorは、複数のデジタルストアから現在のゲームオファーを自動収集し、静的サイトおよびTelegramチャンネルで公開するオープンソースプロジェクト(MITライセンス)です。デプロイ版はGitHub Pagesで利用可能です。
追跡対象:Epic Gamesの無料配布(現在および次回分)、Epic Games Storeの割引、Steamの期間限定無料オファー、Steamのホットディスカウント(5%以上)、およびXbox Game Pass for PCの新規追加・予定タイトル。
サイト機能:300msデバウンス付きのゲームタイトル検索、カテゴリ(Epic/Steam、無料/割引、Game Pass新規)によるフィルタリング、価格・割引率・タイトルによる並べ替え、価格範囲フィルター、localStorageに保存されるウィッシュリスト、過去30日間の通知履歴、ダーク/ライトテーマ切り替え、バイリンガルインターフェース(ウクライナ語・英語)、PWAモード(スマホ/PCインストール、Service Workerによるオフラインキャッシュ)、SEOマークアップ(Open Graph、Twitter Cards、JSON-LD、sitemap.xml)。
仕組み:GitHub Actionsのスケジュール機能(毎時)により、Steam、Epic Games、Xbox Game PassのAPIからデータを収集するスクリプトが実行されます。その後、リポジトリ内のdeals.jsonが更新され、sitemap.xmlが生成され、Reactアプリがビルド・デプロイされます。また、新しい割引や無料配布、追加情報はBot APIを通じてTelegramチャンネルに送信されます。
技術スタック:React 19、TypeScript、Vite、React Routerを使用。スタイルはグラスモーフィズム効果を用いたバニラCSS、ローカライズはLocaleContext(uk.ts, en.ts)によるカスタム実装、データ収集はNode.jsとtsx、PWAはvite-plugin-pwaとService Worker、ホスティングはGitHub Pages、自動化はGitHub Actionsのcronを使用しています。
ローカル起動:Node.js 20以上とnpmが必要です。Ubuntu/Debian(scripts/install.sh)およびWindows(scripts/install.ps1)用の自動インストールスクリプトが用意されています。手動手順はgit clone、npm installの後、npm run fetch(データ取得)、npm run dev(ローカルサイト)、npm run build(本番ビルド)、npm run lint、npm testを実行します。アプリは静的であるため、dist/ディレクトリをnginxやCaddyなどのWebサーバーに配置可能です。
GitHub Actionsでの通知を有効にするには、SettingsのSecrets and variablesでTELEGRAM_BOT_TOKENとTELEGRAM_CHAT_IDを設定する必要があります。READMEには、Botを管理者として追加し、チャンネルにメッセージを送信してgetUpdatesメソッドからChat IDを取得する方法が記載されています。
リポジトリ構造には、ワークフロー(.github/workflows/scheduler.yml)、データ(public/data/deals.json)、スクリプト(fetch-deals.ts, generate-sitemap.ts)、コンポーネント、コンテキスト(LocaleContext, WishlistContext)、フック、ローカライズ辞書、ルーター(App.tsx)、DataContext、Service Worker(src/sw.ts)、Vite設定が含まれます。また、無料ゲームや割引、Game Passの更新情報を配信する公開Telegramチャンネルも運用されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.