REGISTER / GAMEDECK
Live System
GameDeck
- Next.js and Postgres
- Steam and CSV import
- Public profiles
GameDeck is a public gaming identity and library app. You import what you already own, log what you actually played, and a shareable profile builds itself out of that record instead of out of a bio. It is live, it is mine, and the source is closed.
OPEN GAMEDECK.GGRECORD / BUILD
- Framework
- Next.js 16 on the App Router, React 19, Tailwind v4.
- Data
- Serverless Postgres through Drizzle. A separate Redis instance carries rate limiting and cache.
- Auth
- Email and password, plus Google sign-in, through a self-hosted auth library backed by the same Postgres.
- Steam import
- Steam OpenID sign-in links the account, then the Steam Web API owned-games call pulls the library. A scheduled job resyncs it once a day.
- File import
- CSV in and CSV out, capped at 4 MB, 10,000 rows per section and 600 distinct catalogue ids per file. A signed-out visitor can check a file before making an account.
- Public surface
- Profiles, lists, browse hubs and per-game pages render for signed-out visitors. Library, settings and notifications require a session.
- Source
- Private repository, no licence granted.
01 / 03
What it is for
A games library is already scattered across storefronts, consoles and memory. GameDeck's answer is not another storefront. You bring the library in once, by linking Steam or dropping a CSV or just adding things by hand, and from then on the app is about what you played and what you thought of it.
The output is a public page. Profiles, lists and game pages render for people who are not signed in, so a deck is something you can send somebody rather than something you have to invite them into.
02 / 03
How it is built
One Next.js application on the App Router, hosted rather than self-hosted, talking to serverless Postgres through Drizzle. Sessions and social sign-in run through a self-hosted auth library against the same database, so accounts are not held by a third party. Game metadata comes from a third-party games catalogue and is credited on the product's own data-sources page.
The two import paths are deliberately different in kind. Steam is an account link: you sign in through Steam's OpenID endpoint, the app reads your owned games, and a scheduled job repeats that once a day. CSV is a file: the format is documented and versioned, export gives you the same shape back, and a signed-out visitor can run a file through a preview that reads it on their own device.
03 / 03
What it does not do
- No usage figures
- There is no user count on this page. The one public counter the product shows is computed at request time and counts games logged on public profiles, not people, so no figure is committed anywhere to quote.
- Not open source
- The repository is private and grants no licence. You can use the product; you cannot read it.
- Steam is optional, not central
- Linking Steam is opt-in and covers one platform. Everything else gets added by CSV or by hand, which is most of what a real library looks like.
- Export is a library, not an account
- The CSV carries your library, reviews, lists and favourites. It does not carry account details, sign-in information, profile settings, follows, comments, notifications, activity history, or the order of your top four.
- Import adds, it never overwrites
- An import fills in games you are missing and leaves existing entries alone. Rows that cannot be matched to the catalogue are reported as skipped rather than guessed at.
- Completion times are partly archived
- Live retrieval from the original completion-time source is retired. Newer records take their estimates from the games catalogue; an older record can still show an archived value until it is refreshed. The product says so on its own data-sources page.