At the beginning the user can filter games by selecting popular games that they like so it tries to find similar ones, or they can just keep scrolling to view all games.
Also worth noting that after scrolling a few games another sections show up that allows the user to filter by tags instead, where the user can select multiple ones, or they can ignore it and keep scrolling to continue viewing games based on existing filters.
Initially I tried scrapping all games from Steam but they throttle such attempts after a few hundreds requests so I kept looking for alternatives and find a really nice dataset on Kaggle so I used that instead, you can find it by `fronkongames/steam-games-dataset`
The site uses vanilla JavaScript, the backend uses PHP for templates and Python for all the scrapping and scripting.
Any feedback or questions are welcomed.
Some more technical insights (AI generated):
- Hybrid filtering pipeline combines JSON-backed datasets with session-level exclusion to keep recommendations fresh per visitor.
- Uses a single reusable <video> element managed by dash.js/Hls.js to minimize memory churn while previewing trailers across many cards.
- Implements dynamic batching plus scroll-throttled infinite loading with server-side session tracking to avoid repeating games between requests.
- Shares filter state between PHP and front-end sliders, including custom review/price ranges that trigger server rebuilds via abortable fetch calls.
- Normalizes scraped Steam data with Python scripts that add derived metadata (tags, similar games, app IDs) and aggressively de-duplicate entries before publishing.
- Generates video compilations by clipping MPD streams via ffmpeg, overlaying game titles, and auto-marking processed entries to prevent reuse.
- Adaptive UX toggles between tag and “similar games” discovery modes, automatically disabling tag filters when curated picks are active.