From 7f516526fb5f5b60c1782db5c8c3e29f05caafa7 Mon Sep 17 00:00:00 2001 From: Thomas Hallock Date: Mon, 20 Oct 2025 17:08:40 -0500 Subject: [PATCH] refactor: make homepage game cards dynamic from game registry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously game cards were hardcoded. Now they automatically populate from getAvailableGames() in the game registry. This means: - Adding a new game to the registry automatically shows it on homepage - Game metadata (icon, title, description, gradient, chips) comes from game manifests - No manual homepage updates needed when games are added Changes: - Import getAvailableGames from game registry - Replace hardcoded GameCard components with .map() over available games - Format maxPlayers into player count string (e.g., "1-4 players") 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- apps/web/src/app/page.tsx | 55 ++++++++++++++------------------------- 1 file changed, 19 insertions(+), 36 deletions(-) diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 311df4c7..0066e4c1 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -8,6 +8,7 @@ import { HomeHeroProvider } from '@/contexts/HomeHeroContext' import { PageWithNav } from '@/components/PageWithNav' import { TutorialPlayer } from '@/components/tutorial/TutorialPlayer' import { getTutorialForEditor } from '@/utils/tutorialConverter' +import { getAvailableGames } from '@/lib/arcade/game-registry' import { css } from '../../styled-system/css' import { container, grid, hstack, stack } from '../../styled-system/patterns' import { token } from '../../styled-system/tokens' @@ -298,42 +299,24 @@ export default function HomePage() {
- - - - + {getAvailableGames().map((game) => { + const playersText = + game.manifest.maxPlayers === 1 + ? 'Solo challenge' + : `1-${game.manifest.maxPlayers} players` + return ( + + ) + })}