diff --git a/astro.config.mjs b/astro.config.mjs
index c336deb..528cb23 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -49,7 +49,6 @@ export default defineConfig({
adapter: node({ mode: 'standalone' }),
redirects: {
'/en/[...params]': '/[...params]',
- '/platform/[id]': { status: 307, destination: '/maintenance' },
'/profile': { status: 307, destination: '/maintenance' },
'/profile/[username]': { status: 307, destination: '/maintenance' },
'/series/[slug]': { status: 307, destination: '/maintenance' },
diff --git a/src/components/letterList/PlatformGameList.astro b/src/components/letterList/PlatformGameList.astro
new file mode 100644
index 0000000..593a433
--- /dev/null
+++ b/src/components/letterList/PlatformGameList.astro
@@ -0,0 +1,23 @@
+---
+import { AlbumStatus } from '@prisma/client'
+import prismaClient from 'utils/prisma-client'
+
+interface Props {
+ letter: string
+ platformId: number
+}
+
+const { letter, platformId } = Astro.props
+const albums = await prismaClient.game.findMany({
+ where: { name: { startsWith: letter }, platforms: { some: { platformId } } },
+ select: { slug: true, name: true }
+})
+---
+
+{
+ albums.map((a) => (
+
+ {a.name}
+
+ ))
+}
diff --git a/src/pages/platform/[id].astro b/src/pages/platform/[id].astro
new file mode 100644
index 0000000..e7ccdf7
--- /dev/null
+++ b/src/pages/platform/[id].astro
@@ -0,0 +1,45 @@
+---
+import prismaClient from 'utils/prisma-client'
+
+import LetterList from 'layouts/LetterList.astro'
+import PlatformGameList from 'components/letterList/PlatformGameList.astro'
+import { AlbumStatus } from '@prisma/client'
+
+const { id } = Astro.params
+
+if (!id) return Astro.redirect('/404')
+const platformId = parseInt(id)
+if (!platformId) return Astro.redirect('/404')
+
+const platform = await prismaClient.platform.findUnique({ where: { id: platformId }, select: { name: true } })
+if (!platform) return Astro.redirect('/404')
+
+const letters: { letter: string; count: BigInt }[] = await prismaClient.$queryRaw`
+ SELECT DISTINCT UPPER(LEFT(game.name, 1)) AS letter, COUNT(*) AS count
+ FROM game, platform, Game_Platform
+ WHERE game.slug = Game_Platform.gameSlug
+ AND platform.id = Game_Platform.platformId
+ AND platform.id = ${platformId}
+ GROUP BY letter
+ ORDER BY letter;
+`
+---
+
+
+ {
+ letters.map((l) => (
+
+
{l.letter}
+
+
+
+ {Array.from({ length: Number(l.count) }).map(() => (
+
+ ))}
+
+
+
+
+ ))
+ }
+